Ручная настройка серверов и облачных ресурсов может быть вполне эффективной на старте. Проблема появляется позже, когда окружений становится несколько, изменений больше, а никто уже точно не помнит, чем production отличается от staging.
Какую проблему мы решаем
Infrastructure as Code описывает инфраструктуру в виде файлов, которые можно хранить в системе контроля версий, проверять и применять повторяемо.
Главный эффект — инфраструктура перестаёт быть серией уникальных ручных действий. Она становится состоянием, которое команда может воспроизвести.
Что получает бизнес
Бизнес получает меньшую зависимость от конкретных людей и более предсказуемые изменения. Если окружение можно поднять повторно по описанию, восстановление после серьёзной ошибки становится реальнее.
IaC также упрощает масштабирование компании: новые окружения, регионы или проекты не обязательно настраивать с нуля вручную.
Ещё одна выгода — лучше контролируется риск изменений. Инфраструктурное изменение можно увидеть до применения, обсудить и связать с конкретной причиной.
Что получает команда
Команда получает историю изменений, review и повторяемость. Исчезает часть «магии», когда один сервер работает только потому, что кто-то два года назад выполнил на нём неизвестную команду.
Но инфраструктурный код тоже нужно проектировать, тестировать, обновлять и поддерживать.
Что получает клиент
Клиент напрямую IaC не видит. Он получает более предсказуемые релизы, быстрее восстановленные окружения и меньше отличий между тем, что тестировалось, и тем, что оказалось в production.
Чем мы за это платим
Цена — время на автоматизацию и дисциплину. Небольшое ручное изменение иногда действительно быстрее сделать напрямую, но если оно не попало в код, реальное состояние начинает расходиться с описанным.
Есть риск и другого рода: ошибка в автоматизации масштабируется лучше ручной ошибки. Один неверный шаблон может изменить сразу много ресурсов.
Когда IaC не нужно усложнять
Для очень маленького одноразового окружения сложная система модулей и пайплайнов может стоить дороже самой инфраструктуры.
Полезность IaC растёт с количеством окружений, людей, повторяющихся изменений и требованиями к восстановлению.
Что стоит спросить перед решением
- Можем ли мы восстановить окружение без памяти конкретного человека?
- Знаем ли мы, кто и зачем изменил инфраструктуру?
- Насколько production отличается от тестовых сред?
- Как мы проверяем изменения до применения?
- Что произойдёт, если автоматизация применит ошибку сразу ко многим ресурсам?
В итоге
Infrastructure as Code — не про то, чтобы «всё превратить в код». Это способ сделать инфраструктурные изменения воспроизводимыми и управляемыми.
Для бизнеса ценность появляется, когда инфраструктура перестаёт быть набором ручных исключений и становится системой, которую можно восстановить, проверить и повторить.