В последние несколько лет наблюдается резкий рост спроса на географически распределенные приложения. Это сделало сложным, если не невозможным, надлежащее управление ими. Одним из способов решения проблемы является рассмотрение и обработка всех компонентов и процессов как кода, пишет на портале TechBeacon независимый консультант Джойдип Канджилал.
Эту практику уже переняли Amazon, Confluent и другие высокотехнологичные компании.
Так что же нужно знать о подходе «все как код» (everything-as-code) — о его особенностях, преимуществах, о том, как он может сочетаться с потребностями вашей организации?
Проблема: разрастание конфигурации
Ручные процедуры больше не могут использоваться для инициализации, обновления, мониторинга и вывода из эксплуатации тысяч вычислительных конечных точек, таких как виртуальные машины, контейнеры и всевозможные вычислительные устройства. Мы живем в технологической эре, когда компании больше не полагаются на физические серверы, расположенные в корпоративном дата-центре.
Прежде чем приступить к созданию ПО, необходимо настроить и развернуть рабочий процесс, например CI/CD (непрерывная интеграция/доставка). Эти рабочие процессы создаются на основе статических скриптов и конфигурационных файлов, и поэтому в них может отсутствовать версионность и тестируемость. По мере увеличения команды эти файлы конфигурации могут быстро рассинхронизироваться. Вам потребуется ручная работа, чтобы поддерживать все в рабочем и актуальном состоянии.
Эта проблема еще больше возросла с началом пандемии, поскольку компаниям приходится иметь дело с изменениями в рабочих планах в условиях, когда их сотрудники удалены друг от друга и разбросаны по всему миру. Таким образом, необходимость устранения ручных и повторяющихся задач как никогда высока. К счастью, вы можете использовать подход «все как код», чтобы программно управлять инфраструктурой так же, как вы пишете код приложения.
Что такое «все как код»
Подход «все как код» рассматривает операции, инфраструктуру, безопасность, управление конфигурацией и соответствие нормативным требованиям как прикладной код, так что все происходит в рамках одной и той же практики разработки ПО. Это методология или практика, при которой вы пишете инфраструктуру как ПО, где все выражается в виде кода.
Другими словами, все аспекты системы рассматриваются как код, при этом акцент переносится с ручных задач на автоматизированные рабочие процессы.
«Все как код» можно распространить на такие ИТ-компоненты, как операционные системы, сетевые конфигурации и конвейеры. Использование кода на каждом этапе жизненного цикла разработки может открыть двери для автоматизации, что приведет к более быстрому созданию высококачественного ПО.
Написание кода, возможно, не является единственным способом создания ПО, конфигурирования и управления инфраструктурой, но в любом случае это необходимый навык. И эта практика стала настолько простой, что даже многие непрограммисты в вашей ИТ-группе могут писать код — например, простой код в конфигурационных файлах — для автоматизации инфраструктуры.
Как и в чем помогает «все как код»
«Все как код» может помочь вам масштабировать операции за счет повторного использования одних и тех же конфигурационных файлов и инструментов в крупномасштабных средах.
Например, вы можете воспользоваться преимуществами подхода «все как код», чтобы:
- создавать контейнеры Docker для двоичных интерфейсов приложений и использовать YAML для создания файлов Docker Compose;
- пользоваться интерфейсом командной строки Docker для размещения образов в реестре контейнеров;
- использовать Kubernetes для автоматизации развертывания и управления контейнерами.
Конечно, вы можете выполнять все эти шаги в своих DevOps-конвейерах CI/CD. Но теперь представьте, что это нужно делать много раз для разных сред. При использовании подхода «все как код» вы можете назначать параметры и значения, соответствующие каждой среде, такие как имя, количество активов и т. д. Вы даже можете создавать временные среды, а затем удалять их, когда они больше не нужны. Если бы вы делали все это вручную, это был бы громоздкий процесс, чреватый ошибками.
Шесть вещей, которые вы должны знать
Вот уроки, которые я усвоил; вы можете извлечь из них пользу, прежде чем решите внедрить «все как код» на своем предприятии.
1. «Все как код» помогает разработчикам ПО и ИТ-инженерам работать более эффективно
Они могут воспользоваться преимуществами этого подхода для масштабирования своих операций путем повторного использования конфигурационных файлов в различных средах. «Все как код» помогает снизить риск человеческих ошибок и повышает согласованность ИТ-систем и процессов. Вам не придется беспокоиться о потере институциональных знаний, если сотрудник, управлявший критически важной системой, захочет покинуть организацию.
2. Изменение менталитета — необходимое условие
Специалисты по ИТ-операциям должны перенять менталитет разработчиков и автоматизировать все и везде, где это возможно. Команды разработчиков и операционистов должны работать вместе, чтобы улучшить процессы и разработать ПО, которое может быстрее выйти в производство.
3. Успех во многом зависит от усилий вашей команды
Лидеры команд должны уделять особое внимание эмпатии, обратной связи и эмоциональному состоянию членов команды. Эмпатия помогает членам команды понять, что происходит с их коллегами и чем они могут помочь. Обратная связь помогает командам выявлять проблемы и отмечать успехи. Эмоциональное внимание помогает укрепить уверенность и надежность в команде.
4. Способность следовать высококачественным процедурам — одна из наиболее привлекательных черт
Это подобно тому, что используется в жизненном цикле разработки ПО. Например, вы можете использовать обзоры кода и запросы на исправление ошибок, чтобы убедиться, что какой-либо член команды, как минимум, знает, что собой представляет компонент инфраструктуры или конвейер. Автоматизация здесь очень важна, поскольку с помощью инструментов статического анализа можно в режиме реального времени получить информацию о несоблюдении лучших практик и рекомендаций по улучшению кода.
5. Тестирование кода инфраструктуры является сложным, поэтому необходимо создавать автоматизированные тесты
Чтобы правильно протестировать код инфраструктуры, необходимо развернуть его в реальной среде и убедиться, что он работает так, как задумано. Например, Terratest — это инструмент с открытым кодом, который вы можете использовать для этой цели. Он умеет тестировать API Kubernetes, Docker, Google Cloud Platform и Amazon Web Services, а также выполнять команды из командной строки локально и на удаленных серверах.
6. Не определяйте всю инфраструктуру для всех сред — разработка, тестирование и производство — в одном файле
Этот запрет также относится к любому набору файлов, которые вы развертываете как единое целое. Если ваша инфраструктура будет определена в одном месте, вам потребуются права доступа или модификации чего-либо. В результате ваш код будет небезопасным и рискованным. Чем больший объем кода у вас находится в одном месте, тем сложнее его осмысливать, тестировать, просматривать и поддерживать со временем.
Как начать
Команды разработчиков находятся под давлением необходимости обеспечить скорость, гибкость и точность — именно это и обеспечивает «все как код». Чтобы начать его применение, вам необходимо определить политики, определяющие порядок создания, развертывания и мониторинга ПО.
Поскольку «все как код» позволяет разрабатывать и управлять всем конвейером доставки приложений, вам следует определить все рабочие процессы как код.