Облачные приложения и Kubernetes: основы и тренды

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

В дальнейшем мы рассмотрим такие темы:

Масштабирование облачных приложений

В сегодняшнем быстро меняющемся программном ландшафте прогресс в технологиях операций способствовали резкому сокращению циклов релизов приложений. Традиционно релизы программного обеспечения следуют графику, но все чаще приложения и сервисы поставляются и развертываются просто в течение дня. Это сокращение традиционного цикла выпуска программного обеспечения – следствие как технологических разработок (это, например, взрывной рост облачных платформ, контейнеров и архитектуры, ориентированной на микросервисы), так и культурного развития (это более опытные и мобильные пользователи, которые готовы к переменам и все чаще ожидают выхода новых функций, быстрого исправления ошибок и так далее).

Эта симбиотическая связь между конечными пользователями и разработчиками становится все более крепкой. Смещение организационных структур и архитектур приложений позволяет разработчикам быстро учитывать отзывы и реагировать на запросы пользователей. Эта ускоренная разработка часто сопровождается упаковкой приложений в контейнеры и использованием систем, которые автоматизируют их развертывание и оркестровку, таких как Docker Swarm, Marathon и Kubernetes. Эти платформы с открытым исходным кодом, в настоящее время достаточно стабильные для крупномасштабных производственных развертываний, позволяют владельцам сервисов запускать и масштабировать приложения самостоятельно, без труда управляя сотнями запущенных контейнеров.

Kubernetes и облачная разработка

Система Kubernetes, разработанная компанией Google в 2014 году, сегодня стала одним из самых популярных проектов на GitHub: у нее более чем 11 300 разработчиков и 75 000 коммитов. Рост ее процветающего сообщества с открытым исходным кодом отражает ее популярность в секторе закрытого ПО, причем более 50% компаний из списка Fortune 100 каждый день используют Kubernetes для быстрого развертывания новых функций и исправлений ошибок.

Сегодня в сети появляются отдельные сервисы для Kubernetes, которые позволяют малым и крупным группам разработчиков быстро использовать эту платформу для управления контейнерами, не требуя при этом создавать и устанавливать кластер.

Благодаря своей простоте и удобным для разработчиков интерфейсам такие сервисы Kubernetes позволяют разработчикам запускать свои контейнеризованные приложения в управляемом, готовом к производству кластере без необходимости поддерживать и настраивать базовую инфраструктуру. Часто они предлагают дополнительные функции: балансировку нагрузки, брандмауэры, хранилища объектов и блочные хранилища и тому подобное.

Благодаря Kubernetes REST API разработчики могут использовать богатую экосистему инструментов с открытым исходным кодом, сохраняя при этом удобство управления инфраструктурой. Команды могут гибко развертывать и масштабировать свои облачные приложения. Сертифицированные платформы Kubernetes помогают разработчикам запускать свои контейнеры приложений с минимальной конфигурацией и операционными издержками.

Тенденции в разработке современных приложений

По мере развития предложений «платформа как сервис» (PaaS) и «инфраструктура как сервис» (IaaS) разработки программного обеспечения и архитектуры были перенесены на новые парадигмы инфраструктуры. Облачные провайдеры абстрагируют базовое оборудование, и, соответственно, приложения должны быть специально разработаны для устранения сбоев и изменений в этой вычислительной инфраструктуре. Предоставление конечным точкам приложений возможности публиковать данные о состоянии и метрические данные (с учетом того, что эти конечные точки будут регулярно запрашиваться, а с данными будут работать), а также упаковка приложений в небольшие самостоятельные фрагменты – это новые нормы при разработке отказоустойчивых, выносливых облачных приложений.

Разработка приложений, которые будут быстро и непрерывно внедряться в облачные среды, привела к появлению новых программных методологий, таких как «Cloud Native» и «Twelve Factor» («оптимизация для выполнения в облаке» и «12 факторов»). Эти высокоуровневые структуры решают общие проблемы при запуске масштабируемых приложений на облачных платформах и служат руководством для разработчиков и архитекторов программного обеспечения при создании ошибкоустойчивых приложений. Эти базовые концепции основаны на последних достижениях в области разработки программного обеспечения, таких как контейнеры, ориентированная на микросервисы архитектура, непрерывная интеграция и развертывание, а также автоматическая оркестровка.

12 факторов

Синтезируя обширный опыт разработки и развертывания приложений на своих облачных сайтах PaaS, платформа Heroku построила структуру для создания современных приложений, состоящую из 12 факторов, цель которых – повышение производительности разработчиков и улучшение поддерживаемости приложений. Вот они:

  1. Кодовая база.
  2. Зависимости.
  3. Конфигурация.
  4. Сторонние службы.
  5. Сборка, релиз, выполнение.
  6. Процессы.
  7. Привязка портов.
  8. Параллелизм.
  9. Утилизируемость.
  10. Паритет разработки и работы.
  11. Логирование.
  12. Задачи администрирования.

Поскольку провайдеры PaaS абстрагируют все слои приложений, важно адаптировать пакетирование, мониторинг и масштабирование приложений к этому новому уровню абстракции. Двенадцать факторов позволяют прийти к автономным и одноразовым сервисам. При эффективном использовании они образуют единую методологию сборки и поддержки приложений, которые легко масштабировать и развертывать, полностью используя инфраструктуру управляемого облака.

Tags: , , , ,