Облачные технологии и виртуализация: архитектурные модели IaaS, PaaS, SaaS и контейнеризация
Архитектура Cloud Computing по стандарту NIST: сервисные модели IaaS, PaaS, SaaS, гипервизоры 1 и 2 типа, контейнеризация Docker и микросервисы.
Облачные вычисления (Cloud Computing) — это модель обеспечения повсеместного, удобного сетевого доступа по требованию к общему пулу конфигурируемых вычислительных ресурсов (серверам, хранилищам, приложениям), которые могут быть быстро предоставлены и освобождены с минимальными эксплуатационными затратами.
Национальный институт стандартов и технологий США (NIST SP 800-145) определяет 5 фундаментальных признаков истинного облака:
1. Самообслуживание по требованию (On-demand self-service): клиент заказывает вычислительные мощности в консоли без участия человека-оператора провайдера.
2. Широкий сетевой доступ (Broad network access): сервисы доступны через стандартные протоколы с любых устройств (ПК, смартфоны, тонкие клиенты).
3. Объединение ресурсов в пул (Resource pooling): физические серверы динамически делятся между множеством клиентов с изоляцией сред.
4. Мгновенная эластичность (Rapid elasticity): автоматическое масштабирование мощностей вверх при пиковых нагрузках и вниз при спаде.
5. Измеряемый сервис (Measured service): оплата строго по модели Pay-as-you-go (только за фактически потребленные гигабайты и секунды CPU).
Эластичность (Elasticity)
Pay-as-you-go
В зависимости от того, какую часть инфраструктурного стека берет на себя провайдер, выделяют три уровня облачных услуг:
1. IaaS (Infrastructure as a Service — Инфраструктура как услуга):
Провайдер предоставляет виртуальные серверы, сети, дисковые массивы и маршрутизаторы. Клиент сам устанавливает операционную систему, патчит уязвимости, настраивает стек и базы данных (Amazon EC2, Google Compute Engine, Яндекс Облако Compute).
2. PaaS (Platform as a Service — Платформа как услуга):
Провайдер берет на себя ОС, базы данных, среду исполнения языка (Python, Node.js, Go) и патчи безопасности. Разработчик загружает только исходный код своего приложения (Heroku, Google App Engine, AWS Elastic Beanstalk).
3. SaaS (Software as a Service — Программное обеспечение как услуга):
Готовый программный продукт, доступный конечному пользователю через браузер. Всю инфраструктуру, код, обновления и бэкапы контролирует поставщик (Google Docs, Office 365, Gmail, Figma).
Аналогия: Пицца как услуга (Pizza as a Service)
Традиционная IT-инфраструктура — пицца дома (вы сами покупаете муку, печь и газ). IaaS — полуфабрикат из супермаркета (плита и стол ваши). PaaS — доставка горячей пиццы курьером (вам нужна только посуда). SaaS — ужин в пиццерии (вы просто приходите и наслаждаетесь).
Виртуализация позволяет запускать несколько изолированных операционных систем на одном физическом сервере (Host). Программа, управляющая виртуальными машинами (ВМ), называется гипервизором:
- Гипервизор 1-го типа (Bare-metal): устанавливается прямо на 'голое железо' без базовой ОС (VMware ESXi, KVM, Microsoft Hyper-V). Обладает максимальной производительностью и безопасностью.
- Гипервизор 2-го типа (Hosted): работает поверх обычной ОС хоста как программа (VirtualBox, VMware Workstation).
Контейнеризация (Docker) — революция в развертывании ПО. В отличие от ВМ, контейнер не содержит полноценную копию гостевой ОС. Все контейнеры делят общее ядро хостовой ОС Linux, используя механизмы изоляции пространств имен (namespaces) и ограничения ресурсов (cgroups). Благодаря этому контейнеры запускаются за миллисекунды, весят десятки мегабайт (а не гигабайты) и потребляют минимум памяти.
В классической монолитной архитектуре весь функционал (аутентификация, каталог товаров, платежи, уведомления) упакован в один огромный исполняемый файл. Сбой в модуле уведомлений может 'уронить' весь интернет-магазин, а масштабировать приходится всю систему целиком.
Микросервисная архитектура делит систему на десятки независимых, слабо связанных сервисов. Каждый микросервис:
- Отвечает за одну конкретную бизнес-задачу (Single Responsibility);
- Имеет собственную независимую базу данных;
- Общается с другими сервисами по легковесным протоколам (HTTP REST или gRPC);
- Развертывается в собственном Docker-контейнере.
Для автоматического управления тысячами таких контейнеров, их балансировки, самовосстановления при сбоях и плавного обновления без простоя (Rolling Updates) применяются системы оркестрации, стандартом среди которых является Kubernetes (K8s).
