DevOps с нуля до продакшена.

313 маленьких шагов на одном живом приложении. На выходе уровень mid и senior DevOps.

Где живёт Courier по ходу курса
  1. 000-046 Ваш ноутбук Linux, сеть, Git, Python
  2. 047-058 Один VPS, руками systemd, nginx, TLS, бэкапы
  3. 059-099 Контейнеры и пайплайны Docker, GitHub Actions, деплой без простоя
  4. 100-123 Инфраструктура как код Ansible, Terraform, Packer
  5. 124-188 Kubernetes на вашем VPS k3s, Helm, Argo CD, наблюдаемость, безопасность
  6. 189-219 AWS, GCP, Azure EKS, GKE, AKS, по одному сеансу
  7. 220-312 Свои серверы и senior-работа надёжность, платформа, FinOps, консалтинг

Одно приложение на весь курс

Courier: небольшой SaaS для отслеживания посылок. Фичи писать не нужно. Ваша задача: доставлять его, масштабировать, спасать и удешевлять.

web

Node, Next.js

Страница трекинга и кабинет магазина

api

Python, FastAPI

REST API, авторизация, отправления. Postgres, Redis, RabbitMQ

worker

Go

Шлёт уведомления и обновляет статусы из очереди

carrier-mock

Go

Поддельный перевозчик, заваливает вебхуками, когда шагу это нужно

Встроенные рубильники поломок

Каждый сервис читает флаги, которые ломают его нарочно. Инциденты в курсе настоящие.

FAIL_RATE=0.2
20% запросов отдают 500
LATENCY_MS=800
каждый запрос ждёт 800 мс
LEAK_MB_PER_MIN=50
память растёт до OOMKilled
SLOW_QUERY=1
запрос без индекса на списке отправлений

Программа: 313 шагов в 26 фазах

Каждый шаг добавляет одну идею и занимает 30-60 минут. Ни один шаг не ссылается на то, что вы ещё не прошли.

Основа

Linux, сеть, Git и скрипты на вашем ноутбуке.

000-046

P00 Знакомство Понятно, как выглядит работа DevOps-инженера, а Courier запущен на ноутбуке. 5 шагов
  1. 000 Что делает DevOps-инженер весь день Проследить один коммит от ноутбука до платящего клиента
  2. 001 Как устроен курс Освоить формат шагов, лестницу подсказок и скрипт проверки
  3. 002 Настройка ноутбука Поставить терминал, пакетный менеджер, редактор и Docker Desktop
  4. 003 Знакомство с Courier Разобрать архитектуру приложения, с которым идёт весь курс
  5. 004 Запуск Courier по-наивному Поднять все 4 сервиса руками и почувствовать боль
P01 Linux для DevOps Уверенно двигаться по Linux-серверу, читать его состояние и чинить типовые поломки без гугления каждой команды. 18 шагов
  1. 005 Файлы, пути и приглашение shell Ходить по файловой системе через cd, ls, pwd и автодополнение LFCS
  2. 006 Чтение и правка файлов Менять конфиг через cat, less, head, tail и nano или vim LFCS
  3. 007 Пользователи, группы и sudo Создать пользователя, добавить в группу и выдать ограниченный sudo LFCS
  4. 008 Права и владельцы Читать биты rwx и чинить 403 из-за chmod и chown LFCS
  5. 009 Процессы и сигналы Найти процесс через ps и убить его нужным сигналом LFCS
  6. 010 Сервисы systemd Написать unit-файл и держать сервис живым после перезагрузки LFCS
  7. 011 Логи через journalctl Найти причину падения сервиса фильтрами journalctl LFCS
  8. 012 Пакеты и репозитории Ставить, фиксировать версии и удалять пакеты через apt LFCS
  9. 013 Диски, монтирование и место Найти, что забило диск, через df, du и lsblk LFCS
  10. 014 Переменные окружения Задать переменные для shell, сервиса и одной команды LFCS
  11. 015 Bash: первый скрипт Написать скрипт с аргументами и кодом выхода
  12. 016 Bash: условия и циклы Пройтись по серверам циклом и ветвиться по результату команд
  13. 017 Bash: функции и безопасные настройки Использовать set -euo pipefail, trap и функции
  14. 018 Текстовые утилиты: grep, sed, awk Достать числа из access-лога одним пайплайном LFCS
  15. 019 JSON и YAML в командной строке Читать и править JSON через jq, а YAML через yq
  16. 020 Задачи по расписанию Запустить скрипт бэкапа через cron и через systemd timer LFCS
  17. 021 Здоровье сервера за 60 секунд Прочитать load, память, диск и I/O через top, free, vmstat, iostat LFCS
  18. 022 Тренировка по поиску проблем в Linux Починить сломанный сервер по 3 симптомам с чек-листом LFCS
