Платформенный инжиниринг призван решать проблемы, с которыми сталкиваются разработчики на трех больших этапах типичного жизненного цикла DevOps: разработка, развертывание, эксплуатация, пишет на портале The New Stack Мурли Тирумале, генеральный директор подразделения Portworx компании Pure Storage.

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

Давайте рассмотрим проблемы, с которыми сталкиваются разработчики на трех крупных этапах типичного жизненного цикла DevOps: разработка, развертывание, эксплуатация.

Разработка

На этой фазе разработчикам необходимо сосредоточиться на переводе бизнес-логики в код, собрать и протестировать код, а также убедиться, что он написан так, чтобы правильно масштабироваться и работать на целевой производственной инфраструктуре. Такие инструменты и подходы, как GitOps, Jenkins и Docker, значительно облегчают разработчикам непрерывные циклы этой фазы. А целевые инфраструктуры, как Kubernetes, позволяют разработчикам тестировать масштабируемость и отказоустойчивость своих приложений благодаря присущим Kubernetes автоматизации и оркестровке.

Однако одна из серьезных проблем заключается в том, что в дополнение к стеку приложений разработчикам теперь необходимо быть «осведомленными об инфраструктуре» в течение жизненного цикла DevOps. Это не так важно при использовании базовых функций Kubernetes, таких как Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE) или OpenShift, которые доступны на всех платформах Kubernetes, поскольку инфраструктура как код (Infrastructure as Code, IaC) позволяет заранее определить, повторить и надежно настроить инфраструктуру. Но что делать, если приложению требуются отвечающие за надежность функции, связанные с сетью, хранилищем или безопасностью?

Развертывание

Масштабирование приложения для многих пользователей без повторных трудозатрат — ключевое требование на этапе развертывания. IaC и инструменты на базе API полезны, но не являются полноценным решением. Хотя они и создают программный интерфейс, они не уменьшают трудоемкость управления инфраструктурой.

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

Эксплуатация

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

Разработчики также собирают обратную связь с помощью инструментов наблюдаемости и мониторинга, чтобы планировать улучшения, усовершенствования и модификации приложения в течение следующего цикла разработки. И опять же, когда требуется расширенная функциональность, выходящая за рамки базовой, эти усилия могут увеличиваться экспоненциально. Для каждого облака может потребоваться своя оптимизация, улучшения могут вести себя по-разному в разных облаках, а модификация и поддержка специфических исправлений для каждого облака могут привести к серьезному техническому долгу и «спагетти» из различных кодовых баз в зависимости от целевого облака.

Платформенный инжиниринг в помощь

Платформенный инженер, носящий свой плащ DevOps, является современным организационным противоядием для этих потребностей разработчиков. Как практика, платформенный инжиниринг быстро развивается и включает в себя инструменты для разработчиков и прямые способы связать платформу развертывания приложений с Git и конвейером GitOps. Он также может поддерживать «сине-зеленые» развертывания для легкого отката к предыдущей версии, поэтапные «канареечные» развертывания и множество инструментов на основе пространства имен и LDAP, используемых для обеспечения безопасности и доступа для различных групп пользователей на основе политик.

Управление инфраструктурой и данными — ключевые элементы внутренней платформы для разработчиков (IDP), обеспечивающей самообслуживание разработчиков с инструментами для эластичного управления вычислениями, сетями, хранилищами и сервисами данных. Защитные ограждения для каждого сценария использования и пространства имен необходимы для обеспечения высокой доступности, аварийного восстановления и активного отката к предыдущим конфигурациям приложений и инфраструктуры и данным — с использованием моментальных снимков в случае проблем с обновлением любой части стека приложений.

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