Облачные приложения и Kubernetes: основы и тренды
Cloud Server | Комментировать запись
Данная серия статей расскажет о различных технологиях облачной разработки и объяснит, как использовать в них Kubernetes для управления и масштабирования полученных приложений.
В дальнейшем мы рассмотрим такие темы:
- Тренды современной разработки приложений.
- Экосистема облачных (cloud native) приложений.
- Микросервисы.
- Контейнеры.
- Кластеры.
- 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 факторов, цель которых – повышение производительности разработчиков и улучшение поддерживаемости приложений. Вот они:
- Кодовая база.
- Зависимости.
- Конфигурация.
- Сторонние службы.
- Сборка, релиз, выполнение.
- Процессы.
- Привязка портов.
- Параллелизм.
- Утилизируемость.
- Паритет разработки и работы.
- Логирование.
- Задачи администрирования.
Поскольку провайдеры PaaS абстрагируют все слои приложений, важно адаптировать пакетирование, мониторинг и масштабирование приложений к этому новому уровню абстракции. Двенадцать факторов позволяют прийти к автономным и одноразовым сервисам. При эффективном использовании они образуют единую методологию сборки и поддержки приложений, которые легко масштабировать и развертывать, полностью используя инфраструктуру управляемого облака.
Tags: Cloud, Cloud Server, IaaS, Kubernetes, PaaS