Infrastructure as Code / инфраструктура как код (IaC) — это подход для управления и описания инфраструктуры ЦОД через конфигурационные файлы, а не через ручное редактирование конфигураций на серверах или интерактивное взаимодействие. Согласно IaC процесс настройки инфраструктуры аналогичен процессу программирования ПО. Этот подход может включать в себя как декларативный способ описания инфраструктуры (используется чаще), так и через скрипты. По сути, IaC положил начало устранению границ между написанием приложений и созданием сред для этих приложений. Приложения могут содержать скрипты, которые создают свои собственные виртуальные машины и управляют ими. Это основа облачных вычислений и неотъемлемая часть DevOps.
IaC использует высокоуровневый язык описания кода для автоматизации предоставления ИТ-инфраструктуры. Эта автоматизация избавляет разработчиков от необходимости вручную выделять и управлять серверами, операционными системами, подключениями к базам данных, хранилищами и другими элементами инфраструктуры каждый раз, когда нужно написать, протестировать или развернуть программное приложение.
Преимущества IaC:
- Ускорение производства и вывода продукта на рынок
Автоматизация IaC значительно ускоряет процесс предоставления инфраструктуры для разработки, тестирования и промышленных инсталляций (а также для масштабирования или отключения производственной инфраструктуры по мере необходимости).
- Стабильность среды, устранение дрейфа конфигураций
Дрейф конфигурации происходит, когда произвольные изменения и обновления конфигурации приводят к несовпадению сред разработки, тестирования и развёртывания. Это может привести к проблемам при развёртывании, уязвимостям безопасности и рискам при разработке приложений и сервисов, которые должны соответствовать строгим нормативным стандартам. IaC предотвращает дрейф, каждый раз предоставляя одну и ту же среду.
- Более быстрая и эффективная разработка
Упрощая предоставление инфраструктуры и повышая её консистентность, IaC ускоряет каждый этап жизненного цикла доставки ПО. Разработчики могут быстро подготовить «песочницы» и среды непрерывной интеграции / непрерывного развёртывания (CI/CD). Быстрее предоставляются тестовые среды, инфраструктура для проверки безопасности и юзабилити. А когда код проходит тестирование, приложение и производственная инфраструктура, в которых код работает, развёртываются за один шаг.