Программа
Программа симулятора DevOps: 9 месяцев работы в IT-компании
Симулятор — это год работы DevOps-инженером в вымышленной компании Qoima. Месяцы идут в порядке модулей курса DevOps KAI: Введение в IT, сети и DevOps, Linux, Docker, Git, Ansible, CI/CD, Kubernetes, Мониторинг, Cloud и Terraform. Внутри — 91 тикет от коллег, 9 дежурств, 9 постмортемов и 18 разборов реальных аварий, всего около 32 часов практики. Всё в браузере: консоль воспроизводит реальные выводы команд, ставить ничего не нужно.
Ниже — что внутри каждого месяца. Ответов и сценариев здесь нет: их открывает сам симулятор. Первые задания первого месяца бесплатны — они отмечены.
Месяц 1 · Введение в IT, сети и DevOps
Первый месяц
Навык месяца: Как устроен прод. Сервис, который работает через раз, релиз, который не доехал до прода, и первое дежурство.
- OPS-100Первый день: осмотрись на серверебесплатноджун · 4 мин
- OPS-101Каталог то работает, то нетбесплатноджун · 10 мин
- OPS-102Объясни продакту, как работает сайтджун · 5 мин
- OPS-103Сервис поднялся, но снаружи не открываетсяджун · 8 мин
- OPS-104Мобильное приложение пишет «Небезопасное соединение»джун · 10 мин
- OPS-105Задачу закрыли вчера, а на сайте её нетбесплатно12 мин
- OPS-106Доступ по SSH для нового разработчикаджун · 6 мин
- OPS-107Что происходит в логах nginxджун · 10 мин
- OPS-108nginx как единая точка входа14 мин
- OPS-109Новая виртуалка под staging еле шевелитсяджун · 10 мин
- Разбор аварииKnight Capital: 45 минут неудачного деплоябесплатноразбор аварии
- Разбор аварииEricsson: один просроченный сертификат оставил без связи миллионы абонентовразбор аварии
- ДежурствоСтажировка на дежурствебесплатнодежурство
- ПостмортемФильтр по цене сутки не доезжал до прода, а пайплайн был зелёнымбесплатнопостмортем
Месяц 2 · Linux
Доступ к проду
Навык месяца: Linux и эксплуатация серверов. Диски, права, systemd, бэкапы — и первое ночное дежурство в паре с Тимуром.
- OPS-201Диск на проде заполнен на 97%джун · 10 мин
- OPS-202Воркер падает и не поднимается самджун · 10 мин
- OPS-203Деплой падает с Permission deniedджун · 7 мин
- OPS-204Бэкап, который молча не работает10 мин
- OPS-205Сервер файлов загружен на 350%12 мин
- OPS-206Отчёты для продавцов падают каждую ночь12 мин
- OPS-207Кто заходил на bastion под root?12 мин
- OPS-208Ротация логов, чтобы диск больше не кончалсяджун · 8 мин
- OPS-209Найди запрос по его ID во всех логахджун · 10 мин
- OPS-210nginx не стартует после переезда сертификатовджун · 8 мин
- OPS-211sudo для деплоя: только то, что нужно8 мин
- Разбор аварииGitLab удалил базу — и ни один бэкап не сработалразбор аварии
- Разбор аварииВисокосная секунда, которая загрузила процессорыразбор аварии
- ДежурствоПервое дежурстводежурство
- ПостмортемВоркер заказов не работал 47 минут ночьюпостмортем
Месяц 3 · Docker
Всё в контейнеры
Навык месяца: Контейнеризация. Переносим catalog в контейнеры: рестарт-лупы, тяжёлые образы, compose — и первая потеря данных.
- OPS-301Контейнер в бесконечном рестартеджун · 8 мин
- OPS-302Образ на 1,2 ГБ, сборка 9 минут12 мин
- OPS-303Compose для staging: app + база + админка12 мин
- OPS-304Откуда в образе 1,4 ГБ?10 мин
- OPS-305Приложение не видит базу по имени10 мин
- OPS-306На build-сервере кончилось местоджун · 8 мин
- OPS-307Воркер в compose: лимиты, перезапуск, логи12 мин
- OPS-308Токен npm внутри образамидл · 10 мин
- OPS-309Как образ правильно попадает в registryджун · 6 мин
- OPS-310В Swarm из трёх реплик работает одна10 мин
- Разбор аварииCodecov: утечка через сборку Docker-образаразбор аварии
- Разбор аварииDocker Hub ввёл лимиты — и CI по всему миру покраснелразбор аварии
- ДежурствоПервая неделя в контейнерахдежурство
- ПостмортемStaging-база стёрта после docker compose down -vпостмортем
Месяц 4 · Git
Дикий запад в репозитории
Навык месяца: Git и командная работа. Ключ платёжки в истории коммитов, хотфикс на проде и плохой коммит в общей ветке.
- OPS-401Боевой ключ в истории коммитов10 мин
- OPS-402Хотфикс, когда в main недоделанные фичи6 мин
- OPS-403Плохой коммит в общей ветке7 мин
- OPS-404Конфликт в настройках платежейджун · 10 мин
- OPS-405Чеки печатают копейки неправильно10 мин
- OPS-406«Я случайно стёр два дня работы»джун · 8 мин
- OPS-407.gitignore, который защищает, а не мешаетджун · 7 мин
- OPS-408Процесс Merge Request в командеджун · 6 мин
- OPS-409Репозиторий клонируется 12 минут10 мин
- OPS-410Сканер секретов до коммита8 мин
- Разбор аварииUber: ключ облака в приватном репозиторииразбор аварии
- Разбор аварииleft-pad: 11 строк кода, которые сломали сборки по всему мируразбор аварии
- ДежурствоНочь перед релизом 1.5дежурство
- ПостмортемБоевой ключ платёжного провайдера три недели лежал в истории Gitпостмортем
Месяц 5 · Ansible
Серверы больше не настраиваем руками
Навык месяца: Автоматизация конфигурации. Две новые машины под catalog, playbook с нуля, недоступный хост и пароль в открытом виде.
- OPS-501Playbook: nginx на новых серверах12 мин
- OPS-502Playbook прошёл не на всех серверах7 мин
- OPS-503Пароль базы в открытом виде6 мин
- OPS-504Что изменит playbook, если его запустить?джун · 8 мин
- OPS-505Роль: пользователи команды на всех серверах12 мин
- OPS-506Playbook упал на одном сервере с «Could not get lock»джун · 8 мин
- OPS-507Выкатка на серверы по одному, а не всем сразумидл · 12 мин
- OPS-508Почему на web-03 один воркер nginx?8 мин
- OPS-509Новый сервер — от создания до трафика6 мин
- OPS-510Шаблон не собирается: переменная не определена8 мин
- Разбор аварииОдин неверный параметр — и S3 лежит больше четырёх часовразбор аварии
- Разбор аварииAzure и 29 февраля: сертификат на несуществующую датуразбор аварии
- ДежурствоНочь массовых измененийдежурство
- ПостмортемПрогон роли уронил nginx на всех веб-серверах на 9 минутпостмортем
Месяц 6 · CI/CD
Деплой одной кнопкой
Навык месяца: CI/CD. Пайплайн с нуля, сломанный push в registry, первый откат через CI — и ночь большого релиза.
- OPS-601Пайплайн catalog с нуля14 мин
- OPS-602Пайплайн красный на build7 мин
- OPS-603Откат релиза через пайплайн6 мин
- OPS-604Пайплайн тратит 6 минут на npm ci12 мин
- OPS-605Тест то падает, то проходит10 мин
- OPS-606Пайплайн идёт 22 минутыджун · 8 мин
- OPS-607Staging автоматически, прод — по тегу и вручную12 мин
- OPS-608Blue-green деплой checkoutмидл · 6 мин
- OPS-609Все пайплайны висят в pendingджун · 8 мин
- OPS-610Пароль базы в логе джобы10 мин
- Разбор аварииCircleCI: один заражённый ноутбук — и все клиенты меняют секретыразбор аварии
- Разбор аварииCrowdStrike: одно обновление, миллионы синих экрановразбор аварии
- ДежурствоНочь большого релизадежурство
- ПостмортемРелиз checkout 2.9 шесть минут ломал оплатупостмортем
Месяц 7 · Kubernetes
Переезд в Kubernetes
Навык месяца: Kubernetes. CrashLoopBackOff, сервис без endpoints, production-ready манифест и откат зависшего релиза.
- OPS-701Под в CrashLoopBackOff8 мин
- OPS-702Production-ready Deploymentмидл · 14 мин
- OPS-703Service есть, а трафика нет7 мин
- OPS-704Релиз завис на середине7 мин
- OPS-705Под висит в Pendingджун · 8 мин
- OPS-706Поменяли настройку, а сервис её не видитджун · 8 мин
- OPS-707Ingress для checkout с HTTPS12 мин
- OPS-708База в кластере не стартует: PVC в Pending8 мин
- OPS-709Автомасштабирование checkout10 мин
- OPS-710Образ из приватного registry не скачиваетсяджун · 8 мин
- OPS-711Обслуживание ноды без простоя6 мин
- Разбор аварииReddit: обновление Kubernetes на Пи-деньразбор аварии
- Разбор аварииPokémon GO: в 50 раз больше трафика, чем планировалиразбор аварии
- ДежурствоПервая неделя в Kubernetesдежурство
- ПостмортемКаталог недоступен 23 минуты после переезда в k8sпостмортем
Месяц 8 · Мониторинг
Чёрная пятница
Навык месяца: Мониторинг и инцидент-менеджмент. Алерты, которым верят, PromQL под нагрузкой — и главная ночь года для маркетплейса.
- OPS-801Алерт на долю ошибок, а не на их количествомидл · 12 мин
- OPS-802Разведка перед большой ночью8 мин
- OPS-803«Сайт тормозит» — а какой именно сервис?10 мин
- OPS-804Чтобы ночью будило только важное12 мин
- OPS-805Поиск причины по логам в Lokiджун · 10 мин
- OPS-806Вернуть web-04 в мониторингджун · 10 мин
- OPS-807Предсказать, когда кончится дискмидл · 10 мин
- OPS-808Процесс инцидента: кто что делает6 мин
- OPS-809Сколько бюджета ошибок осталосьмидл · 10 мин
- OPS-810Метрика бэкапа замерла8 мин
- Разбор аварииCloudflare: одно регулярное выражение на весь мирразбор аварии
- Разбор аварииDatadog: сутки без мониторинга у тысяч компанийразбор аварии
- ДежурствоНочь Чёрной пятницыдежурство
- ПостмортемОшибки оплаты в первые 40 минут Чёрной пятницыпостмортем
Месяц 9 · Cloud и Terraform
Инфраструктура как код
Навык месяца: Облако и IaC. Security group, открытая всему интернету, план, который тихо удаляет базу, и переезд без простоя.
- OPS-901SSH, открытый всему интернету12 мин
- OPS-902План, который удаляет базумидл · 10 мин
- OPS-903Переезд без простоямидл · 7 мин
- OPS-904Счёт за облако вырос на 40%мидл · 12 мин
- OPS-905State в одном месте и под блокировкой10 мин
- OPS-906Кто-то менял инфраструктуру руками10 мин
- OPS-907Модуль вместо копипастымидл · 12 мин
- OPS-908Группа автомасштабирования не растёт10 мин
- OPS-909Восстановление базы из снапшотамидл · 8 мин
- OPS-910Сервис не может записать файл в хранилище10 мин
- Разбор аварииAtlassian: скрипт удалил 883 сайта клиентовразбор аварии
- Разбор аварииCapital One: как настройка в облаке стоила данных 100 миллионов человекразбор аварии
- ДежурствоДежурство по облакудежурство
- ПостмортемБакет с отчётами продавцов был публично доступен 22 минутыпостмортем
Разборы аварий подробно — в блоге. Проверить уровень до старта — бесплатный тест навыков.