Я думаю, что меня раздражает в этом вопросе то, что вы сформулировали его и загрузили его «фактами», пытаясь собрать окончательное «нет».
Правда заключается в том, что вы можете разработать приложение App Engine, которое будет воспроизводить функции Facebook, Twitter или Tumblr. И, если приложение хорошо написано, оно будет масштабироваться для поддержки сотен миллионов пользователей. Основная причина, по которой вы не захотите (что для вас не имеет значения) - это стоимость запуска службы такого размера в App Engine.
Кроме того, я не вижу, как любое из перечисленных вами ограничений помешает вам разработать такое приложение.
HTTP-запрос / ответ
- Максимальный размер запроса: 10 МБ - неправильно, увеличено до 32 МБ.
- Максимальный размер ответа: 10 МБ - неправильно, увеличено до 32 МБ.
- если вы разрабатываете социальное приложение, которое часто требует доставки страниц размером более 10 МБ, вы, вероятно, делаете это неправильно. Кроме того, если вам нужно доставить контент размером более 32 МБ, вы можете использовать хранилище больших двоичных файлов для файлов объемом до 2 ГБ.
- Вы не можете получить доступ к файловой системе. (забыть о сохранении закачек в файловую систему) - неправильно. Вы можете читать из локальной файловой системы и загружать и читать / записывать файлы в blobstore.
- Фейсбук, твиттер или Tumblr не могут просто загружать пользователей и копировать их в папку. Не ошибка.
- Все запросы должны ответить в течение 10 минут, иначе GAE выдаст исключение DeadlineExceededException - неправильно. Это на самом деле 30 секунд.
- Если вам требуется более 30 секунд для доставки результатов по запросу пользователя, вы, вероятно, делаете это неправильно.
- Каждое задание cron должно быть выполнено в течение 30 секунд - неправильно, это 10 минут.
- Если вы не можете разделить длинную задачу на 10-минутные порции, A: вы, вероятно, делаете это неправильно, и B: теперь вы можете переместить эту задачу в экземпляр Backend, у которого нет ограничений по времени для запросов.
Задания Cron не могут использовать уменьшение карты - никогда не использовалось уменьшение карты, но я думаю, что это требует цитирования.
Каждый GET или POST на другой сайт прерывается через 5 секунд. Вы можете настроить его на ожидание до 10 секунд макс. (промежуточные серверы были бы необходимы для работы с Twitter и Facebook много раз) - правда.
- Если запрос внешнего интерфейса API на пользовательский интерфейс занимает больше 10 секунд, возможно, в любом случае рекомендуется попросить пользователя повторить попытку. Если это не пользовательский запрос, вы можете автоматически повторить задачу, пока API не ответит.
- Клиент не может подключиться к GAE через FTP (только HTTP и HTTPS). - Правда
- Почему это проблема? Как вы думаете, какая-нибудь крупная компания внедряет изменения через FTP?
- Нет https для пользовательских доменов. Только для доменов your-app-id.appspot.com. - Правда.
- Это на дорожной карте, хотя.
- Если вы получаете приток пользователей, вы получаете сообщение об ошибке «over quota» - Half true.
- Если вы правильно составите бюджет своего приложения, вы никогда не увидите ошибку превышения квоты. Сайт Royal Wedding размещался на App Engine и получал 32 000 запросов в секунду. Нет ошибок по квоте. Кроме того, когда-либо видели сбойный кит в Твиттере или ошибку переполнения на Tumblr? Это по сути их ошибка по квоте.
База данных
- Поведение базы данных не является таким же в локальной разработке, как на реальных серверах. - Ложь
- Если вы имеете в виду, что запуск хранилища данных на вашем ноутбуке выполняется медленнее, чем запуск его в кластере App Engine, тогда значение true, в противном случае - совсем не так.
- GQL. Ничего больше. - Ложь
- Большинство разработчиков используют фильтры БД для запроса хранилища данных. Кроме того, вы могли бы также сказать, что MySQL позволяет «SQL. Ничего другого».
- Ни один запрос не может получить более 1000 записей (отстой, если вы хотите, чтобы у вашего клиента была кнопка «один щелчок - перейти в автономный режим») - False.
- Лимит в 1000 записей был снят очень давно. Кроме того, покажите мне любую пользовательскую страницу в Facebook, Twitter или Tumblr, для отображения которой требуется более 1000 записей.
- Если вам нужен линейный доступ к огромному количеству записей для выполнения операции, вам не повезло (системы Google сильно сгруппированы)
- Я даже не уверен, что ты здесь делаешь. Большинство людей считают скорость огромного кластера Google огромным преимуществом системы.
Максимальный размер значения Memcache составляет 10 МБ. - На самом деле это 1 МБ на запись в memcache, как и в любой другой реализации memcache.
Не могу сделать простой текстовый поиск - правда.
- Это особенность, которая на палубе. Большинство крупных сайтов не имеют собственной индексации текстового поиска.
- Вы не можете присоединиться к 2 столам. - Правда.
- Разработчики App Engine должны адаптировать свое мышление от одного массивного SQL-запроса с несколькими объединениями к нескольким более мелким индивидуальным запросам или денормализовать данные так, чтобы объединения не были нужны.
- Медленно (Вы должны прочитать о том, как разделить таблицы, используя наследование, чтобы вы могли искать в таблице, получить ключ и затем получить его родителя, чтобы избежать производительности десериализации) - ???
- требуется перевод / цитирование.
- Исключение во время выполнения «слишком много индексов» - True
- Существует ограничение на количество индексов в одном приложении. Я только видел академические исследовательские приложения, поражающие это все же.
- У объекта может быть не более 5000 значений свойств в индексе - True
- Таким образом, если у кого-то более 5000 друзей, им понадобятся два объекта в группе друзей.
- Имена ключей формы
__*__
(начало и конец с двумя подчеркиваниями) зарезервированы и не должны использоваться приложением. - Правда
- Ну и что?
- Имена ключей ограничены 500 байтами (я думаю, в кодировке UTF-8) - True
- Опять так и что? Имена ключей предназначены не для хранения новелл, а для уникальной идентификации сущности.
язык
- Python или Java или Go (что-нибудь еще должно быть переведено на эти языки) - наполовину верно
- На самом деле вы также можете запустить любой язык, который работает на JVM, включая PHP и JRuby. Не знаю, почему это проблема, хотя Python и Java - два мощных языка с множеством доступных инструментов, учебных пособий и опытных программистов.
Проблемы с сервером
- Отсутствие статического IP-адреса (проблемы регулирования и квотирования при вызове сторонних API) - половина истинного
- Большинство сторонних API знают о App Engine и / или имеют отношения с Google. Несколько раз Twitter случайно блокировал App Engine, и он исправлялся в течение нескольких часов.
- Каждое приложение ограничено 3000 файлов - половина правда
- Если вам действительно нужно более 3000 кодовых файлов для вашего веб-приложения, вы можете использовать zip-импорт (также вы можете ошибаться).
- Нет контроля над ОС или оборудованием, на котором работает веб-приложение - правда
- App Engine - это платформа как услуга . Люди не платят за то, чтобы не беспокоиться об обслуживании ОС или оборудования. Это ключевое преимущество App Engine, а не ограничение.