Облака за 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:

Что этоAWSYandex Cloud
Виртуальные машиныEC2Compute Cloud
Объектное хранилищеS3Object Storage
Managed база данныхRDSManaged Service for PostgreSQL
Managed KubernetesEKSManaged 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Собственное железо компании в ее дата-центре, не облако