GAE framework — свободный фреймворк, созданный для разработки и хостинга сайтов и web-приложений. Изначально проект был создан как аналог Django, который полностью совместим с Google App Engine и написан на языке Python. Это PaaS-платформа (Platform as a Service) от Google Cloud.
Google запустил GAE в 2008 году, когда облачные вычисления были ещё в стадии раннего детства. Amazon был впереди, когда Google начал сдавать в аренду свою IT-инфраструктуру в 2006 году. Но с GAE Google очень рано предложил сложную платформу как услугу (PaaS), которая соответствовала Amazon со своим сервисом Elastic Beanstalk в 2011.
Приложения, разворачиваемые на базе платформы App Engine, должны быть написаны на Python, Java, Node.JS, .NET framework, Ruby, Go либо PHP (последние два до сих пор имеют статус «экспериментальных» инструментов, хотя сам Google неоднократно заявлял о намерениях расширить список поддерживаемых языков программирования и сред, а саму службу сделать не зависящей от какого-либо конкретного языка программирования).
Изначально GAE framework был задуман как сборник готовых приложений, которыми можно легко воспользоваться в любом проекте. Пользователи могут делиться своими приложениями с другими пользователями, что, по задумке, существенно ускоряет и облегчает процесс разработки завершенного сайта из кусочков готовых решений.
Возможности
Некоторые возможности GAE framework:
- встроенный интерфейс администратора, с возможностью перевода на разные языки
- диспетчер URL на основе YAML
- расширяемая система шаблонов с тегами и наследованием
- система кеширования
- интернационализация пользовательского интерфейса
- подключаемая архитектура приложений, которые можно устанавливать на любые GAE framework-сайты
- авторизация и аутентификация, подключение внешних модулей аутентификации: LDAP, OpenID и проч.
- библиотека для работы с формами (наследование, построение форм по существующей модели БД)
GAE framework проектировался для работы под управлением Google App Engine, поэтому установка и настройка дополнительных компонентов не требуется. В качестве хранилища данных используется Google App Engine Datastore.
В отличие от многих обычных размещений приложений на виртуальных машинах, таких как, например Amazon EC2, платформа App Engine тесно интегрирована с приложениями и накладывает на разработчиков некоторые ограничения. Среды параллельной обработки позволяют применять многое из программного обеспечения, созданного для Unix – подобных систем, в то время как App Engine требует от разработчика использовать один из языков программирования: Python, Java, Go или PHP, а для хранения информации применять хранилище — подмножество проприетарной базы данных BigTable, которая является ноу-хау компании Google.
Хотя многие из разработанных на языке Python приложений возможно запустить без изменений для App Engine (исключая те, которые требуют доступа к низкоуровневым функциям системы или доступа к сети), использование хранилища потребует значительных сил от разработчиков на адаптацию приложений. В отличие от популярных СУБД MySQL и PostgreSQL, хранилище не является реляционной базой данных, не требует схемы и нормализации данных. Архитектура платформы поддерживает масштабирование без изменения кода. Реализация поддержки реляционной логики привела бы к значительному замедлению работы.