VK Cloud

Модуль 2

Контейнеры и экосистема Kubernetes

В первом модуле мы разобрались, как работать с IaaS: рассмотрели виртуальные машины, сети, объектное хранилище S3 и концепцию IaC. Второй модуль будет целиком посвящен технологии Kubernetes и всему, что с ней связано.

За годы развития облачных платформ стало понятно, что у них есть определенный набор преимуществ по сравнению с традиционными подходами к хостингу ПО и инфраструктуры. Это эластичность, оплата по мере использования, виртуально-бесконечный пул ресурсов.

Однако разработанные на основе традиционных подходов приложения часто не учитывали то, как они будут масштабироваться под большими нагрузками, контролировать безопасность и использовать гибкие методологии в разработке и развертывании. Возникла необходимость в разработке набора новых архитектурных и инструментальных практик, который получил название Cloud Native.

Суть Cloud Native — в изменении подходов к разработке, поддержки и развертыванию приложений. Теперь они должны учитывать специфику и пользоваться всеми преимуществами облачных платформ.

Несколько примеров Cloud Native

Масштабирование

Cloud-Native-приложения могут масштабироваться двумя способами:

  • вертикально — увеличивать или уменьшать мощность виртуальных машин,
  • горизонтально — увеличивать число виртуальных машин, на которых работают копии приложения.

Архитектура приложения должна учитывать, как оно будет реагировать на такие события. Например, если увеличивается количество копий приложения, то нужно понимать, как они будут синхронизированы между собой, чтобы избежать дублирования работы или потери данных.

Высокая доступность

Cloud-Native-инфраструктура спроектирована таким образом, чтобы быстро восстанавливаться после падений. Это может быть перезагрузка ресурсов в ВМ или контейнере либо переключение на резервную площадку. Чтобы не потерять данные, необходимо проектировать приложение так, чтобы оно хранило данные в нескольких местах и умело перезапускать работу с места, на котором закончило.

Управление и автоматизация

Для Cloud-Native-проектов характерна высокая степень проникновения практик автоматизации. Традиционные подходы также активно использовали автоматизацию, однако с приходом облака все чаще сложные приложения начали разбивать на части — микросервисы, что позволило автоматизировать отдельные этапы работы.

Экономичность

Облачные платформы работают на основе оплаты по факту использования. Это значит, что, если виртуальная машина выключена, вы не платите за ее использование. Cloud-Native-подход заключается в том, чтобы реализовать приложение, которое будет толерантно к выключению ресурсов — например, хранило данные и их состояние во внешнем хранилище. Тогда виртуальную машину можно включать и выключать, не прерывая рабочие процессы.

Cloud-Native-проектами называются приложения или сервисы, которые изначально ориентированы именно на развертывание в облаке. Они сразу учитывают возможности и преимущества облаков: PaaS-сервисы, динамическое масштабирование, отказоустойчивость и так далее.

Таким образом, подход Cloud Native стал эволюционным благом как для разработчиков, которые получили множество инструментальных возможностей для реализации функциональности, так и для специалистов из других областей — инфраструктурных, ИБ и DevOps.