[ Russian ] [ English ]

Современные методы разработки веб-приложений, платформа Google AppEngine

Михаил Дайчик,
Менеджер технических программ Google,
daichik@google.com

Современные веб-приложения ушли довольно далеко от простых статических страниц и накладывают серьезные ограничения на инфраструктуру, требующуюся для их работы. Вне зависимости от их направленности, большинство веб-приложений сейчас интерактивны и предлагают высокую степень кастомизации своим пользователям. Это в первую очередь требует высокой скорости приложения и высокой эффективности хранения и обработки пользовательских данных.

Размеры паутины тоже накладывают серьезные ограничения на веб-приложения - они должны легко масштабироваться и оставаться надежными под любой нагрузкой. Чрезвычайно редко сейчас можно встретить приложение, имеющее хоть сколько-нибудь заметную коммерческую ценность и меньше ста тысяч лояльных (зарегистрированных) пользователей. Такие масштабы требуют высокоскоростных хранилищ данных, гарантирующих высокую скорость работы.

Все описанные проблемы были решены и решены многими компаниями практически одновременно. Наиболее удачные промышленные решения сейчас обретают жизнь в виде общедоступных платформ и технологий. Возникает множество решений, облегчающих работу программиста, решившего создать новое веб-приложение. Так, одним из традиционных решений сейчас является LAMP (Linux Apache MySQL PHP/Python) стек, дополненный одной из распространенных платформ, например WSGI или Zope, и набором шаблонов, например ClearSilver или Django.

Тем не менее, такое решение оставляет открытыми проблемы масштабирования, распределения нагрузки и надежности. Богатый опыт решения подобных проблем имеет Google, предлагающий решение, доступное разработчикам по всему миру, - Google AppEngine, включающую как платформу для приложений, так и "облачную" инфраструктуру для их исполнения.

В данном докладе дается обзор наиболее распространенных платформ, рассматривается пример LAMP-приложения и пример приложения на AppEngine. Также будут рассмотрены основные облачные платформы с типичными примерами их применения.

Слайды к докладу в формате PPT: daichik20100527.ppt

Литература:

  1. Google App Engine Campfire One Kevin Gibbs, App Engine Tech Lead April 2008 http://code.google.com/appengine/articles/cf1-text.html
  2. Jason Cooper. How Entities and Indexes are Stored. December 2009 http://code.google.com/appengine/articles/storage_breakdown.html
  3. Nick Johnson. Handling Datastore Errors. December 2009 http://code.google.com/appengine/articles/handling_datastore_errors.html
  4. Jason Cooper. Minimizing work. June 2009 http://code.google.com/appengine/articles/scaling/minimize.html
  5. Nick Johnson. Background work with the deferred library. October 15, 2009 http://code.google.com/appengine/articles/deferred.html
  6. Jason Cooper. Avoiding datastore contention. June 2009 http://code.google.com/appengine/articles/scaling/contention.html
  7. Jeff Scudder. Effective memcache. June 2009 http://code.google.com/appengine/articles/scaling/memcache.html
  8. Joe Gregorio. Paging through large datasets. December 2008 http://code.google.com/appengine/articles/paging.html
  9. Joe Gregorio. Sharding counters. October 2008, updated October 2009 http://code.google.com/appengine/articles/sharding_counters.html
  10. Ryan Barrett. How Index Building Works. November 24, 2008 http://code.google.com/appengine/articles/index_building.html
  11. Ryan Barrett. Running Django on Google App Engine. April 2008 http://code.google.com/appengine/articles/django.html
Supported by Synthesis Group