P02 Сети Объяснить, что происходит между браузером и сервером, и отладить каждый переход. 11 шагов
  1. 023 IP-адреса и порты Читать вывод ip addr и ss и говорить, кто что слушает LFCS
  2. 024 TCP, UDP и рукопожатие Увидеть TCP-рукопожатие и таймаут в tcpdump
  3. 025 DNS изнутри Проследить запрос через dig от корня до ответа LFCS
  4. 026 HTTP руками Слать запросы через curl и читать статусы и заголовки
  5. 027 TLS и сертификаты Разобрать цепочку сертификатов через openssl и заметить просроченный
  6. 028 Подсети и CIDR Разбить /16 на подсети на бумаге и проверить через ipcalc
  7. 029 Маршрутизация и NAT Прочитать таблицу маршрутов и объяснить, как приватный IP выходит в интернет
  8. 030 Файрволы Открыть только 22, 80 и 443 через ufw и проверить nmap LFCS
  9. 031 Reverse proxy и балансировщики Объяснить балансировку L4 и L7 и где стоит nginx
  10. 032 SSH подробно Использовать ключи, ssh config, jump-хосты и проброс портов LFCS
  11. 033 Набор для отладки сети Разобрать медленный запрос через mtr, dig, curl -w и ss
P03 Git и командная работа Работать в общем репозитории так, как работают настоящие команды. 7 шагов
  1. 034 Основы Git Коммитить, смотреть историю и безопасно откатывать
  2. 035 Ветки и слияния Создать ветку, влить её и решить конфликт
  3. 036 Rebase и чистая история Сделать rebase ветки и склеить fixup-коммиты
  4. 037 Pull request и code review Открыть PR, проверить чужой и запросить правки
  5. 038 Стратегии ветвления Сравнить trunk-based и GitFlow и выбрать один для Courier
  6. 039 Версии и changelog Ставить теги релизов через semver и conventional commits
  7. 040 Pre-commit хуки Не пускать секреты и битый YAML в репозиторий
P04 Программирование для автоматизации Писать небольшие инструменты, которые заменяют ручную работу. 6 шагов
  1. 041 Python для ops: первый скрипт Прочитать лог-файл и вывести сводку
  2. 042 Python: вызовы API Запросить GitHub API и обработать ошибки и повторы
  3. 043 Python: настоящий CLI Собрать CLI с аргументами, конфигом и тестами
  4. 044 Чтение кода на Go и Node Найти конфиг, порты и health-эндпоинт в незнакомом коде
  5. 045 Makefile как запускатель задач Обернуть сборку, тесты и запуск в цели make
  6. 046 Форматы конфигов и шаблоны Генерировать конфиги из шаблонов через envsubst и Jinja

Доставка

Живой сервер руками, потом контейнеры, CI и CD.

047-099

P05 Первый боевой сервер Выложить Courier на настоящий VPS руками и понять, зачем нужно всё, что идёт дальше. 12 шагов
  1. 047 Арендовать VPS и подключиться Создать VPS за 5 евро и войти по ключу
  2. 048 Укрепить сервер Отключить вход root и по паролю, добавить fail2ban и автообновления
  3. 049 Установить рантаймы Поставить на сервер Python, Node, Go и Postgres
  4. 050 Запуск Courier через systemd Запустить все сервисы как units с политиками перезапуска
  5. 051 nginx впереди Пустить web и API через один конфиг nginx
  6. 052 Домен и DNS-записи Направить домен на VPS записями A и CNAME
  7. 053 HTTPS через Let's Encrypt Получить сертификат через certbot и обновлять его автоматически
  8. 054 Логи и ротация Не дать логам забить диск с помощью logrotate
  9. 055 Бэкапы Postgres Дампить базу каждую ночь и доказать, что restore работает
  10. 056 Первая авария Поднять Courier после заполненного диска и записать, что случилось
  11. 057 Первый runbook Написать runbook, который нужен коллеге в 3 часа ночи
  12. 058 Посчитать ручную работу Перечислить все ручные шаги и оценить часы в месяц
P06 Контейнеры Упаковать каждый сервис Courier в маленький безопасный образ и запускать стек одной командой. 16 шагов
  1. 059 Зачем контейнеры Объяснить образы, контейнеры и namespaces на демо
  2. 060 docker run Запускать, осматривать, заходить внутрь и останавливать контейнеры CKAD
  3. 061 Образы и слои Читать слои через docker history и использовать кеш сборки CKAD
  4. 062 Dockerfile для Python API Написать Dockerfile и собрать образ API CKAD
  5. 063 Dockerfile для Node-приложения Упаковать веб-приложение и передать конфиг времени сборки CKAD
  6. 064 Multi-stage сборка для Go worker Выпустить образ worker на 15 МБ CKAD
  7. 065 Образы меньше и безопаснее Взять slim и distroless базы и запускать не от root CKS
  8. 066 Тома и данные Сохранить данные Postgres между перезапусками контейнера
  9. 067 Сеть контейнеров Соединить контейнеры в пользовательской сети по имени
  10. 068 Docker Compose для Courier Поднять весь стек через docker compose up
  11. 069 Конфиг и секреты в Compose Использовать env-файлы и секреты Compose без утечек
  12. 070 Healthcheck и порядок старта Заставить API ждать здоровую базу
  13. 071 Реестры и теги Пушить образы в GHCR с неизменяемой схемой тегов
  14. 072 Скан образов на уязвимости Найти и закрыть CVE через Trivy CKS
  15. 073 Compose на VPS Заменить настройку через systemd на Compose на сервере
  16. 074 Тренировка по отладке контейнеров Починить контейнер, который падает, не резолвит DNS и упирается в память CKAD
