Open source и Amazon Elastic Compute Cloud
Владимир Орлов, Infopulse Ukraine, Kiev, Java Senior Developer, vorl@softwarium.net
LVEE 2009
Выполнен обзор платформы Amazon Elastic Compute Cloud. Рассмотрена возможность разработки своего интерфейса к Amazon EC2 с использованием технологий с открытым исходным кодом
Amazon Elastic Compute Cloud (EC2) это веб-сервис, который предоставляет вычислительные мощности в облаке и является одним из ведущих игроков в сфере cloud-computing. Сервис существенно облегчает разработку масштабируемых веб-приложений, так как уменьшает время конфигурации и запуска новой машины в облаке до минут, а также позволяет добавлять или удалять вычислительные мощности исходя из текущих нужд приложения. Сервис входит в инфраструктуру Amazon Web Services (AWS).
EC2 может использоваться совместно с другими сервисами, совместим с такими системами, как Solaris, Debian, MySQL, Oracle и др., популярен у разработчиков из-за лежащих в его основе открытых технологий.
EC2 основан на двух концепциях: Amazon Machine Image (AMI) и экземпляр (Instance). AMI это образ операционной системы, приложения, данных, конфигурационных файлов и зависимостей. Запустив систему из образа, пользователь создает новый экземпляр (Instance). Для управления пользовательскими ресурсами в EC2 был разработан хорошо документированный интерфейс (SOAP and Query APIs). Существуют библиотеки, упрощающие работу с API на языках C++, C#, Java, Perl, Python, PHP и Ruby. Также AWS предоставляет утилиты на Java, пригодные к использованию в shell.
Для использования EC2 необходимо зарегистрировать учетную запись на AWS, активировать для нее сервис EC2 и сервис S3 для хранения AMI. Каждой учетной записи ставятся в соответствие уникальные Access Key Id и Secret Access Key, используемые для аутентификации при обращении к API. Для использования утилит понадобится создать сертификат X.509 и ключ RSA.
Одна из важных для open source черт EC2 – возможность автоматизации и программирования интерфейса управления ресурсами пользователя. При желании разработчик может легко расширить и дополнить API, используя любимый язык программирования.
Предположим, что в компании разрабатывается J2EE-приложение «Selfcare», и при заключении нового контракта необходимо как можно быстрее запустить новый сервер с настроенным приложением и базой данных. Обслуживать каждый сервер будет своя команда поддержки, не имеющая доступа к другим серверам. Создается одна на всю компанию учетная запись в AWS. Для программирования выбираются, к примеру, Perl и библиотека Net::Amazon::EC2. Создаются два образа AMI: один «контроллер», используемый для создания серверов и управления ими, а второй для развертывания на нем J2EE-приложения.
EC2 позволяет не создавать, а выбрать уже готовый образ: Debian, Suse, Open Solaris, Windows. Также существуют образы с уже настроенными базами данных Oracle и MySQL.