Современные методы разработки веб-приложений, платформа Google AppEngine
Михаил Дайчик,
Менеджер технических программ Google,
daichik@google.com
Современные веб-приложения ушли довольно далеко от простых статических страниц и накладывают серьезные ограничения на инфраструктуру, требующуюся для их работы. Вне зависимости от их направленности, большинство веб-приложений сейчас интерактивны и предлагают высокую степень кастомизации своим пользователям. Это в первую очередь требует высокой скорости приложения и высокой эффективности хранения и обработки пользовательских данных.
Размеры паутины тоже накладывают серьезные ограничения на веб-приложения - они должны легко масштабироваться и оставаться надежными под любой нагрузкой. Чрезвычайно редко сейчас можно встретить приложение, имеющее хоть сколько-нибудь заметную коммерческую ценность и меньше ста тысяч лояльных (зарегистрированных) пользователей. Такие масштабы требуют высокоскоростных хранилищ данных, гарантирующих высокую скорость работы.
Все описанные проблемы были решены и решены многими компаниями практически одновременно. Наиболее удачные промышленные решения сейчас обретают жизнь в виде общедоступных платформ и технологий. Возникает множество решений, облегчающих работу программиста, решившего создать новое веб-приложение. Так, одним из традиционных решений сейчас является LAMP (Linux Apache MySQL PHP/Python) стек, дополненный одной из распространенных платформ, например WSGI или Zope, и набором шаблонов, например ClearSilver или Django.
Тем не менее, такое решение оставляет открытыми проблемы масштабирования, распределения нагрузки и надежности. Богатый опыт решения подобных проблем имеет Google, предлагающий решение, доступное разработчикам по всему миру, - Google AppEngine, включающую как платформу для приложений, так и "облачную" инфраструктуру для их исполнения.
В данном докладе дается обзор наиболее распространенных платформ, рассматривается пример LAMP-приложения и пример приложения на AppEngine. Также будут рассмотрены основные облачные платформы с типичными примерами их применения.
Слайды к докладу в формате PPT: daichik20100527.ppt
Литература:
- Google App Engine Campfire One Kevin Gibbs, App Engine Tech Lead April 2008
http://code.google.com/appengine/articles/cf1-text.html
- Jason Cooper. How Entities and Indexes are Stored. December 2009
http://code.google.com/appengine/articles/storage_breakdown.html
- Nick Johnson. Handling Datastore Errors. December 2009
http://code.google.com/appengine/articles/handling_datastore_errors.html
- Jason Cooper. Minimizing work. June 2009
http://code.google.com/appengine/articles/scaling/minimize.html
- Nick Johnson. Background work with the deferred library. October 15, 2009
http://code.google.com/appengine/articles/deferred.html
- Jason Cooper. Avoiding datastore contention. June 2009
http://code.google.com/appengine/articles/scaling/contention.html
- Jeff Scudder. Effective memcache. June 2009
http://code.google.com/appengine/articles/scaling/memcache.html
- Joe Gregorio. Paging through large datasets. December 2008
http://code.google.com/appengine/articles/paging.html
- Joe Gregorio. Sharding counters. October 2008, updated October 2009
http://code.google.com/appengine/articles/sharding_counters.html
- Ryan Barrett. How Index Building Works. November 24, 2008
http://code.google.com/appengine/articles/index_building.html
- Ryan Barrett. Running Django on Google App Engine. April 2008
http://code.google.com/appengine/articles/django.html
|