P07 Continuous integration Каждый push в Courier автоматически проходит lint, тесты, сборку и скан. 15 шагов
  1. 075 Зачем нужен CI Объяснить, какой цикл обратной связи сокращает CI
  2. 076 Первый workflow в GitHub Actions Запускать job на каждый push
  3. 077 Проверки lint и формата Падать на ошибках lint в 3 языках
  4. 078 Unit-тесты в CI Гонять тесты Python, Node и Go в параллельных jobs
  5. 079 Matrix-сборки Тестировать на 2 версиях рантайма через matrix
  6. 080 Кеш зависимостей Сократить время пайплайна кешем зависимостей и слоёв Docker
  7. 081 Сборка и push образов в CI Публиковать образы в GHCR из пайплайна
  8. 082 Интеграционные тесты с сервисами Тестировать API на настоящем Postgres в CI
  9. 083 Защита веток и обязательные проверки Блокировать слияния, не прошедшие CI
  10. 084 Секреты в CI Хранить секреты безопасно и не пускать их в логи
  11. 085 OIDC вместо долгоживущих ключей Выдавать CI короткие креды без сохранённых ключей DOP
  12. 086 Переиспользуемые workflows Делить один пайплайн между 4 сервисами
  13. 087 Self-hosted раннеры Гонять jobs на своём VPS и знать риски
  14. 088 GitLab CI и Jenkins Перенести пайплайн в GitLab CI и прочитать Jenkinsfile
  15. 089 Скорость пайплайна Найти самую медленную стадию и вдвое сократить общее время
P08 Continuous delivery и релизы Выкатывать Courier много раз в день без простоя и откатывать одной командой. 10 шагов
  1. 090 Delivery и deployment Выбрать continuous delivery или deployment для каждого сервиса
  2. 091 Деплой из CI по SSH Выкатывать на VPS, когда main позеленел
  3. 092 Staging и production Держать два окружения с промоушеном между ними
  4. 093 Миграции БД при деплое Безопасно запускать миграции до старта нового кода
  5. 094 Rolling-деплой без простоя Менять контейнеры по одному за nginx
  6. 095 Blue/green на одном сервере Переключать трафик между двумя стеками и обратно
  7. 096 Откаты Откатить плохой релиз быстрее чем за 2 минуты
  8. 097 Автоматизация релизов Генерировать версии и changelog из коммитов
  9. 098 Feature flags Выкатить тёмный код и включить его для 10% пользователей
  10. 099 Метрики DORA Считать частоту деплоев, lead time, долю неудачных изменений и время восстановления DOP

Автоматизация

Серверы, кластеры и деплой существуют только как код после ревью.

100-158

P09 Управление конфигурацией Пересобирать весь сервер из кода за минуты. 9 шагов
  1. 100 Зачем нужно управление конфигурацией Сравнить скрипты, Ansible и образы для настройки сервера
  2. 101 Inventory в Ansible и ad-hoc команды Запустить команду сразу на многих хостах
  3. 102 Первый playbook Поставить и настроить nginx через playbook
  4. 103 Идемпотентность Запустить playbook дважды и доказать, что второй раз ничего не изменилось
  5. 104 Переменные, шаблоны и handlers Шаблонизировать конфиг nginx и перезагружать только при изменении
  6. 105 Roles Разбить настройку на переиспользуемые роли
  7. 106 Ansible Vault Хранить секреты в репозитории зашифрованными
  8. 107 Пересобрать VPS с нуля Стереть сервер и восстановить Courier одной командой
  9. 108 Тестирование Ansible Тестировать роли через Molecule
