Learning Platform
Глоссарий Troubleshooting
Урок 21.04 · 20 мин
Средний
dockercapstonedebriefproductionnext-steps

Debrief: что узнал, production-чеклист

Финальный урок курса. Давай подведём итоги: что ты теперь знаешь, что отделяет local-стенд от prod, и куда двигаться дальше.


Что ты узнал по checkpoint’ам

Курс прошёл по 20 модулям. На каждом checkpoint’е ты узнал что-то базовое:

Модули 0-5: Основы.

  • Что такое контейнер (процесс с namespaces + cgroups), а не VM.
  • История от chroot до OCI.
  • Docker Engine vs Docker Desktop vs OrbStack / Rancher / Podman.
  • Образы, реестры, слои, manifest, digest.
  • Storage drivers (overlay2 на linux).

Модули 6-9: Build & state.

  • Dockerfile: FROM, RUN, COPY, CMD, multi-stage.
  • BuildKit и BUILDX.
  • HEALTHCHECK, USER, ENTRYPOINT vs CMD.
  • Volumes vs bind mounts: где хранить state.
  • Networks: bridge, host, custom networks, DNS внутри compose.

Модули 10-14: Compose & ops.

  • docker compose как YAML-описание стека.
  • Profiles, override, env files, secrets.
  • Postgres, MinIO, Redis в compose.
  • docker logs, exec, inspect для debug.
  • Rootless containers, USER, image scanning через Trivy.

Модули 15-19: DE-применение.

  • Python-образы: slim, multi-stage, uv для скоростной установки.
  • Реальные DE-стеки: Airflow, Kafka KRaft, Spark cluster, ClickHouse.
  • testcontainers-python для интеграционных тестов.
  • GitHub Actions: build-push-action, multi-arch, integration тесты через compose —wait.
  • Production-горизонт: приватные registries, signing, observability stack.
  • Capstone: end-to-end pipeline — Producer -> Kafka -> Spark -> ClickHouse -> Grafana.

Это base level Junior DE по контейнерам. Многие выпускники bootcamp’ов не покрывают и половины этого. Ты в strong-позиции.


Где локальный стенд != production

Capstone-стенд работает. На ноутбуке. Это не значит, что он production-ready. Что отличает prod от local:

1. High availability

Local: один Kafka broker, один Spark master, один ClickHouse. Если ноутбук перезагрузился — downtime.

Prod: Kafka cluster 3+ brokers, Spark with YARN/k8s scheduling, ClickHouse cluster с replication. Single node failure — сервис продолжает работать.

2. Persistence и backups

Local: docker volumes. Если кто-то сделал docker volume rm -f — данные потеряны.

Prod:

  • Postgres: managed RDS / Cloud SQL с point-in-time recovery, automated backups.
  • Kafka: replication factor 3, separate disks для logs.
  • ClickHouse: replicated MergeTree + бэкап через clickhouse-backup в S3.
  • Объекты в S3 / GCS с versioning + lifecycle policies.

3. Secrets management

Local: .env файл. Уязвимость, если ноутбук compromised.

Prod: Vault / AWS Secrets Manager / GCP Secret Manager. Rotation, audit log, IAM-based access.

4. Network security

Local: все контейнеры в одном compose-network. Если producer compromised, он видит ClickHouse.

Prod:

  • VPC с private subnets.
  • Security groups / Network policies (k8s).
  • mTLS между сервисами (через service mesh).
  • WAF на front edges.

5. Observability

Local: Grafana с одним дашбордом. Логи теряются после compose down.

Prod:

  • Metrics: Prometheus с long-term storage (Thanos / Cortex), retention 1-2 года.
  • Logs: централизованный ELK / Loki / Datadog, retention по compliance.
  • Traces: распределённый Tempo / Jaeger.
  • Alerting: PagerDuty / Opsgenie, escalation policies.
  • SLO / SLI: бюджет ошибок, on-call rotations.

6. CI/CD

Local: docker build, docker run.

Prod:

  • CI builds: GHA / GitLab CI / Jenkins с full тесты, security scans, signing.
  • CD: ArgoCD / Flux pull-based, или Jenkins push-based.
  • Canary / blue-green deployments.
  • Feature flags для rollout.

7. Cost management

