Облака за 5 минут: AWS, Yandex Cloud и др.
Облако – это чужие серверы, которые вы берете в аренду у провайдера. У провайдера есть дата-центры с тысячами машин, и он предоставляет их по частям: вы запрашиваете сервер нужной мощности, получаете его в течение минуты и платите только за то время, что он работает. Когда сервер больше не нужен, вы его удаляете и платить за него перестаете.
Чтобы понять, почему это важно, стоит вспомнить, как серверы получали раньше. До облаков это был долгий процесс: согласовать бюджет, закупить физическое оборудование, дождаться поставки, установить его в стойку, обеспечить питание, охлаждение и замену вышедших из строя дисков. На все это уходили недели, а иногда и месяцы.

Таким образом, облако появилось как решение конкретной проблемы – медленного и дорогого получения вычислительных ресурсов. Отсюда же его тесная связь с инфраструктурой как код: в шаге про Terraform сервер создавался так быстро именно потому, что облако выдает ресурсы по запросу через API, а Terraform обращается ровно к этому API. Поэтому облако и подход «инфраструктура как код» развивались вместе и в полной мере работают только в связке.
Кто сдает серверы
Провайдеров несколько, и они делятся на две группы. Первая – мировая тройка: AWS, Microsoft Azure и Google Cloud. AWS – это облако компании Amazon, оно появилось в 2006 году, было первым на рынке и до сих пор остается крупнейшим. На этих трех провайдерах работает значительная часть мирового интернета.
Вторая группа – российская. Зарубежные облака сейчас труднодоступны из России из-за сложностей с оплатой и регистрацией, поэтому в российских компаниях вы чаще встретите Yandex Cloud, VK Cloud, Selectel и Cloud.ru.
Важно понимать, что устроены все облака примерно одинаково. Набор категорий сервисов и их логика совпадают у всех провайдеров, различаются в основном названия и детали реализации. Поэтому, разобравшись с одним облаком, вы сможете работать почти с любым другим: переучивать придется главным образом терминологию.
Факт. AWS появилось как побочный продукт самой Amazon. Компания построила мощную инфраструктуру под свой интернет-магазин, а затем решила сдавать свободные мощности в аренду другим. Первые сервисы запустились в 2006 году, а сегодня облачное направление приносит Amazon больше прибыли, чем розничная торговля, ради которой все и создавалось.
Три категории сервисов
В каталоге любого облака десятки сервисов, но почти все они укладываются в три большие категории:

Compute
Это виртуальные машины – те самые серверы, о которых мы постоянно говорим. Вы указываете количество ядер, объем памяти и диска, и через минуту получаете готовую машину с IP-адресом и подключаетесь к ней по SSH. Оплата идет за время работы. Здесь есть важный нюанс: если просто выключить машину, вы перестаете платить за процессор и память, но за диск под ней деньги продолжат списываться. Чтобы оплата прекратилась полностью, машину нужно удалить.
Storage
Это хранилища данных, и основной их вид – объектное хранилище. В него складывают файлы любого размера и обращаются к ним по HTTP. Там держат резервные копии, изображения для сайтов, логи, артефакты сборок, а оплата идет за занятый объем. Наиболее известный пример – сервис S3 от AWS. Он стал настолько распространенным, что его название превратилось в стандарт: другие провайдеры указывают «S3-совместимое хранилище», а инструменты, рассчитанные на работу с S3, подходят ко всем таким хранилищам.
Помимо объектного, есть и более простой вид – диски, которые подключаются к виртуальным машинам. Про них достаточно знать, что они существуют отдельно от машины, их можно переносить между машинами и увеличивать в размере.
Managed services
Это, пожалуй, самая полезная категория, и чтобы понять ее ценность, разберем пример. Допустим, вам нужна база данных. Можно взять виртуальную машину и установить на нее PostgreSQL вручную, но тогда настройка, резервное копирование, обновления и репликация лягут на вас. А можно взять Managed PostgreSQL: тогда облако само разворачивает базу, делает резервные копии, обновляет и обслуживает ее, а вам выдает готовый адрес для подключения.
Managed Kubernetes, который упоминался в шаге про архитектуру, относится к этой же категории – это случай, когда control plane разворачивается и обслуживается на стороне провайдера. Managed-сервисы существуют для баз данных, Kubernetes, очередей сообщений, кешей – для большинства компонентов, которые сложно обслуживать вручную.
Но у этого удобства есть цена: managed-сервис обходится дороже обычной виртуальной машины по деньгам, но дешевле по времени инженеров. Где именно проводить границу, каждая компания решает сама, исходя из размера команды и масштаба проекта.
Один словарь на два облака
Категории у всех провайдеров одинаковы, а названия сервисов отличаются. Вот соответствие на примере AWS и Yandex Cloud:
| Что это | AWS | Yandex Cloud |
|---|---|---|
| Виртуальные машины | EC2 | Compute Cloud |
| Объектное хранилище | S3 | Object Storage |
| Managed база данных | RDS | Managed Service for PostgreSQL |
| Managed Kubernetes | EKS | Managed Service for Kubernetes |
Зная это соответствие, вы без труда прочитаете вакансию с требованием «EC2, S3, RDS»: речь идет о серверах, хранилище и базах данных, просто названных терминами AWS.
Сколько это стоит
Модель оплаты называется pay as you go – оплата по факту использования: посекундно или почасово за работу машин, за объем данных в хранилищах. У такой модели две стороны.
Положительная сторона в том, что эксперименты обходятся очень дешево. Сервер, поднятый на вечер для учебы, стоит копейки, а новым аккаунтам провайдеры обычно дают стартовые гранты, которых на учебные задачи хватает с запасом. Отрицательная сторона в том, что облако продолжает считать деньги, пока вы сами не остановите ресурс. Виртуальная машина, которую подняли и забыли удалить, будет списывать средства неделями, и неожиданно большой счет в конце месяца за давно забытые ресурсы – типичная ситуация. Именно поэтому в шаге про Terraform команде destroy был посвящен отдельный раздел: вовремя убирать за собой в облаке – это вопрос не аккуратности, а денег.
Облака и работа DevOps-инженера
Инфраструктура большинства компаний сегодня размещается в облаках, поэтому облако в требованиях вакансии девопса – обычное дело; в российских компаниях это, как правило, Yandex Cloud, VK Cloud или Selectel.
При этом не вся инфраструктура облачная. Банки, государственные структуры и компании с повышенными требованиями к безопасности держат собственное оборудование в своих дата-центрах – такой подход называется on-premise. Девопсы нужны и там, просто вместо API облака они работают со своей виртуализацией в закрытом контуре. Полезно понимать оба варианта, так как это дает гибкость.
На облаках карта технологий замыкается. Облако предоставляет сервер, Terraform его создает, Ansible настраивает, приложение работает в контейнерах, пайплайн доставляет новые версии, а мониторинг следит за их состоянием. Каждый модуль оказывается не самостоятельной темой, а частью единой последовательности.
Словарик
| Термин | Что означает |
|---|---|
| Облако | Чужие серверы в аренду через API, оплата за использование |
| Провайдер | Владелец облака: AWS, Azure, Google Cloud, Yandex Cloud, VK Cloud, Selectel |
| Compute | Категория «вычисления»: виртуальные машины |
| Объектное хранилище | Файлы любого размера с доступом по HTTP; самое известное – S3 |
| Managed-сервис | Готовый сервис на обслуживании облака: база, Kubernetes, очередь |
| Pay as you go | Оплата по факту: за время работы машин и объем данных |
| On-premise | Собственное железо компании в ее дата-центре, не облако |