| Облачная обработка данных |
|
Только-только утихла шумиха вокруг виртуализации, как вдруг возник шум об «облачной» обработке данных (cloud computing). Термин «облачная обработка данных» обозначает технологию выделения вычислительных ресурсов по требованию, в зависимости от величины рабочей нагрузки. В сфере развития технологии «облачной» обработки данных присутствуют два крупных игрока - Amazon и Google. Буквально за несколько недель до передачи этой книги издателю компания Google взорвала настоящую бомбу. Компания предложила интереснейшую «фишку», которая пока поддерживается только языком Python. В некотором смысле такое предпочтение, отданное языку Python, напоминает нам рекламу American Express. В этом разделе мы пройдемся по некоторым имеющимся API, с которыми вам придется столкнуться при работе с Amazon и с Google App Engine. В заключение мы поговорим о том, как это может касаться системных администраторов. Веб - службы Amazon на основе boto Отличную возможность для работы с инфраструктурой «облачной» обработки данных Amazon предоставляет интерфейс boto. Посредством boto обеспечивается доступ к таким службам, как Simple Storage Service, Simple Queue Service, Elastic Compute Cloud, Mechanical Turk, SimpleDB. Это совершенно новый и очень мощный API, поэтому мы рекомендуем заглянуть на домашнюю страницу проекта http://code. google.com/p/botо/. Здесь вы сможете почерпнуть самую свежую информацию, что лучше, чем приведение нами сведений, доступных на данный момент. Ниже приводится короткий пример взаимодействия со службой SimpleDB. Соединение со службой:
Создание нового домена: Добавление нового элемента: Примерно так выглядит API в настоящее время, но, чтобы получить полное представление, вам необходимо взглянуть на примеры в репо-зитарии svn: http://code.google.eom/p/boto/source/ьrowse. Заметим, что изучение примеров - это один из лучших способов понять, как работает новая библиотека. Google App Engine Служба Google App Engine выпущена в состоянии бета-версии и со дня объявления была широко разрекламирована. Она позволяет свободно запускать приложения в инфраструктуре Google. Приложения Арр Engine имеют API пока только для Python, но со временем такое положение дел может измениться. Одна из интереснейших особенностей App Engine заключается в том, что она интегрирована с другими службами Google. Все более возможным становится перемещение большей части из того, что находилось у вас в центре обработки данных, в другие центры, поэтому это все более затрагивает системных администраторов. Умение взаимодействовать со службой Google App Engine может оказаться качественно новым навыком для системного администратора, поэтому есть смысл заняться ее исследованием. Мы побеседовали с некоторыми специалистами из команды разработчиков Арр Engine и спросили их о том, что в первую очередь может пригодиться системным администраторам. Они выделили следующие задачи: 1. Выгрузка больших объемов данных: http://code.google.com/ap- Системным администраторам часто приходится перемещать огромные объемы данных, и этот инструмент позволит решать эти проблемы в контексте приложений из Google App Engine. 2.
Регистрация событий: http://code.google.com/appengine/articles/log- 3.
Интерфейс к
электронной почте: функция send_mail_to_admin(): С точки зрения системного администратора владение этим интерфейсом может оказаться полезным для организации мониторинга. В случае появления важных исключений или выполнения операций вы могли бы автоматически отправлять администраторам приложений сообщения по электронной почте. 4. Выполнение периодических задач с помощью
планировщика зада Это не является непосредственной частью Google App Engine, но вы могли бы использовать планировщик заданий cron на своих серверах для передачи запросов своим приложениям через определенные интервалы времени. Например, можно было бы оформить задание для планировщика, согласно которому каждый час будет посылаться запрос по адресу http://yourapp.com/emailsummary, в результате которого системному администратору будет высылаться сообщение электронной почты с описанием важных событий, произошедших в течение последнего часа. 5. Управление версиями: http://code.google.com/appengine/docs/confi- Одно из обязательных полей, заполняемых для вашего приложения, - идентификатор версии. Каждый раз, когда выгружается приложение с тем же идентификатором версии, оно замещается новым программным кодом. Изменяя идентификатор версии, вы получаете возможность иметь несколько версий приложения и с помощью консоли администратора выбирать, какая из версий должна быть включена в работу. Создание примера приложения для Google App Engine Прежде чем приступить к созданию приложения для Google App Engine, вам потребуется загрузить пакет SDK для Google App Engine: http://code.google.com/appengine/downloads.html. Вы также можете ознакомиться с замечательным учебным руководством по Google App Engine: http://code.google.com/appengine/docs/gettingstarted/. В этом разделе мы предлагаем обратное учебное руководство для Google App Engine, так как замечательное учебное руководство уже существует. Если вы перейдете по адресу http://greedycoin.appspot.com/, то сможете опробовать работающую версию приложения, которое описывается ниже, а также познакомиться с последней версией исходных текстов. Приложение принимает сумму, введенную пользователем, сохраняет ее в базе данных и затем возвращает сумму в виде списка монет определенного достоинства. Приложением также поддерживается возможность регистрации посредством API аутентификации и возможность получения информации о последних запросах. Исходный текст приложения приводится в примере 8.13. Пример 8.13. Веб-приложение Greedy Coin
Так как это обратное учебное руководство, начнем с рассмотрения версии приложения, работающей по адресу http://greedycoin.appspot.com/, или с вашей версии по адресу http://localhost:8080/. На главной странице приложения на фоне цвета тыквы находятся две прямоугольные области: область слева представляет собой форму, где вы можете ввести денежную сумму, а область справа содержит элементы навигации. Эти приятные (или уродливые) цвета и схема размещения являются комбинацией задействованного механизма шаблонов Django и CSS. Шаблоны Django можно найти в главном каталоге, а используемые CSS - в таблицах стилей. Механизм оформления не имеет никакого отношения к Google App Engine, поэтому за дополнительной информацией о механизме шаблонов Django мы просто отсылаем вас к руководству: http://www.djangoproject.com/documentation/templates/. Теперь, когда мы познакомились с внешним видом приложения, давайте перейдем к изучению некоторых особенностей Google App Engine. Обратите внимание на ссылку «Login» в правой области: она обеспечивает возможность использовать прикладной интерфейс механизма аутентификации. Ниже показано, как это реализовано в программном коде:
Здесь представлен класс, наследующий свойства и методы класса webapp. RequestHandler, и если вы определите метод get(), вы сможете проверять, зарегистрировался ли пользователь. Если вы посмотрите на несколько последних строк, то увидите, что информация о пользователе помещается в шаблон, который затем используется механизмом шаблонов Django для отображения страницы index.html. Это просто замечательно, что таким тривиальным способом можно задействовать мощную базу учетных записей Google для обеспечения возможности авторизации на страницах. В предыдущем фрагменте это взаимодействие достигается всего двумя строчками:
Здесь мы могли бы предложить вам поэкспериментировать с этим фрагментом и попытаться изменить его так, чтобы приложение было доступно только для зарегистрировавшихся пользователей. Для этого вам даже не требуется понимать, как работает весь механизм, — достаточно будет использовать уже имеющиеся условные инструкции. Теперь, когда мы получили некоторое представление об аутентификации, перейдем к вещам более сложным. Прикладной интерфейс к хранилищу данных позволяет сохранять данные и затем извлекать их в любой части приложения. Для этого необходимо импортировать модуль DB, как показано в предыдущем примере, и определить модель:
Самые важные строки здесь:
С помощью этого простого класса мы можем создавать и использовать хранимые данные. Ниже приводится класс, в котором используется Python API для получения данных из хранилища и отображения 10 последних результатов: Они выбирают результаты из хранилища данных и затем «извлекают» (fetch) 10 последних записей в запросе. Здесь можно остановиться и поэкспериментировать с этим фрагментов, попытавшись получить большее число записей или отсортировать их в дPyroм порядке. Это должно дать вам прочувствовать взаимодействие с приложением. Наконец, если внимательно посмотреть на фрагмент ниже, можно обнаружить, что каждому URL в списке соответствует свой класс, который определен в нашем файле change.py. Здесь мы могли бы порекомендовать вам поэкспериментировать с URL, изменяя соответствия между ними и частями приложения — это должно дать представление о том, как они задействуются.
На этом мы заканчиваем наше обратное учебное руководство по Google Арр Engine, которое должно было дать вам некоторое представление о том, как можно было бы реализовать собственный инструмент для нужд системного администрирования. Если вам интересно будет ознакомиться с примерами других приложений, можете также познакомиться с исходными текстами приложения Google App Engine, написанного самим Гвидо ван Россумом (Guido van Rossum): http://code, google.com/p/rietveld/source/browse.
Related Articles
Set as favorite
Bookmark
Email This
Hits: 246 Комментарии (0)RSS feed CommentsНаписать комментарий |