Короткий ответ
Инфраструктурный техдолг — уже принятый компромисс, который удорожает следующие изменения и повышает эксплуатационный риск. Примеры: ручные ресурсы вне IaC, drift, неподдерживаемые версии, секреты или адреса в конфигурации.
Как это работает подробнее
Долг приложения чаще обнаруживают review, тесты и анализаторы. Инфраструктурный долг может годами не проявляться, пока ресурс не потребуется воспроизвести, обновить или восстановить после сбоя.
- Воспроизводимость. Ручное состояние нельзя надёжно восстановить в другом окружении.
- Изменяемость. Устаревшие версии и связанные конфигурации блокируют безопасные обновления.
- Риск. Цена долга проявляется во время инцидента, когда времени на исследование меньше всего.
Пример кода
legacy-worker.tf
resource "aws_instance" "legacy_worker" {
ami = "ami-0abcdef1234567890"
instance_type = "t3.medium"
subnet_id = "subnet-0123456789abcdef0"
}Что использовать на практике
- Учёт. Создать отдельную задачу с владельцем, риском, стоимостью исправления и сроком пересмотра.
- Приоритизация. Сначала устранять долг, который угрожает данным, безопасности, поддержке или ближайшим изменениям.
- Погашение. Импортировать ручные ресурсы в state и выносить параметры в переменные небольшими проверяемыми шагами.
Подводные камни
- Частая ошибка. Считать работающий ресурс свободным от долга только потому, что его давно не меняли.
- Подмена понятия. Будущая полезная фича не является долгом; долг возникает из уже принятого компромисса.