техдолг что это

SvetlanaD

Участник
11.05.2018
235
1
10
18
Доброго времени суток! Возник спор с коллегой на работе - что может быть техдолг применительно в ит инфраструктуре или сети ?
Как правило это же относится к разработке насколько я понимаю.
Даже если бегло загуглить
Технический долг — это дефицит или скрытая стоимость будущей доработки, необходимой для поддержания качества продукта.
Он возникает в процессе разработки программного обеспечения, когда принимается решение в пользу более быстрой и простой, но менее оптимальной и не полностью завершённой реализации, вместо более качественного и проработанного решения.
А в инфре что может быть тех долгом ?
 
Подержите мое пиво)):sneaky: отвечу максимально предметно, без абстрактных «устаревших серверов».

Техдолг в ИТ-инфраструктуре — это не просто старое железо. Это разрыв между текущим состоянием инфраструктуры и её идеальным (целевым) состоянием, который требует дополнительных трудозатрат на поддержку, развитие и устранение аварий.

Вот классификация того, что может быть техдолгом, разбитая по уровням:

1. Аппаратный уровень (Hardware)
- «Зоопарк» поколений серверов — например, одновременно эксплуатируются машины 2015, 2018 и 2022 годов. Из-за этого нельзя применить единый образ системы (Golden Image), драйверы разнятся, возникают проблемы с совместимостью прошивок.
- Истекающие сроки поддержки (EOL) — оборудование, на которое уже не выходят обновления микрокода (Firmware) и нет запчастей (SLA на замену диска — 8 часов, а поставка — 3 дня).
- Неоднородные СХД — использование разных моделей дисковых массивов без единой системы управления, что усложняет балансировку нагрузки и миграцию данных.
- Отсутствие резерва мощностей — когда ЦОД забит под завязку, и любая замена требует физического перетыкания проводов, а не просто клика в интерфейсе управления.

2. Сетевой уровень (Network)
- «Мертвые» VLAN и ACL — за годы работы накоплено множество правил файрволов, которые никто не удалял («а вдруг пригодится»). В итоге трафик проходит 5 лишних хопов, а при сбое разбираться приходится часами.
- Устаревшие протоколы — использование STP (Spanning Tree) вместо современных VXLAN/EVPN в большой L2-сети, что создает «широковещательные штормы» при малейших изменениях.
- Несимметричный маршрутинг — когда пакеты приходят через один провайдера, а уходят через другого, из-за исторической настройки BGP. Это работает, но мешает мониторингу и отладке.
- Отсутствие автоматизации коммутации — если вы добавляете новый порт для сервера через SSH вручную, а не через NetBox/Ansible, это чистый техдолг.

3. Системный уровень (ОС и Virtualization)
- «Легаси-дистрибутивы» — CentOS 6 / Ubuntu 14.04, где закончилась поддержка пакетов. Любое новое приложение требует танцев с бубном из-за старых библиотек (glibc).
- «Снежинки» (Snowflake-серверы) — серверы, установленные 5 лет назад вручную, с уникальным набором пакетов. Их нельзя перезагрузить, потому что никто не помнит, что там запущено в автозагрузке.
- Фрагментация ресурсов — виртуалка с 4 vCPU, у которой 3 ядра находятся на одном физическом сокете, а 4-е — на другом (NUMA-дисбаланс). Это дает потерю производительности до 30%, но мигрировать VM страшно.
- Оверкоммит памяти без контроля — когда суммарная память ВМ в 2 раза больше физической RAM хоста. Пока работает — ок, но при пиковой нагрузке начинается свопинг и падение hypervisor'а.

4. Уровень данных и БД (Storage & DB)
- Индексы «вслепую» — в БД наставлено 100 индексов для ускорения старых запросов, которые уже переписаны. Теперь эти индексы жрут место и тормозят запись (INSERT/UPDATE).
- Репликация по одному потоку — настройка реплик, сделанная "на скорую руку", без параллельного применения (parallel workers). При сбое мастера Slave догоняет его сутки.
- Хранимые процедуры, завязанные на версию — код на PL/SQL, который перестанет работать при обновлении СУБД, но его никто не рефакторит.
- Отсутствие жизненного цикла данных — теплые данные лежат на дорогом NVMe, хотя должны быть на HDD или в S3-холоде.

5. Уровень конфигурации (IaC и Automation)
- «Закомментированный код» в Terraform/Puppet — половина ресурсов отмечена `count = 0` или закомментирована, но лежит в репозитории. Порождает путаницу: реальный ресурс есть в облаке или уже удален?
- Хардкод чувствительных данных — пароли и ключи, зашитые в Variables без использования Vault/Secrets Manager.
- Дрейф конфигураций (Configuration Drift) — когда Ansible показывает `ok=10 changed=5` каждую неделю, потому что кто-то правил сервер руками, и плейбук пытается вернуть "как надо".
- Устаревшие образы Packer — базовые AMI/шаблоны, собранные полгода назад, в которых дыры в OpenSSL, и каждое развертывание тянет за собой 200 обновлений через apt update.

6. Мониторинг и Observability
- Три системы мониторинга одновременно — Zabbix показывает зеленое, Prometheus красное, а Grafana серое. Никто не знает, где истина.
- Пороговые значения (Thresholds) от балды — алерты "CPU > 80%", которые спамят каждые 5 минут, но никто на них не реагирует (синдром "кричащего ребенка").
- Ошибка в телеметрии — сбор логов идет в Elastic, но уровень логирования выставлен в DEBUG для всего кластера, из-за чего логов так много, что они не индексируются (Drop-политики).

7. Процессный уровень (Документация и Teams)
- Отсутствие схемы связей (CMDB) — никто не знает, какой сервис зависит от какого Kafka-топика. Любое изменение тянет "франкенштейна" из дерганий.
- Туннели SSH как "интеграция" — когда два сегмента сети соединены не через VPN или Direct Connect, а через сохраненный SSH-туннель на ноутбуке уволенного год назад админа.
- Ручной failover — резервирование есть, но переключение происходит вручную по скрипту в блокноте, потому что автоматика сломалась после последнего апгрейда.
Как это классифицировать по степени опасности:
1. Косметический (лишние логи, неиспользуемые диски) — лечится при простое.
2. Эксплуатационный (устаревшая ОС, дрейф конфигов) — замедляет внедрение новых фич.
3. Критический (Архитектурный) — spaghetti-сети, единственная точка отказа (SPOF), отсутствие backup-решений для БД. Такой долг однажды "звонит в колокол" в 3 часа ночи.

Главная ловушка: Техдолгом становится даже самая современная система, если для её обслуживания нужен уникальный гений, который один все знает. Отсутствие документации и унификации — самый дорогой техдолг.