Разделы

ПО Бизнес Телеком Интернет Цифровизация ИТ в банках ИТ в госсекторе Ритейл Маркет

Обзор концепции Infrastructure as code: что это такое, преимущества, недостатки

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

Что такое Infrastructure as code

Infrastructure-as-Code (IaC) это методология, которая позволяет создавать, управлять и автоматизировать инфраструктуру, используя код. Эта методология приобретает все большую популярность в индустрии, поскольку она позволяет ускорить и упростить развертывание и управление инфраструктурой, снизить риски и увеличить гибкость и масштабируемость.

Михаил Волков

эксперт по развитию Softline Cloud

IaC может значительно улучшить процесс разработки и управления инфраструктурой ИТ-системы, повысить ее надежность и ускорить процесс внедрения изменений в систему. Однако для использования этой концепции требуется достаточный уровень знаний в области программирования и DevOps, а также инвестиции в инфраструктуру и инструменты.

Softline активно развивает сервисы для облегчения управления как обычной, так и мультиоблачной ИТ-инфраструктурой. Особого внимания заслуживает семейство продуктов Cloudmaster:

  • Сервис Clouder позволяет автоматизировать рутинные операции системного облачного администрирования, моментально создавать виртуальные машины и планировать квоты ресурсов для подразделений.
  • Сервис Coster помогает оптимизировать затраты на мультиоблачную ИТ инфраструктуру и повысить экономическую эффективность использования облачных ресурсов.

Современный IaC становится все более сложным и интеллектуальным. Вот некоторые направления, в которых IaC будет активно развиваться в ближайшее время:

  • Расширение функциональности инструментов:
    Инструменты IaC будут развиваться в направлении расширения функциональности и возможностей. Они будут включать все больше интеллектуальных функций, таких как автоматическое обнаружение ошибок и оптимизация инфраструктуры.
  • Более широкое использование:
    В будущем все больше организаций будет использовать IaC для развертывания и управления своей инфраструктурой. Это будет способствовать росту интеграции между инструментами IaC и другими системами управления.
  • Развитие средств проверки конфигурации:
    Средства проверки конфигурации будут развиваться в направлении улучшения качества проверки и ускорения процесса обнаружения ошибок.
  • Расширение IaC на новые области:
    IaC уже используется для управления инфраструктурой виртуальных машин, но в будущем он может расшириться на новые области, такие как управление сетевой инфраструктурой, управление контейнерами и микросервисами, управление событийной инфраструктурой и другие.
  • Рост в области безопасности:
    Безопасность будет становиться все более важной областью в IaC, и инструменты IaC будут развиваться в направлении улучшения безопасности и защиты от атак.

Родион Цалкин

руководитель направления контейнерных сервисов #CloudMTS

Есть множество инструментов для реализации подхода Infrastructure as a Code, например Terraform, Ansible, Chef, Puppet, Crossplane.

Все они решают разные задачи и могут использоваться как вместе, так и по отдельности. Например, Terraform чаще всего используют для развертывания инфраструктуры: виртуальных машин, балансировщиков, кластеров Kubernetes и т.д. Продукты вроде Ansible, Chef, Puppet обычно применяют для ее последующей конфигруации и развертывания на ней нужного ПО. А Crossplane реализует IaC-подход средствами Kubernetes.

Как и какие решения использовать, зависит от уровня команды и задач, ведь чем мощнее инструмент, тем сложнее им управлять.

Виды

Есть два подхода к IaC: декларативный и императивный. Отдельно рассматривается интеллектуальный вид.

Императивный (процедурный)

Императивный подход определяет конкретные команды, необходимые для достижения желаемой конфигурации. Далее эти команды должны быть выполнены в правильном порядке.

Декларативный (функциональный)

Декларативный подход определяет желаемое состояние системы и то, какие ресурсы вам нужны и какими свойствами они должны обладать, а инструмент IaC поможет настроить его. Декларативный подход также сохраняет список текущего состояния системных объектов, что упрощает управление отключением инфраструктуры.

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

Инструменты IaC часто могут работать в обоих подходах, но, как правило, предпочитают один подход другому.

Интеллектуальный

Интеллектуальный подход считается самым сложным в описании, так как он указывает порядок конфигурирования инфраструктуры. Для использования готовых конфигураций IaC предусматривает две методики: push и pull. Разница между ними — в инициаторе изменений конфигураций целевого хоста:

  • В режиме pull инициатором получения своей конфигурации выступает сам хост.
  • В push режиме он получает конфигурацию с управляющего сервера.