Local: бесплатно (после стоимости ноутбука).

Prod:

  • AWS / GCP / Azure — сотни долларов в месяц минимум для small startup.
  • ECR storage costs, NAT gateway egress, k8s control plane fees.
  • FinOps practice: tagging, cost-by-team, idle resource cleanup.

Production-чеклист DE-стека

Если ты возьмёшь свой capstone и захочешь deploy в prod, вот что нужно добавить:

Infrastructure

  • Managed services для stateful: Postgres -> RDS, Kafka -> MSK / Confluent Cloud, ClickHouse -> Aiven / managed.
  • VPC/network: private subnets, security groups, NAT gateway.
  • DNS: Route53 / Cloud DNS для friendly URLs.
  • TLS: всё https. Let’s Encrypt / ACM / managed cert.

Storage и backup

  • Persistent storage на managed disks (EBS / Persistent Disk).
  • Backups: автоматические snapshots для всех stateful сервисов.
  • Restoration drills: проверь хотя бы раз в квартал, что бэкап можно восстановить.

Security

  • Secrets в Vault / Secrets Manager. НЕ в env-files на disks.
  • Image scanning: Trivy / Snyk в CI, fail на high/critical CVE.
  • Image signing: Cosign + verification в k8s admission.
  • RBAC: ServiceAccounts с minimal permissions.
  • Audit logging: CloudTrail / Audit Logs.

Observability

  • Metrics: Prometheus / Datadog, retention 13+ months.
  • Logs: structured JSON, централизованное хранение.
  • Traces: OpenTelemetry instrumentation в коде.
  • Dashboards: 1 per сервис (overview), 1 per team (SLO), 1 на pipeline (DE-level).
  • Alerting: SLO-based alerts, не на каждом 5xx.
  • Runbooks: для каждого alert — runbook, что делать.

CI/CD

  • Test pipeline: unit + integration + smoke.
  • Build pipeline: multi-arch, cache, signing.
  • Deploy pipeline: staging -> production, с approval.
  • Rollback в один клик / helm rollback.
  • Database migrations автоматизированы (Alembic / Flyway / dbt).

Operations

  • On-call rotation: кто отвечает в 3 утра.
  • Incident response процесс: P1 / P2 / P3.
  • Post-mortem culture: после инцидента документация без blame.
  • Capacity planning: monitoring of resource trends, plan ahead.
  • Disaster recovery план: что если регион упал.

Этот чеклист — не “сделать всё за месяц”. Это roadmap evolution стенда от dev-toy к prod-system.


Типичные подводные камни local vs prod

Чего junior часто не ожидает:

1. Performance в prod хуже, чем локально

Локально на ноутбуке all-on-one-host — network round-trip 0.1ms, disk SSD. В prod через VPC — 1-5ms, через регион — 50-100ms. Spark-job, который локально занимает 30 секунд, в prod может работать 5 минут.

Lesson: профилируй в prod-like среде (staging) до prod-release.

2. Resource limits ломают неожиданно

Локально OOM Killer убивает Chrome или random процесс. В k8s prod, если контейнер прыгнул на 1.1GB при limit 1GB — Pod killed по OOMKilled.

Lesson: мониторь memory usage заранее, set requests/limits realistically.

3. Сетевые правила

Локально все контейнеры друг друга видят. В prod NetworkPolicies могут заблокировать legitimate traffic. Producer не может достучаться до Kafka — “connection refused” — но root cause: NetworkPolicy denies egress.

Lesson: start permissive, постепенно tighten. Логируй denied traffic.

4. Time zones

Локально на Mac TZ Europe/Moscow или UTC. В prod в US-East-1 контейнеры в UTC. Spark парсит timestamp без TZ — результаты сдвинуты.

Lesson: всё в UTC. Convert только для display.

5. Случайные локальные данные

В CI у тебя свежий Postgres, в prod — legacy data с anomalies. Тесты на pristine data проходят, prod падает на edge cases.

Lesson: integration tests на real-like data (anonymized samples), а не fixtures.

6. Latency vs throughput

Локальный producer — 10 EPS — легко обрабатывается. Prod — 10000 EPS spikes. Spark-cluster, который локально OK, в prod OOM на spike.

Lesson: load test before deploy. Используй realistic данные.

