Нужна ли Вам PaaS для облачных микросервисов?
Облачные вычисления добавляют гибкости корпоративным ИТ. Когда компании хотят воспользоваться преимуществами облаков, они выясняют, что должны обратиться к микросервисам вместо своих традиционных, монолитных архитектур для обеспечения возможности проведения частых изменений*.
Микросервисы могут помочь преодолеть проблемы, вызванные частыми изменениями путем разделения монолитной архитектуры на несколько независимых сервисов, каждый со своей собственной простой бизнес-логикой. Это приводит к другому вопросу, который остается открытым: что предпочтительнее выбирать для реализации микросервисов - PaaS или IaaS ?
Сергей Сверчов, Solutions Architect компании Altoros, недавно опубликовал в блоге компании Altoros серьезную работу на тему «PaaS против IaaS» при осуществлении микросервисов. Компания Altoros предоставляет услуги системной интеграции для своей клиентской базы по всему миру с помощью Cloud Foundry PaaS, однако статья Сверчова демонстрирует сбалансированный взгляд на выбор подхода.
Для него принципиальный момент состоит в том, что команда DevOps будет тратить слишком много времени, когда компании работают прямо на голой инфраструктуре, выбирая подход PaaS. «Автоматизированная PaaS требует больше инвестиций», - пишет он, - «однако она может уменьшить циклы выпуска от нескольких недель до нескольких часов и даже устранить некоторые недостатки модели микросервисов.»
В своей статье Сергей охватывает шесть различных областей в отношении реализации микросервисов, а также отмечает различия между IaaS и PaaS в каждой из этих областей, что можно резюмировать следующим образом:
- Один сервис для одной задачи. С IaaS, «каждая служба развертывается как один экземпляр (IaaS); DevOps отвечает за настройку валидных интерфейсов связи.» С PaaS, «масштабируемостью можно управлять с помощью разработчика. Конечные связи обслуживаются PaaS.»
- Использование различных инструментов для реализации различных сервисов. С использованием IaaS «DevOps необходимо настроить среду выполнения приложений.» С PaaS «во время выполнения приложения автоматически развертываются в контейнере PaaS.»
- Слабая связь. С IaaS «команда DevOps управляет экземплярами IaaS, используемыми для развертывания сервисов.» С PaaS «контейнеры – это изолированные элементы для развертывания приложений. Жизненный цикл контейнера управляется PaaS.»
- Независимость разработчика. С IaaS «DevOps возможно, потребуется создать несколько сред IaaS для каждой из групп развития.» В случае с PaaS группами развития можно управлять (используя Cloud Foundry терминологию) как «организациями» и «пространствами».
- Непрерывность доставки. С IaaS «DevOps инженеры должны установить и настроить инструменты автоматизации и интегрировать их с хранилищем проекта.» В случае с Cloud Foundry, «решения по автоматизации могут быть размещены как обычное приложение.»
- Интеграция с внешними службами. С IaaS «команда DevOps развертывает внешние сервисы. Приложения подключаются (к ним), используя атрибуты.» С PaaS «компонент Service Broker может быть использован для развертывания и публикации некоторых внешних сервисов. Сервис привязки делает проще подключение экземпляра приложения для внешних сервисов.»
В прошлом году было много разговоров об основных поставщиках публичной облачной инфраструктуры, которые начинают активно развивать PaaS в своих предложениях. Кроме того, как потенциал для новой эры привязки к производителю, дискуссии на тему «IaaS против PaaS» также включают в себя существенные вопросы функциональности, необходимых навыков, и, что более важно, показателей эффективности корпоративных ИТ по мере развития облаков – публичных, частных, и гибридных. Статья Сергея добавляет ценности этой дискуссии.
* Термин «Microservice Architecture» возник в течение последних нескольких лет, чтобы описать конкретный способ проектирования приложений, как способ независимого развертывания сервисов. И хотя не существует точного определения этого архитектурного стиля, есть определенные общие характеристики организации бизнес-возможностей, автоматического развертывания и децентрализованного управления языками и данными.