P10 Infrastructure as Code Серверы, сети и DNS для Courier существуют только как проверенный код. 15 шагов
  1. 109 Зачем IaC Объяснить state, drift и plan перед apply TFA
  2. 110 Основы Terraform и OpenTofu Написать provider и один ресурс TFA
  3. 111 Plan, apply, destroy Создать и удалить VPS через Terraform TFA
  4. 112 Переменные и outputs Сделать конфиг переиспользуемым для разных окружений TFA
  5. 113 State и почему он важен Прочитать state и восстановиться после потери файла state TFA
  6. 114 Remote state и блокировки Хранить state в бакете с блокировкой TFA
  7. 115 Модули Написать модуль для сервера Courier TFA
  8. 116 Окружения Запускать staging и production из одной кодовой базы TFA
  9. 117 Импорт существующей инфраструктуры Взять созданный руками ресурс под управление Terraform TFA
  10. 118 Обнаружение drift Найти и исправить изменения, сделанные мимо Terraform TFA
  11. 119 Lint и политики для IaC Ловить плохой конфиг через tflint и Checkov в CI TFA
  12. 120 Тестирование инфраструктуры Протестировать модуль через terraform test
  13. 121 Terraform в CI Plan на pull request, apply при слиянии TFA
  14. 122 Образы машин с Packer Собрать укреплённый базовый образ
  15. 123 Pulumi и Crossplane в общих чертах Понимать, когда команда выбирает их вместо Terraform
P11 Kubernetes Запустить Courier в Kubernetes и отлаживать его под давлением. 27 шагов
  1. 124 Зачем оркестрация Объяснить, что умеет Kubernetes и не умеет Compose CKA
  2. 125 Первый кластер Создать локальный кластер через kind и работать с kubectl CKA
  3. 126 Pod Запустить, осмотреть и удалить pod CKAD
  4. 127 Deployment и ReplicaSet Промасштабировать Deployment и увидеть самолечение CKAD
  5. 128 Services Достучаться до pod через ClusterIP и NodePort CKA
  6. 129 Labels и selectors Находить и группировать объекты по меткам CKAD
  7. 130 ConfigMap и Secret Вынести конфиг Courier из образов CKAD
  8. 131 Probes Добавить liveness, readiness и startup probes CKAD
  9. 132 Requests и limits Задать ресурсы и увидеть OOMKilled и троттлинг CKAD
  10. 133 Namespaces Разделить окружения и команды по namespace CKA
  11. 134 Ingress и Gateway API Направить домен на сервисы web и API CKA
  12. 135 Persistent volumes Дать stateful-приложению хранилище, переживающее перезапуски CKA
  13. 136 StatefulSet Запустить Postgres в кластере и понять, почему большинство команд так не делает CKA
  14. 137 Jobs и CronJobs Запускать миграции и ночные задачи в кластере CKAD
  15. 138 Rolling update и откаты Выкатить и отменить релиз через kubectl rollout CKAD
  16. 139 Horizontal Pod Autoscaler Масштабировать API по CPU и кастомным метрикам CKA
  17. 140 RBAC Выдать разработчику доступ только на чтение к одному namespace CKA
  18. 141 Network policies Разрешить с базой говорить только API CKS
  19. 142 Helm: готовые чарты Поставить ingress-nginx и Redis через Helm
  20. 143 Helm: свой чарт для Courier Упаковать все сервисы в один чарт
  21. 144 Kustomize Патчить базовые манифесты под каждое окружение CKAD
  22. 145 Отладка pod Починить pod в CrashLoopBackOff, ImagePullBackOff и Pending CKA
  23. 146 Отладка кластера Найти сломанную ноду, проблемы DNS и control plane CKA
  24. 147 k3s на VPS Перенести Courier с Compose на одноузловой k3s
  25. 148 cert-manager и external-dns Автоматизировать сертификаты и DNS-записи из кластера
  26. 149 Operators и CRD Поставить оператор Postgres и прочитать его custom resources CKA
  27. 150 Обновление кластера Обновить Kubernetes без простоя CKA
P12 GitOps и progressive delivery Git остаётся единственным путём изменений в кластер, а рискованные релизы сначала идут на малую долю пользователей. 8 шагов
  1. 151 Идея GitOps Объяснить pull-деплой и reconciliation
  2. 152 Argo CD Синхронизировать Courier из Git-репозитория в кластер
  3. 153 App of apps и окружения Промоутить релиз из staging в production через pull request
  4. 154 Секреты в GitOps Шифровать секреты через SOPS или Sealed Secrets
  5. 155 External Secrets Operator Подтягивать секреты из хранилища в кластер
  6. 156 Canary-релизы Отправить 10% трафика на новую версию через Argo Rollouts
  7. 157 Автоматический анализ Откатывать canary сам, когда растут ошибки
  8. 158 Flux в общих чертах Сравнить Flux с Argo CD

Эксплуатация

Видеть, защищать и держать Courier в 3 облаках и на своём железе.

159-241

