App Engine Cloud Computing платформа от Google Петр Чардин, Михаил Дайчик Апрель 2009
Cloud Computing Cloud computing – технологический тренд, суть которого состоит в переносе программного обеспечения для личного и корпоративного пользования в интернет. Он объединяет такие концепции как software as a service, infrastructure as a service и platform as a service.
Cloud Computing
Мотивация Создавать масштабируемые веб-приложения тяжело. Особенно для небольших групп разработчиков. - Типичный LAMP-стек требует нетривиальной конфигурации и последующего администрирования. - LAMP-приложения требуют дополнительной инфраструктуры для решения таких проблем как балансировка, репликация данных и мониторинг. - Такие приложения тяжело масштабировать. Нередко приходится менять архитектуру приложения с ростом нагрузки. Все эти проблемы решаются снова и снова.
Мотивация У Google тоже имеется богатый опыт создания масштабируемых приложений. Наши приложения используют миллионы пользователей по всему миру. Мы потратили много сил для создания удобной и надежной инфраструктуры для разработки веб-приложений. Google App Engine это платформа которая позволяет использовать нашу инфраструктуру для создания и хостинга своих приложений.
App Engine Cloud Computing платформа от Google Платформа отвечает за автоматическую масштабируемость и балансировку нагрузки Платформа предоставляет динамический веб-сервер с поддержкой многих распространенных веб-технологий Хранилище данных на основе Big Table Простая интеграция с аккаунтами Google через API.
Как работает App Engine Node 1 Node 2 Node 3 Node N Google Cluster1 Node 1 Node 2 Node 3 Node N Google Cluster N Node 1 Node 2 Node 3 Node N Datastore Cluster1 Node 1 Node 2 Node 3 Node N Datastore Cluster M Python web server Persistent Layer HTTP Request HTTP Response
Разработка приложений с помощью App Engine App Engine SDK Веб-сервер o dev_appserver.py dev_appserver.py Утилита для загрузки приложений o appcfg.py appcfg.py Локальная реальзация DataStore App Engine APIs
Разработка приложений с помощью AppEngine
Конфигурация приложения - app.yaml application: helloworld version: 1 runtime: python api_version: 1 handlers: - url: /.* script: helloworld.py yaml (yet another markup language) - Deployment Descriptor for the Application Maps URLs to the handlers
URLPython Handlers /*.htmlHtmlHandler /*.formFormHandler app.yaml (deployment descriptor) WebApp Framework (Googles Web framework) Django Framework (Third Party) WebOb Framework (Third Party) Mail APIs Users APIs MemCache API Data Store APIs Python Runtime Runtime-компоненты приложения, развернутого на App Engine
Request Handler - helloworld.py
App Engine DataStore Мощное не реляционное распределенное хранилище данных Поддержка SQL-образного языка GQL DataStore API
Объекты и их свойства В хранилище данных хранятся сущности (Entities) У каждой сущности есть набор свойств, заданного типа (например User, IM, Link, Rating, GeoPt, PhoneNumber и тд) Сущности имеют Возможность ссылаться на другие сущности (many to one relationships) Entity Properties has
Ключи У каждой сущности (Entity) есть ключ, являющийся ее уникальным идентификатором Ключ состоит из трех частей (1) типа сущности, (2) пути определяющего его положение относительно предка и (3) уникального имя или числового идентификатора.
Группы сущностей Root Entity Группы сущностей хрянятся в одном узле распределенного хранилища Группа сущностей определяет рамки одной транзакции
DataStore - Runtime компоненты
App Engine DataStore Entity from db.Model Persisting An Entity
GQL
Обработка запроса к App Engine
Тестирование и развертывание сервиса на App Engine Локальное тестирование o dev_appserver.py helloworld/ Развертывание o appcfg.py update helloworld/ Приложение «в облаке» o
Некоторые API для AppEngine
Обеспечение безопасности: Sandbox
Полезные ресурсы Документация и SDK: Список рассылки: