Когда я начинал работать с 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 после года работы с ним