P13 Observability Видеть, что Courier делает в проде, и получать page только по важному. 16 шагов
  1. 159 Мониторинг и observability Назвать 4 golden signals для каждого сервиса Courier PCDE
  2. 160 Prometheus Собирать метрики Courier и кластера
  3. 161 Инструментирование кода Добавить метрики запросов в API, web и worker
  4. 162 PromQL Писать запросы для rate, ошибок и перцентилей задержки
  5. 163 Дашборды Grafana Собрать по одному дашборду на сервис как код
  6. 164 Структурные логи Писать JSON-логи с request ID в 3 языках
  7. 165 Централизованные логи в Loki Искать логи всех pod в одном месте
  8. 166 Распределённый трейсинг с OpenTelemetry Проследить один запрос через web, API и worker PCDE
  9. 167 Пайплайны Collector Пустить метрики, логи и трейсы через OpenTelemetry Collector
  10. 168 SLI и SLO Задать цели по доступности и задержке для Courier PCDE
  11. 169 Error budget Решить, когда прекращать выпуск фич PCDE
  12. 170 Алерты через Alertmanager Слать алерты в Telegram и на почту с silences
  13. 171 Burn-rate алерты Алертить на сгорание SLO, а не на CPU PCDE
  14. 172 Синтетические проверки Пробовать Courier снаружи, как пользователь
  15. 173 Профилирование и eBPF Найти горячую функцию через continuous profiling и eBPF-инструменты
  16. 174 Гигиена алертов Вдвое сократить шум алертов и дать каждому ссылку на runbook
P14 Безопасность и цепочка поставки Courier проходит базовое security-ревью, а происхождение каждого образа можно доказать. 14 шагов
  1. 175 Threat model пайплайна Перечислить, как атакующий дойдёт до прода через CI CKS
  2. 176 Минимальные привилегии везде Убрать админские права, которые никому не нужны CKS
  3. 177 Управление секретами в Vault Выдавать динамические креды к базе из Vault
  4. 178 Статический анализ в CI Запускать SAST и поиск секретов на каждом PR
  5. 179 Скан и обновление зависимостей Держать зависимости в актуальном состоянии через Renovate или Dependabot
  6. 180 SBOM Генерировать SBOM для каждого образа через Syft CKS
  7. 181 Подпись образов Подписывать и проверять образы через cosign CKS
  8. 182 Provenance и SLSA Прикреплять provenance сборки и проверять его перед деплоем CKS
  9. 183 Admission-политики Блокировать неподписанные образы и образы от root через Kyverno или OPA CKS
  10. 184 Pod Security Standards Включить профиль restricted на namespace CKS
  11. 185 Runtime-безопасность Поймать shell в контейнере через Falco CKS
  12. 186 CIS benchmarks Просканировать ноду и кластер через kube-bench CKS
  13. 187 Ритм патчей Задать ежемесячную пересборку и патчинг образов и нод
  14. 188 Основы compliance Сопоставить контроли с SOC 2, ISO 27001, GDPR и NIS2
P15 Облачные основы без привязки к провайдеру Знать блоки, которые продаёт любое облако, и уметь их сравнивать. 5 шагов
  1. 189 Что на самом деле продаёт облако Сопоставить compute, storage, сеть и managed-сервисы у разных провайдеров
  2. 190 Разделение ответственности Сказать, что защищает провайдер, а что своя зона
  3. 191 Модели цен Прочитать страницу цен и прикинуть месячный счёт
  4. 192 Бюджеты и алерты по счёту Поставить жёсткий алерт на расходы до создания чего-либо
  5. 193 Один Terraform-layout для многих облаков Спроектировать репозиторий под AWS, GCP, Azure и VPS
P16 AWS Запустить Courier в AWS с боевой сетью, доступами и данными. 17 шагов
  1. 194 Аккаунты AWS и Organizations Настроить management-аккаунт и sandbox-аккаунт SAA
  2. 195 IAM Написать политику с минимальными правами и проверить её SAA DOP
  3. 196 VPC Построить публичные и приватные подсети через Terraform SAA
  4. 197 EC2 Запустить инстанс из своего образа Packer SAA
  5. 198 S3 Хранить бэкапы с lifecycle-правилами и шифрованием SAA
  6. 199 RDS для Postgres Перенести базу в RDS с автоматическими бэкапами SAA
  7. 200 ECR Пушить образы Courier в приватный реестр DOP
  8. 201 Балансировщики и Route 53 Поставить перед Courier ALB и домен SAA
  9. 202 Сертификаты через ACM Выпустить TLS-сертификаты для ALB SAA
  10. 203 ECS на Fargate Запустить Courier без управления серверами DOP
  11. 204 EKS Создать кластер через Terraform и выкатить Helm-чарт DOP
  12. 205 Pod identity в EKS Дать pod права AWS без ключей DOP
  13. 206 CloudWatch Отправить логи и метрики и настроить alarm DOP
  14. 207 Secrets Manager и Parameter Store Подавать секреты в Courier из AWS SAA
  15. 208 Lambda и события Запустить небольшую событийную задачу рядом с Courier SAA
  16. 209 Разбор расходов AWS Найти 3 самые большие статьи расходов и урезать одну SAA
  17. 210 Чистый снос Удалить всё и убедиться, что счёт перестал расти
