Коротко о компонентах и терминах Amazon Web Services

12 января 2015

Когда я начинал работать с Amazon Web Services (AWS), самой большой проблемой для меня было не запутаться во всех этих EC2, S3, RDS, SQS и прочих странных непонятных названиях. В данной заметке вы найдете краткий перечень основных терминов такого рода. Заметка предназначена для новичков и предположительно должна упростить начало работы с облаком Амазона.

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

EC2. Elastic Compute Cloud. Это своего рода местные VDS. Машины (EC2 Instances), у которых есть CPU, память, диск. В которые вы можете ходить по ssh и на которых будет крутиться ваше мега приложение, работая с остальными сервисами Амазона. Самый дешевый инстанс (t2.micro) стоит около 9.4$ в месяц. Но оплата при этом почасовая. Вы можете поднять инстанс, поработать с ним, а затем потушить, заплатив только за время, когда вы реально его использовали.

S3. Simple Storage Service. Если не ошибаюсь, это был самый первый сервис, появившийся в AWS. S3 — это такая штука для хранения файлов. Например, в S3 можно держать бэкапы и логи. Если у вас статический сайт, вы можете целиком держать его в S3. Многие подкасты раздаются через S3, хотя при большом количестве слушателей получится дороговато. В S3 вы платите за используемое место, количество запросов к S3 (как на чтение, так и на запись), а также трафик (но при этом заливка в S3 из EC2 бесплатна).

RDS. Relational Database Service. РСУБД в Амазоне. Поддерживаются MySQL, PostgreSQL, Oracle, MS SQL Server, а с недавних пор еще и Aurora — NewSQL решение от Amazon, работающее по протоколу MySQL. Amazon RDS дает нам автоматические бэкапы, создание снапшотов, автоматическую замену хостов, а также репликацию, в том числе между различными availability zones (AZ, в первом приближении — местное название ДЦ). RDS Instances на момент написания этих строк стоят от 12.3$ в месяц.

ElastiCache. В действительности, это всего лишь Redis и Memcached в облаке. Сломавшиеся инстансы автоматически определяются и заменяются. В случае с Redis поддерживается репликация между AZ. По деньгам получается от 12.3$ в месяц за одну cache node.

DynamoDB. NoSQL база данных от Amazon. Что-то вроде местного Riak, то есть, key-value хранилище, умеющее вторичные индексы и выборку по диапазону значений. Сиблингов в DynamoDB, насколько я понял, не бывает. Достигается это путем захвата лока во время изменения значения по заданному ключу. Самая большая проблема в DynamoDB, по всей видимости, заключается в ограничении на количество операций чтения и записи. Если хотите больше операций, платите больше или накручивайте какие-то кэши и очереди, чтобы уложиться в capacity units во время пиковых нагрузок. На практике это делает работу с DynamoDB весьма увлекательной.

ELB. Elastic Load Balancing. Балансировщик нагрузки, распределяющий запросы пользователей по разным EC2 Instances в различных availability zones. ELB следит за тем, чтобы пользователей обслуживали только здоровые инстансы EC2. Более того, ELB может автоматически создавать и тушить инстансы EC2 в зависимости от текущей нагрузки. При использовании ELB вы платите за время, в течение которого ELB включен, а также за проходящий через ELB трафик. Управление всем этих хозяйством находится в разделе EC2 → Network & Security → Load Balancers.

Route 53. DNS-сервера внутри Амазона. Route 53 эффективно интегрируется с остальной инфраструктурой AWS — EC2, S3 и ELB. Поддерживается latency based роутинг, Geo DNS (название говорит само за себя), а также взвешенный round robin. Также через Route 53 можно регистрировать домены прямо в Амазоне. Цены измеряются в каких-то центах за зону в месяц или за один миллион запросов.

CloudFront. Местный очень фичастый Content Delivery Network. CDN — это такая штука, которая позволяет подвинуть контент (обычно статический — CSS, JS, картинки, файлы) физически ближе к пользователю. За счет меньшего летенси контент доставляется намного быстрее, плюс происходит распределение нагрузки. Ознакомиться с актуальными ценами на CloudFront можно здесь.

CloudWatch. Метрики, мониторинг и агрегация логов в Амазоне. Очень круто интегрируется с EC2, DynamoDB, RDS, а также поддерживает пользовательские метрики. Цена, как мне кажется, слишком завышена — 0.5$ в месяц за метрику, 0.1$ в месяц за алерт, и в таком духе. С большой вероятностью, какой-нибудь Datadog обойдется вам намного дешевле.

CloudSearch. Полнотекстовый поиск. На момент написания данной заметки поддерживает 34 языка, позволяет реализовать саджестилки для полей ввода, указывать при индексации веса для полей, также поддерживается highlighting. По деньгам получится от 42.5$ в месяц и выше. Впрочем, дешевле нужно еще поискать. В частности, ElasticSearch от Compose.io стоит от 45$ в месяц.

IAM. Identity and Access Management. Это такая штука, при помощи которой вы раздаете права для управления всем перечисленным выше. IAM на первый взгляд может показаться довольно пугающим с этими его access и secret ключами, а также правами, записываемыми в JSON. Но в основе лежит традиционная идея с пользователями и группами, а JSON можно вообще не писать руками, используя вместо него готовые шаблоны. Например, дать определенной группе доступ только на чтение к S3 можно при помощи пары кликов.

 

Есть множество других сервисов, например Config (местный etcd / Consul / ZooKeeper), SQS (очереди сообщений, что-то вроде RabbitMQ), SES (штука для отправки почты), SNS (штука для оправки пушей на мобильные устройства), Lambda (как бы хранимки/хуки на JavaScript), SimpleDB (еще одна БД, про отличия от DynamoDB можно прочитать здесь), EMR (Hadoop и Spark в облаке) и многие другие. Еще из странных аббревиатур полезно знать EBS и AMI.

Как видите, Amazon предоставляет замечательную инфраструктуру, которая в существенной степени упрощает (но, понятно, не решает за вас!) разработку масштабируемых и отказоустойчивых приложений. Теперь, видя картину в целом, я думаю, вы без труда разберетесь во всем остальном, воспользовавшись справкой по AWS.

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

А работаете ли вы с Амазоном и если да, то какие его сервисы используете?

Дополнение: Впечатления от облака Amazon после года работы с ним

Метки: .

Подпишись через RSS, E-Mail, Google+, Facebook, Vk или Twitter!

Понравился пост? Поделись с другими: