Анализ альтернативных архитектур управления транзакциями в облачной среде
В отличие от Amazon, компания Google следует только стратегии платформа как сервис (platform as a service, PaaS). Google AppEngine – это служба, позволяющая развертывать приложения целиком, не обеспечивая при этом контроля над компьютерными ресурсами. Google AppEngine автоматически увеличивает и уменьшает объем ресурсов, потребляемых приложением, в зависимости от рабочей нагрузки. В качестве языков программирования поддерживаются Python и Java со встраиваемым SQL для обеспечения доступа к базам данных. Мы использовали Java-версию Google AppEngine с Google SDK 1.2.4 и отображение данных на основе JPA (Java Persistence API). К сожалению, в Google поддерживается только упрощенный диалект SQL, называемый GQL. Поскольку возможностей GQL нам не хватало, мы реализовали отсутствующие функциональные возможности на языке Java в составе библиотеки (точно так же, как для вариантов с AWS S3 и AWS SimpleDB). Например, в GQL не поддерживаются группировки, агрегатные функции, соединения и предикаты LIKE. Как и Amazon в случае SimpleDB, Google не публикует какие-либо подробности о своей реализации GQL и распределенной системы баз данных. Согласно [13], в Google AppEngine применяется комбинированная архитектура с разделением и репликацией (рис. 2 и 3).
Одной из приятных особенностей Google AppEngine является то, что в этой службе поддерживается MemCache. Поэтому в Google AppEngine обеспечивается удобный интерфейс, позволяющий программистам приложений помещать объекты в MemCache и выбирать их оттуда. При использовании MemCache Google AppEngine полностью следует архитектуре, изображенной на рис. 5. Мы экспериментировали с обоими вариантами (кэширующим и некэширующим).