P17 GCP и Azure Переносить Courier между облаками заменой Terraform-модулей. 9 шагов
  1. 211 Проекты GCP и IAM Настроить проект, service accounts и роли PCDE
  2. 212 GKE и Artifact Registry Запустить Courier в GKE PCDE
  3. 213 Cloud SQL и Workload Identity Подключить pod к managed-базе без ключей PCDE
  4. 214 Cloud Logging и Monitoring Читать логи и SLO Courier в Google Cloud PCDE
  5. 215 Подписки Azure и Entra ID Настроить resource group и идентичности AZ-400
  6. 216 AKS и ACR Запустить Courier в AKS AZ-400
  7. 217 Azure Database и managed identity Подключить pod к Postgres через managed identity AZ-400
  8. 218 Azure Monitor Читать логи и настраивать алерты в Azure AZ-400
  9. 219 Сравнить три облака Написать клиенту сравнение на одну страницу
P18 Частная и гибридная инфраструктура Запускать Courier на своих серверах, когда облако не подходит. 7 шагов
  1. 220 Когда self-host Выбрать между облаком и своими серверами по цифрам
  2. 221 Кластер k3s из 3 нод Собрать отказоустойчивый кластер на 3 VPS
  3. 222 Балансировка на bare metal Открыть сервисы наружу через MetalLB или floating IP
  4. 223 Хранилище на своих нодах Добавить реплицируемое хранилище на Longhorn
  5. 224 Приватный реестр Поднять Harbor со сканом образов
  6. 225 Приватная сеть Соединить облака и серверы через WireGuard
  7. 226 Air-gapped установка Установить Courier там, где интернет запрещён
P19 Инженерия надёжности Courier переживает сбои, пики нагрузки и плохие дни. 15 шагов
  1. 227 RTO и RPO Согласовать с бизнесом цели восстановления
  2. 228 Бэкапы, которые восстанавливаются Забэкапить кластер через Velero и восстановить в новый
  3. 229 Point-in-time recovery Восстановить Postgres на минуту раньше плохого запроса
  4. 230 Операции с базой Делать expand-and-contract миграции и connection pooling
  5. 231 Нагрузочные тесты с k6 Найти частоту запросов, на которой Courier ломается
  6. 232 Планирование мощностей Предсказать, когда понадобится больше нод
  7. 233 Событийное автомасштабирование Масштабировать worker по длине очереди через KEDA
  8. 234 Автомасштабирование нод Добавлять и убирать ноды через Cluster Autoscaler или Karpenter
  9. 235 Кеширование и CDN Поставить CDN перед статикой и измерить выигрыш
  10. 236 Очереди и backpressure Сохранить worker живым, когда очередь взрывается
  11. 237 Основы multi-region Держать warm standby во втором регионе
  12. 238 Chaos engineering Намеренно убивать pod и ноды через Chaos Mesh
  13. 239 Реагирование на инциденты Провести инцидент с ролями, каналом и таймлайном
  14. 240 Postmortem без поиска виноватых Написать postmortem с причинами и действиями
  15. 241 On-call, который можно пережить Спроектировать ротацию, эскалацию и передачу смены

Уровень senior

Платформа, деньги, AI, консалтинг, реальные аварии и поиск работы.

242-312

P20 Platform engineering Разработчики выкатывают сами по проторенным дорогам, которые построила платформа. 8 шагов
  1. 242 От DevOps-команды к платформенной Объяснить team topologies и платформу как продукт
  2. 243 Golden paths Написать шаблон, создающий новый сервис с CI, чартом и дашбордами
  3. 244 Внутренний портал разработчика Поднять Backstage с каталогом сервисов
  4. 245 Self-service окружения Дать разработчику preview-окружение на каждый pull request
  5. 246 API инфраструктуры на Crossplane Дать командам заказывать базу YAML-файлом
  6. 247 Multi-tenancy Безопасно делить один кластер между командами
  7. 248 Метрики developer experience Измерять время онбординга и ожидания через DORA и SPACE
  8. 249 Docs as code Публиковать runbook и ADR из репозитория
P21 FinOps Урезать облачный счёт без вреда для надёжности и объяснять это в деньгах. 7 шагов
  1. 250 Видимость затрат Тегировать каждый ресурс и видеть стоимость по командам
  2. 251 Стоимость Kubernetes Мерить цену по namespace через OpenCost
  3. 252 Rightsizing Сжать избыточные pod и ноды по реальному использованию
  4. 253 Spot и preemptible мощности Безопасно запустить worker на spot-нодах
  5. 254 Обязательства Выбрать между savings plans, reservations и on-demand
  6. 255 Затраты на хранение и трафик Сократить расходы на передачу данных и хранилище
  7. 256 Unit economics Считать стоимость на клиента и на заказ