Тенденции в области IaC

Одним из ключевых трендов в развитии IaC на ближайшие годы будет безопасность. При использовании инфраструктуры как кода существует несколько рисков безопасности, например, возможность внесения уязвимостей в инфраструктуру через код IaC, который не был должным образом проверен или протестирован.

Родион Цалкин

руководитель направления контейнерных сервисов #CloudMTS

Если код IaC содержит слабые пароли, неправильно настроенные средства контроля безопасности или другие уязвимости, он может сделать инфраструктуру открытой для атак. Небезопасный IaC может привести к тому, что все развернутые экземпляры серверов будут содержать проблемы безопасности.

Также злоумышленники могут скомпрометировать платформу виртуализации или получить доступ к конфиденциальным данным, хранящимся в виртуальной среде.

Именно поэтому компаниям, практикующим этот подход, нужно тщательно контролировать изменения в коде, использовать инструменты контроля доступа, в том числе технологии для автоматической проверки и мониторинга кода на предмет уязвимостей и наличия паролей в открытом виде.

Преимущества IaC

Скорость и эффективность. Автоматизированная подготовка и управление быстрее и эффективнее, чем ручные процессы. Это касается не только выделенных ресурсов и виртуализации, но и баз данных, сетей, управления учетными записями пользователей и других связанных служб. IaC также может включать код, который автоматически масштабируется (добавляет или отключает среды и ресурсы, когда они больше не нужны).

Последовательность. Разработчики программного обеспечения могут использовать код для распространения и развертывания серверов и приложений в соответствии с бизнес-практиками, а не применять его к системным администраторам в среде DevOps.

Согласование с DevOps. С настройкой инфраструктуры, написанной в виде кода, она может пройти тот же контроль версий, автоматическое тестирование и другие этапы конвейера непрерывной интеграции и непрерывной доставки (CI/CD), которые разработчики используют для кода приложения.

Организация может выбрать сочетание инфраструктуры как кода с контейнерами, которые отделяют приложение от инфраструктуры на уровне операционной системы. Поскольку ОС и аппаратная инфраструктура подготавливаются автоматически, а приложение инкапсулируется поверх них, эти технологии дополняют друг друга для различных целей развертывания, таких как тестирование, подготовка и производство.

Михаил Волков, эксперт по развитию Softline Cloud, отмечает еще несколько важных пунктов:

  • Автоматизация процесса создания, управления и обслуживания инфраструктуры.
  • Уменьшение вероятности ошибок и повышение надежности системы благодаря стандартизации и автоматизации процессов.
  • Более быстрая и эффективная масштабируемость системы.
  • Упрощение процесса восстановления системы после сбоя или отказа.
  • Более быстрое и прозрачное внедрение изменений в систему.

Недостатки IaC

Среди недостатков IaC выделяют:

  • Значительное время и усилия, которые нужно потратить на настройку и тестирование инфраструктуры в начале проекта.
  • Необходимость наличия знаний в области программирования и DevOps.
  • Может потребовать значительных инвестиций в инфраструктуру и инструменты.

Кроме того, Infrastructure-as-Code нуждается в дополнительных инструментах, таких как система управления конфигурацией и автоматизацией/организацией, в результате чего в системе могут возникать ошибки. Любые ошибки могут быстро распространяться по серверам, особенно там, где есть обширная автоматизация, поэтому очень важно контролировать версии и осуществлять всестороннее предварительное тестирование.

Если администраторы изменяют конфигурации сервера за пределами установленного шаблона Infrastructure-as-Code, возникает вероятность отклонения конфигурации без использования дополнительных инструментов управления изменениями. Важно полностью интегрировать Infrastructure-as-Code в системное администрирование, ИТ-операции и практики DevOps с помощью хорошо документированных политик и процедур.

Если устаревшие инструменты безопасности и мониторинга не подходят для обработки IaC, потребуются дополнительные инвестиции в дополнительные инструменты с дополнительным обучением и тестированием для их интеграции в рабочие процессы.

Еще одна проблема с Infrastructure-as-Code заключается в том, что она возлагает на разработчиков больше ответственности за понимание того, как писать эффективный код, который легко транслируется в производственные среды.