dev-tools
Словарь ↗Инфраструктура как код (Infrastructure as Code, IaC)
Инфраструктура как код (IaC) — это практика определения и управления облачной инфраструктурой — серверами, сетями, базами данных, балансировщиками нагрузки, разрешениями — через машиночитаемые файлы конфигурации, хранящиеся в системе контроля версий, вместо ручного прохождения по веб-консоли облачного провайдера для создания и настройки ресурсов вручную. Инструменты включают Terraform (облачно-независимый, наиболее широко распространённый), AWS CloudFormation и CDK (специфичные для AWS) и Pulumi (IaC с использованием языков программирования общего назначения вместо выделенного формата конфигурации). Почему это важно для разработчиков AI/SaaS: вручную настроенная инфраструктура («ClickOps») хрупка и невоспроизводима — никто не может надёжно вспомнить или задокументировать каждый клик, приведший к рабочему production-окружению, что делает восстановление после сбоев, паритет окружений (соответствие staging и production) и введение новых членов команды в курс дела мучительно медленными и подверженными ошибкам. IaC решает это так же, как контроль версий решает это для кода приложения: изменения инфраструктуры проходят через проверяемый diff, историю изменений, и то же самое окружение можно надёжно воссоздать с нуля — критично для настройки по-настоящему идентичного staging-окружения или быстрого восстановления после катастрофического сбоя в облачном регионе. Как это работает: инфраструктура декларативно описывается в файлах конфигурации (например, HCL от Terraform) — «Мне нужен S3-бакет с именем X с такими-то разрешениями, экземпляр Postgres RDS такого-то размера и группа безопасности, разрешающая трафик на порту 443» — и этап планирования сравнивает это желаемое состояние с фактическим текущим состоянием инфраструктуры, производя diff того, что будет создано, изменено или уничтожено. Человек (или автоматизированный конвейер) проверяет и утверждает этот план перед его применением, после чего инструмент вызывает API облачного провайдера, чтобы привести реальность в соответствие с задекларированной конфигурацией. Практический пример: команде SaaS нужно поднять новое staging-окружение, идентичное production, для тестирования крупного релиза. Поскольку вся их инфраструктура определена в Terraform — VPC, размер и конфигурация экземпляра базы данных, правила балансировщика нагрузки, разрешения IAM — они запускают `terraform plan -var environment=staging`, чтобы предпросмотреть, что именно будет создано, просматривают план (47 ресурсов для создания) и запускают `terraform apply`, чтобы развернуть всё окружение с нуля примерно за десять минут, гарантированно точно соответствующее конфигурации production, поскольку сгенерировано из идентичной кодовой базы, просто с другим набором переменных — против дней ручной, подверженной ошибкам реконструкции, если бы окружение изначально было построено вручную. Поскольку вся конфигурация живёт в системе контроля версий вместе с кодом приложения, любое случайное расхождение между staging и production — например, кто-то вручную подправил настройку группы безопасности через консоль — чётко проявляется как неожиданный diff при следующем запуске `terraform plan`, вместо того чтобы незаметно вызвать сюрприз «работает в staging, ломается в production».
Похожие термины