P22 AI в DevOps Использовать AI-агентов, чтобы работать быстрее и не дать им сломать прод. 6 шагов
  1. 257 Где AI помогает, а где вредит Составить список задач для агента и задач, которые оставить себе
  2. 258 Агенты пишут инфраструктуру Проверять Terraform от агента через plan и policy-гейты
  3. 259 AI в разборе инцидентов Сводить логи и алерты через LLM и проверять его утверждения
  4. 260 Ограждения для AI в пайплайнах Ограничить, что агент может запускать, читать и менять
  5. 261 MCP-серверы для ops Дать агенту доступ к кластеру только на чтение
  6. 262 Модель в Kubernetes Запустить небольшой inference-сервис с основами планирования GPU
P23 DevOps в бизнесе Прийти в компанию, найти, что её тормозит, и продать решение. 13 шагов
  1. 263 Оценка компании Провести интервью по зрелости DevOps из 10 вопросов
  2. 264 Value stream mapping Нарисовать путь от идеи до прода и найти самое долгое ожидание
  3. 265 Базовые метрики DORA Измерить 4 метрики по Git и данным об инцидентах
  4. 266 Найти toil Перечислить повторяющуюся ручную работу и её стоимость в месяц
  5. 267 ROI автоматизации Посчитать срок окупаемости одной автоматизации
  6. 268 Написать предложение Превратить находки в предложение с ценой, которое CTO подпишет
  7. 269 Роадмап на 90 дней Сначала быстрые победы, потом крупные ходы
  8. 270 Миграция legacy Поэтапно перенести монолит с одного сервера в контейнеры
  9. 271 Управление изменениями Склонить разработчиков и ops к новому способу работы
  10. 272 ADR и RFC Написать запись о решении, которая переживёт следующего сотрудника
  11. 273 Выбор вендоров Сравнить 3 инструмента по взвешенной матрице
  12. 274 Выступление перед руководством Объяснить риск, цену и скорость на 5 слайдах
  13. 275 DevOps-консалтинг: проект целиком Определить объём, назвать цену и закрыть проект с фиксированным scope
P24 War Room Прожить знаменитые аварии в миниатюре и знать, как остановить каждую. 26 шагов
  1. 276 GitLab 2017: удалена продовая база Восстановиться после rm -rf не на том хосте и найти мёртвые бэкапы
  2. 277 AWS S3 2017: одна опечатка в команде Ограничить радиус поражения ops-команды
  3. 278 Knight Capital 2012: недокаченный деплой Поймать деплой, дошедший до 7 серверов из 8
  4. 279 Cloudflare 2019: один regex съедает CPU Остановить изменение конфига, которое грузит все ядра
  5. 280 GitHub 2018: split brain за 43 секунды Восстановить кластер БД после сетевого разрыва
  6. 281 Facebook 2021: BGP выключает компанию Сохранить out-of-band доступ, когда своей сети нет
  7. 282 Fastly 2021: конфиг одного клиента Откатить глобальную раскатку конфига
  8. 283 Roblox 2021: 73 часа Consul Отладить координационный сервис под нагрузкой
  9. 284 Let's Encrypt 2021: истёк корневой сертификат Найти клиентов, которые ломаются при истечении корня
  10. 285 Atlassian 2022: удалено 883 сайта клиентов Восстановить много тенантов без инструмента массового restore
  11. 286 Datadog 2023: обновление ОС убивает сеть Раскатывать обновления ОС так, чтобы они не задели все ноды
  12. 287 CrowdStrike 2024: одно обновление контента Выкатывать конфиг с теми же гейтами, что и код
  13. 288 Google Cloud 2025: смена политики без флага Закрывать новые ветки кода флагами и безопасными дефолтами
  14. 289 AWS us-east-1 2025: гонка в DNS Найти race condition в автоматике, управляющей DNS
  15. 290 Cloudflare 2025: файл фич вырос вдвое Валидировать сгенерированный конфиг до выкатки
  16. 291 Leap second 2012: часы останавливают парк Тестировать крайние случаи времени в прод-системах
  17. 292 Просроченные сертификаты Поймать сертификат, который истекает в воскресенье
  18. 293 Ловушка DNS TTL Перенести домен без многочасового простоя
  19. 294 Диск полон в 3 часа ночи Восстановить ноду, где логи съели диск
  20. 295 Убежавший облачный счёт Остановить цикл, который за ночь тратит 5 000 долларов
  21. 296 left-pad 2016: пакет исчезает Фиксировать и зеркалировать зависимости
  22. 297 Codecov 2021: скомпрометированный скрипт в CI Заметить подменённый инструмент в пайплайне
  23. 298 xz-utils 2024: бэкдор в библиотеке Проверять, из чего собирается билд
  24. 299 tj-actions 2025: скомпрометированный GitHub Action Фиксировать actions по коммиту и сужать права токена
  25. 300 Утёкшие облачные ключи на GitHub Ротировать ключи и чистить историю меньше чем за час
  26. 301 etcd в Kubernetes без места Поднять control plane, который отказывается писать