7. Logging volume

Локально DEBUG-логи — удобно. В prod 10000 RPS × 50 log lines/request = 500k log lines / sec = $$$ в Datadog.

Lesson: log levels strict. DEBUG только в local / staging.


Что взять в работу сразу

Если ты junior и сегодня вышел на работу, что применить из курса в первый месяц:

  1. Подними compose-стенд для своего pipeline. Postgres + твоё приложение + что-то ещё. Один YAML, один up -d. Team-mates скажут спасибо.

  2. Опиши свой код через Dockerfile. Multi-stage, USER non-root, .dockerignore.

  3. Добавь healthcheck’и в compose. depends_on: condition: service_healthy.

  4. Напиши integration-тесты через testcontainers. Один тест с реальным Postgres сильнее десяти моков.

  5. Build & push в CI. docker/build-push-action + GHA cache.

  6. README.md для каждого репо. С make up инструкцией.

Эти шесть пунктов — сразу видимое улучшение качества команды. Будешь делать — через 6 месяцев станешь “тот человек, к которому ходят за совет по Docker”.


Куда дальше после курса

Kubernetes: следующий уровень после Docker Compose

Прямой next-step — наш [kubernetes-fundamentals]. Все compose-навыки переносятся: контейнеры, образы, сети, volumes — те же концепты, расширенные.

Параллельно изучи:

  • Один cloud глубоко (AWS / GCP / Azure). Не два, один.
  • Один orchestrator для workflow (Airflow / Dagster / Prefect). Не три, один.
  • Один query engine (Spark / Flink / dbt). По работе.

Книги (повторяю из 18-04, но важные):

  • Docker Deep Dive — если хочешь дополнительной глубины.
  • Kubernetes Up & Running — next book.
  • Designing Data-Intensive Applications — для DE-роли обязательно.

Pet-projects для portfolio:

  • Возьми public dataset (NYC taxi, Wikipedia clicks). Построй pipeline: download -> parse -> store -> visualize. Используй compose-стек как в capstone. Push на GitHub. Это portfolio для job interviews лучше пятен сертификатов.

Заключительное слово

Контейнеры — одна из главных революций infrastructure за последние 10 лет. До них каждый deploy был snowflake — работало “у меня на машине”. Контейнеры сделали воспроизводимость нормой.

Ты теперь говоришь на этом языке. Можешь упаковать любой код, поднять любой стек, провести интеграционные тесты, deploy в registry, мониторить. Это базовый skill 2026 года.

Но контейнеры — не серебряная пуля. Distributed systems hard. Production-incidents inevitable. Junior -> middle -> senior — это путь from “знаю инструменты” к “понимаю trade-offs” к “проектирую системы под constraints”.

Curious mindset, ownership, documentation — через 3-5 лет ты не узнаешь себя. Курс закончен, но learning только начинается.

Удачи. И помни: всегда down -v в конце local-сессии. Storage free.


Проверка знанийKnowledge check
Ты закончил курс и устроился junior DE в startup. CEO хочет "ASAP deploy капстона в prod" (у вас есть AWS). Какой минимальный production-чеклист стоит подготовить перед этим разговором?
ОтветAnswer
Минимум 5 пунктов для honest разговора. (1) Stateful сервисы -- managed: Postgres -> RDS, Kafka -> MSK или Confluent Cloud, ClickHouse -> Aiven или вынести в EBS-attached EC2. Не self-hosted на одном VM. (2) Secrets -> AWS Secrets Manager (или Parameter Store), а не .env. (3) Network -- private VPC, security groups: только Grafana exposed на интернет, остальное internal. (4) Backup и DR: автоматический snapshot RDS, ClickHouse дампы в S3. (5) Observability minimum: CloudWatch logs для контейнеров, CloudWatch alarms на critical metrics (CPU, free disk). Если CEO хочет "deploy капстона как есть на одной EC2" -- это OK для MVP, но укажи риски: единая точка отказа, нет бэкапа producer/Spark state, секреты на disk. И сразу запланируй migration path к k8s + managed services через 3-6 месяцев. Это не блок deploy, но и не "production-grade".

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 4. Capstone стенд работает на ноутбуке. Что отличает его от production-ready версии? Главное отличие?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 4