Паттерны в Terraform для борьбы с хаосом и ручной рутиной на крупных и долгих проектах Инфраструктура как код
DevOps Team Lead в Ixtens. Начинал с сетевого админа в пятом общежитии НГУ 20 лет назад, сейчас с командой поддерживают инфраструктуру в AWS для крупного ecommerce.
Казалось бы, разработчики Terraform предлагают достаточно удобные best practices для работы с AWS-инфраструктурой. Только есть нюанс.
Со временем количество окружений увеличивается, в каждом появляются особенности. Появляется почти копия стека приложений в соседнем регионе. И Terraform-код нужно аккуратно скопировать и отредактировать согласно новым требованиям или сделать снежинку.
Через год-другой папка с Terraform-кодом превращается в снежный ком: много похожих ресурсов, но каждый описан чуть-чуть по-другому. Когда появляется breaking change, то необходимо обновить значительное количество кода, проверить его на соответствие реальным ресурсам. Прибавим сюда постоянные попытки точечного рефакторинга, чтобы улучшить полученный хаос. В итоге получаем кучу кода, обслуживание которого обходится весьма дорого.
Мой доклад — про паттерны размещения кода, нацеленные на упрощение автоматизации и дальнейшего развития. Расскажу, как работают такие паттерны и приведу примеры кода. Надеюсь, пригодится всем, кто работает или планирует работать с Terraform вдолгую.
Будет полезно посмотреть доклад Антона Бабенко http://www.highload.ru/moscow/2018/abstracts/3762