Если Вы уже успели прочитать статью про архитектуру Amazon, то Вы уже знаете, что этот проект активно использует сервис-ориентированную архитектуру для максимально эффективной организации взаимодействия между всеми подпроектами. Этот подход используется практически во всех начинаниях Amazon и во многом благодаря ему они выпустили в свет групу сервисов под общим названием Amazon Web Services. Идея их достаточно проста: они предоставляют практически все необходимое для запуска веб-проектов абсолютно произвольной направленности и практически неограниченных масштабов. Причем они старались учесть все возможные потребности потребителей и именно по-этому сервисов в эту группу входит четыре:
- Elastic Cloud 2
- "Практически любой высоконагруженный сервис требует внушительных вычислительных мощностей" - вполне закономерное высказывание, именно проблемы с ним связанные и призван решить данный сервис. Сервис предоставляет в распоряжение пользователей виртуальные машины сопоставимые по производительности с "железными" серверами в считанные минуты, причем имеется возможность настраивать изначальный набор программного обеспечения и конфигурацию виртуального оборудования. Размещаемые на таких виртуальных машинах сервисы могут наращивать вычислительные мощности существенно быстрее по сравнению с использованием dedicated или colocation хостинга.
- Simple Storage Service
- Этот сервис по сути представляет собой "бездонное" хранилище для произвольных файлов. Функционал достаточно прост: положить, забрать, удалить. Доступ возможен с использованием нескольких предоставляемых интерфейсов, а доступ к файлам может быть ограничен. Казалось бы ничего особенного, но во многих интернет-проектах такая возможность может оказаться полезной.
- SimpleDB
- Позиционируется как сервис для предоставления доступа к структурированным данным. С точки зрения разработчика проще охарактеризовать его как нереляционную базу данных. Схема данных генерируется в процессе эксплуатирования сервиса - заранее ее указывать не нужно, а запросы в какой-то степени напоминают сильно ограниченный SQL с возможностью только самых примитивных операций: сравнение, объединение, пересечение и т.п. У этой системы есть несколько аналогов, среди них Apache HBase и Hypertable.
- Simple Queue Service
- Более экзотический сервис - предоставляет возможность создания распределенных очередей сообщений для обеспечения взаимодействия других компонентов системы, которые предполагается, что будут размещены в Amazon EC2. Далеко не всем веб-проектам такая функциональность нужна, но если она все же понадобится - этот сервис здорово упростит жизнь разработчикам.
Все это можно было бы легко узнать и просто посетив официальный их сайт, но не в этом суть - написать этот пост меня подтолкнул тот факт, что мне довелось столкнуться с этими сервисами и на личном опыте по работе. Собственно говоря просто хочу поделиться впечатлениями :)
Знакомство было не долгим - всего пару недель, да и поиграться удалось по большей части лишь с Amazon EC2 и совсем чуть-чуть с S3. Первое впечатление произвел их Getting Started Guide - все просто и лаконично, еще даже до получения доступа к сервису у меня сложилось четкое представление о том, как он работает - несомненный плюс. После получения всех необходимых ключей от аккаунта (их было несколько, запутаться достаточно легко, но документация всегда спасала) можно сразу же приступать к работе с сервисом, скачав набор консольных утилит. Первым делом стоит взглянуть на ассортимент предоставляемых операционных систем для установки на будущие виртуальные машины - на первый взгляд представлены все популярные дистрибутивы Linux, что в общем-то более, чем достаточно (но при более детальном рассмотрении это оказалось далеко не так: различается в них только набор программного обеспечения, а ядро везде одно и то же - от Fedora 8). Так что выбор предстоит хоть и непростой, но скорее его стоит основывать его на личном предпочтении и удобстве, а не на каких-то других соображениях - разница в итоге будет невелика. Я лично остановил свой выбор на Debian Etch - не знаю по каким соображениям, да и не важно это вовсе, как впоследствии оказалось. Сделав свой выбор и подождав буквально несколько секунд можно узнать по какому URL располагается свежесозданная виртуальная машина (хочется отметить, что у утилиты их создания есть параметр "количество", то есть создавать их можно целыми пачками).
Взмахнув волшебной палочкой (всмысле парой команд в локальной консоли) пользователь попадает в виртуальную консоль не менее виртуального сервера, с которым можно работать абсолютно так же, как и с настоящим железным сервером - варианты использования ограничиваются лишь воображением и требованиями проекта, который планируется там размещать. Останавливаться на дальнейшем смысла не вижу - все сугубо индивидуально.
S3 использовался мной лишь для хранения созданных модифицированных образов операционных систем, но своему описанию он соответствует абсолютно полностью: файлы загружаются простейшим образом, абсолютно не забивая себе голову о том, как они там будут храниться (хотя сервис на самом деле имеет под собой достаточно непростую структуру).
На закуску я оставил ложку дегтя - их ценовую политику. За пару недель достаточно неактивного, "ознакомительного" использования счет легко достиг отметки в пятьсот долларов. EC2 тарифицируется по часам - от 10 до 80 центов в час за виртуальную машину плюс трафик (более детально можно посмотреть на все том же официальном сайте). Там же и указаны гарантируемые вычислительные мощности и объем дискового пространства и оперативной памяти. На практике же все остальные параметры системы (пропускная способность сетевых интерфейсов, скорость чтения/записи на диски и так далее) делятся между всеми виртуальными машинами, располагаемыми на одной физической и по большей части это происходит по принципу "как повезет", хотя наблюдаются и некоторые закономерности: узлам за 40-80 центов/час дается явный приоритет при доступе к дискам (что, впрочем, упоминается в их Developer Guide), но, как оказалось, приоритет этот настолько высок, что скорость записи отличается между ними более чем на порядок - в 15-20 раз, такое вот несколько удивительное наблюдение. Интернет-канал же тоже делится - ограничения сверху достичь не удалось, но есть предположение, что в сумме "на всех" он равен гигабиту на физическую машину.
В целом сервис производит достаточно положительные впечатления (если закрыть глаза на цены) - быстро и удобно, да и сфера его использования вовсе не ограничивается веб-проектами, его запросто можно приспособить и к, скажем, научным исследованиям, связанным с моделированием чего-нибудь, да и вообще к решению любых задач, требующих больших вычислительных мощностей. Жалко, что не удалось поближе познакомится с остальными веб-сервисами Amazon - они также кажутся достаточно интересными, если взглянуть со стороны.
Напоследок хочется напомнить, что подписаться на RSS никогда не поздно, а помочь развитию блога можно написав гостевой пост. А то сам я, как не трудно заметить, в последнее время почти не справляюсь с относительно регулярным написанием новых информативных постов...