IaC, деплой и наблюдаемость: карта раздела
Краткая версия учебника показала, что инфраструктура — это тоже код, а деплой и наблюдаемость — обязанность инженера, а не опция. За один урок ты поднял сервер Terraform’ом, настроил его Ansible-плейбуком, поставил Nginx с сертификатом от Certbot и подключил Prometheus с Grafana. Этого хватает, чтобы задеплоить pet-проект за вечер. Но этого не хватает, чтобы ответить на вопросы, которые начнутся, когда проект вырастет: кто правил инфраструктуру в обход кода? Почему terraform apply предлагает пересоздать сервер после чужого «быстрого фикса» в веб-консоли? Почему алерт приходит через десять минут после падения? Что вообще считать «нормальной» латентностью?
Этот раздел — глубокое погружение в то, что отличает «сервер, на котором крутится приложение», от продакшена как инженерной системы. Мы разберём Terraform под капотом: как HCL превращается в граф ресурсов, зачем нужен state и почему его потеря страшнее утечки исходников, как устроен remote backend с блокировкой, чем модуль отличается от workspace и как наводить порядок в уже существующей инфраструктуре через import. Параллельно соберём полный Ansible-пайплайн: инвентари, роли, шаблоны Jinja2, vault для секретов, идемпотентность как принцип, а не багфикс. Отдельно посмотрим на Pulumi — тот же IaC, но на TypeScript, с циклами, условиями и тестами.
Вторая половина раздела — путь трафика и сигналы системы. Nginx разберём архитектурно: master/worker-процессы, жизненный цикл соединения, upstream-балансировка (ngx_http_upstream_module) со всеми стратегиями, сжатие, кэширование, rate limiting, TLS по всем канонам (протоколы, шифры, HSTS, OCSP stapling) и три стратегии выкатки — rolling, blue-green и canary — с честной ценой каждой. Завершим раздел наблюдаемостью: структурированные логи и Loki-стек, метрики Prometheus с PromQL-практикой, распределённый трейсинг на OpenTelemetry и алертинг как инженерная дисциплина со SLO, error budget и on-call.
Порядок глав
Заголовок раздела «Порядок глав»-
Terraform в деталях: state, модули, workspaces — фундамент. HCL-основы, ресурсы и data-источники, локалы и выводы, local vs remote state с блокировкой, весь цикл
init → plan → apply → destroy, модули и их версионирование, workspaces, dynamic blocks,countиfor_each, drift-detection в CI, импорт существующей инфраструктуры. Финал — полный пример: сервер, DNS-запись и вывод IP. -
Ansible и Pulumi — настройка и альтернатива. Инвентари и ad-hoc команды, полный плейбук (Docker, деплой приложения, Nginx через template, handlers, tags), роли и ansible-galaxy, vault для секретов, идемпотентность,
--check/--diff. Затем Pulumi: стеки, конфиг, ресурсы на TypeScript и честное сравнение с Terraform. -
Nginx, TLS и стратегии деплоя — периметр. Архитектура master/worker, полный конфиг reverse proxy с upstream-балансировкой (
least_conn,ip_hash, взвешенная), gzip/brotli, кэширование статики, rate limiting-зоны, certbot standalone/webroot, production-grade SSL-блок, HTTP→HTTPS редирект, blue-green/rolling/canary и Cloudflare как CDN/WAF перед origin. -
Логирование и метрики — первые два столпа наблюдаемости. Структурированные JSON-логи на pino, уровни и сэмплирование, Loki-стек с Promtail и LogQL, Grafana-дашборды, кратко про ELK. Метрики: scrape-конфиги Prometheus, Node Exporter, cAdvisor, собственные метрики через prom-client и практический PromQL —
rate,increase,histogram_quantile. -
Трейсинг и алертинг: SLO, error budget, on-call — третий столп и реакция. OpenTelemetry: trace/span, propagation контекста, развёртывание Jaeger, инструментация Node.js, связывание логов и трейсов. Alertmanager: routes, inhibit_rules, receivers в Telegram/webhook, полные примеры правил (CPU, down, latency, error rate), SLI/SLO и error budget, основы on-call ротации.
Как работать с разделом
Заголовок раздела «Как работать с разделом»Иди строго по порядку: Ansible-плейбуки бессмысленны без серверов от Terraform, Nginx-конфиги деплоит Ansible, а метрики и алерты имеют смысл только после того, как приложение реально ходит через Nginx. Не пропускай «Типичные ошибки и грабли» — это концентрат инцидентов: state в git, ручные правки в консоли облака, алерты без действия, включённый HSTS на полгода до отладки HTTPS.
Чем заканчивается раздел
Заголовок раздела «Чем заканчивается раздел»После пятой главы у тебя будет: инфраструктура, полностью описанная Terraform-модулями с remote state и drift-контролем в CI; Ansible-роли, идемпотентно настраивающие сервер от Docker до Nginx; production-grade TLS-терминация с HSTS и авто-продлением; выкатка без даунтайма; структурированные логи в Loki, метрики в Prometheus с RED-дашбордом, трейсы в Jaeger и алертинг с SLO и error budget. Это полный ответ на вопрос «расскажите о вашем продакшене» — не набор слов, а работающая система.