Vamp.io использует Istio, чтобы упростить выпуск канареек
Микросервисы и контейнеры занимают центральное место, поскольку разработчики переходят на более гибкую платформу разработки. Платформа микросервисов становится основой приложений на долгие годы. Используя этот подход, разработчики разрабатывают различные сервисы, которые работают независимо от других, что приводит к гибкой разработке и быстрому развертыванию цифровых предложений. Это возможно только при наличии отдельной среды для разных компонентов приложения. Это можно сделать с помощью виртуальных машин, но это неэффективно и дорого. Для каждой виртуальной машины требуется ОС, а использование разных виртуальных машин приводит к увеличению нагрузки на сервер. Введите контейнеры, которые помогают в решении этих вопросов. Контейнеры предоставляют облегченные среды для различных компонентов приложения. Контейнеры помогают разделить физический сервер на разные среды выполнения, где разработчики могут создавать разные микросервисы, избегая при этом конфликтующих библиотек и компонентов приложений. Также нет необходимости в отдельных операционных системах, поскольку один экземпляр ОС может поддерживать несколько контейнеров с отдельными средами выполнения.
Однако микросервисы, работающие в разных контейнерах, требуют надлежащего управления, чтобы избежать совместного размещения. Вот где на помощь приходят системы управления контейнерами. Системы позволяют разработчикам использовать свои политики для определения размещения контейнеров. Kubernetes, ведущее сегодня средство оркестрации контейнеров, является одной из таких систем, которая помогает пользователям добиться этого.
Эпоха Истио
Сервисная сетка — это настраиваемый уровень инфраструктуры для приложений микросервисов. Сервисные сетки обеспечивают быструю, безопасную и надежную связь между контейнерными компонентами приложения. Реализация Service Mesh осуществляется через экземпляр прокси, называемый sidecar (на основе Envoy), который применяется к каждому экземпляру приложения. Sidecars заботятся об обмене данными между службами, мониторинге и проблемах безопасности. С помощью сервисной сетки разработчики могут сосредоточиться на разработке и поддержке, в то время как операционные группы могут сосредоточиться на обслуживании сервисной сетки и запуске приложения.
При поддержке Google, IBM и Lyft Istio стала самой популярной сервисной сеткой на рынке. До недавнего времени Kubernetes был единственной средой оркестрации контейнеров, поддерживающей Istio. Но, поскольку Kubernetes является самым популярным инструментом оркестрации контейнеров, множество поставщиков Kubernetes работают над добавлением поддержки Istio в свой управляемый сервис Kubernetes. Это свидетельствует о том, как быстро Istio принимается рынком. Однако Istio — не единственная доступная сервисная сетка. Проекты от Buoyant и HashiCorp, в частности, предлагают на рынке соответствующие сервисные сетки.
Очень классная платформа микросервисов (Vamp.io)
Компания Vamp, основанная в 2014 году, прошла долгий путь с момента своего создания. В то время как контейнеризация обеспечивает непрерывную доставку через идентичные независимые среды, инфраструктура микросервисов усложняется. Vamp помогает снизить сложность, предоставляя независимую от платформы DSL, которая обеспечивает простое тестирование AB, канареечные выпуски и функции автоматического масштабирования. Изначально идея заключалась в разработке платформы электронной коммерции на основе микросервисов и контейнерной инфраструктуры. Но эта платформа оказалась намного больше, чем то, для чего она была предназначена. Благодаря встроенному канареечному выпуску и функциям автоматического масштабирования он привлек продавцов, которые не всегда искали платформу для электронной коммерции. Вскоре Vamp стал маяком для поставщиков, которым нужны были более простые канареечные версии, поскольку сложно настроить согласованную инфраструктуру вокруг канареечных релизов.
Нико Вирхаут, генеральный директор Vamp, говорит: «Интересно, что Vamp предназначен не только для самых опытных организаций, перешедших на облачные технологии. Организации, находящиеся в самом начале своего пути к микросервисам, также тянутся к нам, поскольку мы можем помочь им правильно разложить их монолитные приложения и внедрить правильную основу с учетом будущей сложности». Vamp не зависит от поставщика и имеет встроенные драйверы, поддерживающие такие платформы, как Mesos/Marathon, Docker и Kubernetes.
Canary-тестирование с помощью Istio
Идея непрерывных выпусков может показаться привлекательной для многих разработчиков. Однако это может быть громоздко и сложно. Интеграция, развертывание и выпуск обновлений требуют автоматического масштабирования с минимальным нарушением работы. Релизы Canary могут помочь развертывать изменения регулируемым образом, а также помочь разработчикам отменить эти изменения, если это необходимо. Канарский выпуск — это процесс выпуска новых обновлений программного обеспечения, которые снижают риск, обычно связанный с развертыванием этих обновлений. Новые версии могут быть выпущены для небольшого подмножества пользователей, и в зависимости от их приема поставщики могут принять решение о внесении любых изменений или универсальном выпуске обновления. Подобно канарейкам в угольных шахтах, эти выпуски позволяют разработчикам реализовывать доставку «последней мили» и снижают риск стрессовых изменений, которые могут привести к сбою приложения. Этот метод необходим для команд, работающих в режиме непрерывной доставки.
Выпуск Canary требует доступа к метрикам для мониторинга работоспособности нового выпуска и управления поэтапным процессом развертывания. Если новая версия по какой-то причине не работает, изменения можно легко отменить с минимальным ущербом. Vamp использует Istio для эффективного выпуска канареечных версий и автоматического масштабирования. Концептуально Istio похож на существующую архитектуру шлюза Vamp. Istio использует интеллектуальный прокси-сервер в качестве своей сервисной сетки и использует правила маршрутизации для управления маршрутизацией запросов внутри сервисной сетки. С помощью Istio Vamp поддерживает множество политик развертывания: от базовых канареечных выпусков с ручным управлением до постепенных развертываний с учетом времени и многоэтапных региональных развертываний на основе показателей с функцией автоматического отката.
Вамп начал с создания правил маршрутизации для управления взвешенным трафиком на основе процентов. Это было основой простой функциональности канареечного выпуска. После того, как это было сделано, Вамп работал над добавлением политики автоматического отката, которая приостанавливала бы развертывание и возвращала трафик к исходной версии приложения, если работоспособность более новой версии не соответствовала заранее определенному стандарту. Метрики работоспособности, используемые для реализации этой политики, представляют собой определяемую пользователем комбинацию метрик работоспособности/готовности Kubernetes, текущего среднего времени отклика и номинального времени отклика, а также соотношения 5xx ошибок и 2xx ответов для HTTP-трафика. Как только это было устранено, с помощью Istio Vamp смог добавить условную маршрутизацию. Теперь можно применять условия, основанные на значениях определенных заголовков HTTP. Эти условия могут помочь дифференцировать трафик, исходящий от устройств в общедоступных сетях, таких как мобильные устройства или устройства ITO, например, в VPN.
Вампирское будущее
По словам Нико Вьерхаута, «у нас большие планы по расширению, и у нас уже есть ряд крупных корпоративных организаций как в Европе, так и в США, которые добились отличных результатов от использования нашего сервиса». С этой целью Vamp работает над разработкой функций корпоративного уровня, которые нужны ее крупнейшим клиентам. Vamp также планирует расширять свое сообщество с открытым исходным кодом. На данный момент Vamp выделяется из толпы, поскольку предлагает независимый от поставщика пакет, в отличие от пяти ведущих поставщиков облачных услуг, чьи услуги специально разработаны для работы только в пределах их собственного облака. Vamp также обеспечивает уровень абстракции над конфигурациями контейнеров, который определяет, как будут настроены балансировщики нагрузки, такие как HAProxy.
Несмотря на то, насколько важны эти вещи, слава Vamp заключается в надежном управлении канареечными релизами. Vamp помогает командам разработчиков работать над разработкой приложений и обновлений, не заботясь о рисках, связанных с выпуском новых обновлений. Это помогает им выпускать свои обновления для небольшого процента своей пользовательской базы, и, если прием кажется удовлетворительным, помогает им постепенно масштабироваться. Этот подход к ограничению радиуса действия сбоев служит для выпуска стабильных и безопасных развертываний без значительных простоев. Предприятия переходят на платформу микросервисов, чтобы помочь в разработке приложений более эффективно, а канареечные выпуски становятся широко распространенным методом, позволяющим избежать рисков. Вот почему решение Vamp является своевременным и многообещающим.