P25 Карьера и собеседования Получить работу mid или senior DevOps-инженера и подтвердить это. 11 шагов
  1. 302 Как устроены собеседования DevOps и SRE Знать 5 типов интервью и как оценивается каждый
  2. 303 Интервью по поиску проблем в Linux Рассказать вслух разбор сломанного сервера
  3. 304 Интервью: live-отладка Kubernetes Починить сломанный кластер под давлением времени
  4. 305 Системный дизайн инфраструктуры Спроектировать CI/CD и хостинг для компании из 50 человек
  5. 306 Интервью по Terraform и облаку Ответить на вопросы про state, модули и IAM
  6. 307 Истории об инцидентах по STAR Рассказать 3 истории об инцидентах из заданий War Room
  7. 308 Портфолио Опубликовать Courier как открытое портфолио с диаграммами
  8. 309 CV и LinkedIn для DevOps Написать пункты с цифрами из работы на курсе
  9. 310 Какие сертификаты и когда Выбрать порядок сертификатов под нужные вакансии
  10. 311 Capstone: неделя on-call Вести Courier 7 дней с подброшенными инцидентами
  11. 312 Capstone: кейс консалтинга Провести аудит учебной компании и показать план на 90 дней

Сделано так, чтобы вы не застряли

  1. Одна идея на шаг

    Если шагу нужно больше 3 новых терминов, его режут на два.

  2. Каждая команда проверена

    Копируете, вставляете и сверяете с ожидаемым выводом под командой.

  3. Работу проверяет скрипт

    Зелёный значит готово. Красный показывает, какой пункт задания не прошёл.

  4. Ошибки входят в урок

    В каждом шаге что-то ломается нарочно, плюс 3 ошибки, на которых спотыкаются чаще всего.

  5. Подсказки по одной ступени

    5 ступеней от «куда смотреть» до полного решения, которое вы потом объясняете сами.

devops-path/ru/steps/062_dockerfile_python_api.md
---
num: "062"
phase: P06
title: Dockerfile for the Python API
runs_on: laptop
time_min: 45
cost: "0"
certs: [CKAD]
---

# 062. Dockerfile for the Python API

## Goal & why
## Recall          -> steps 059, 060, 061
## What's new      -> 3 new terms, no more
## Do it           -> commands + expected output
## Break it        -> change one line, read the error
## Check           -> bash checks/062.sh
## If you're stuck -> 3 real errors and fixes
## Trade-offs
## Hint ladder     -> rungs 0 to 5

Сколько стоит практика

Примерно до 10 долларов в месяц. Облачный шаг начинается с бюджет-алерта и заканчивается удалением всего.

  1. 000-046 0 Только ноутбук. 16 GB памяти хватит на весь курс.
  2. 047-188 ~5 EUR / мес Один маленький VPS. На нём же k3s.
  3. 189-219 free tier Кредиты AWS, GCP и Azure. Каждый кластер живёт один сеанс.
  4. 220-226 1-2 недели Три маленьких VPS под свой кластер, потом удаляются.

War Room: 26 реальных аварий в миниатюре

Вы воспроизводите механику известных инцидентов на своём стеке, останавливаете её и пишете postmortem.

Вопросы

Нужен ли опыт?

Нет. Шаг 005 начинается с cd и ls. Если умеете ставить программы на ноутбук, можно начинать.

Нужно ли сначала пройти LinuxPath?

Нет. В DevOpsPath свои фазы по Linux, сети и bash, ровно в объёме DevOps-работы. LinuxPath нужен, если хочется глубже.

Сколько это займёт?

Около 235 часов при 45 минутах на шаг. При 7 часах в неделю это примерно 8 месяцев.

Готовит ли курс к сертификатам?

У шагов есть метки экзаменов: LFCS, CKAD, CKA, CKS, Terraform Associate, 2 экзамена AWS, Google Cloud DevOps и Azure AZ-400. Перед записью на экзамен пройдите пробный.

Где здесь AI?

До уровня mid всё руками. Потом фаза P22: агенты для Terraform, разбора инцидентов и ревью, с ограничениями.

Я найду работу?

Этого никто не может обещать. На выходе у вас публичное портфолио на Courier, 26 разборов инцидентов и фаза подготовки к собеседованиям. Именно об этом спрашивают на найме.

Когда старт и сколько стоит?

Даты и цены пока нет. Лист ожидания узнает первым.

Получите первые фазы раньше всех

Одно письмо, когда откроются первые фазы. Без рассылки.