Что такое инфраструктура как код (IaC)?

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

Инфраструктура как код

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

Императивный и декларативный подходы

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

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

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

Изменяемая и неизменяемая инфраструктуры

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

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

Выгода для DevOps

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

Статьи по теме

Исследования по теме