Путь DevOps-инженера — devoops
1. Основа: Linux и терминал
Почти вся серверная инфраструктура работает на Linux, и почти всё взаимодействие с ней идёт через терминал. Без этого шага каждый следующий превращается в копирование команд из интернета без понимания, что они делают.
- Ориентироваться в файловой системе и читать права доступа, не заглядывая в шпаргалку
- Понимать, почему процесс не запустился: посмотреть логи, код возврата, занятый порт
- Написать скрипт, который не разваливается на пробеле в имени файла
- Объяснить разницу между ядром и дистрибутивом
Linux, Терминал
2. Git и сети
Git — это то, через что проходит любое изменение в инфраструктуре. Сети — то, из-за чего чаще всего «у меня работает, а на сервере нет». Два навыка, которые экономят больше всего времени на отладке.
- Разобрать конфликт слияния руками и понимать, что именно выбираешь
- Объяснить, когда merge, а когда rebase, и почему это не вопрос вкуса
- Пройти путь запроса от DNS до ответа приложения и назвать, где он может сломаться
- Диагностировать «не открывается» с помощью dig, curl и ss
Git, Сети
3. Контейнеры
С этого шага начинается собственно DevOps-часть: приложение перестаёт зависеть от того, что установлено на конкретной машине. Здесь же появляется первый реальный повод разбираться в правах, сетях и файловой системе — всё из предыдущих шагов возвращается.
- Прочитать чужой Dockerfile и объяснить, зачем нужен каждый слой
- Уменьшить образ в несколько раз и понимать, за счёт чего
- Поднять несколько связанных сервисов через compose
- Найти, почему контейнер падает сразу после старта
Контейнеры
4. CI/CD и Kubernetes
Автоматическая сборка и выкат, а затем оркестрация. Kubernetes стоит именно здесь, а не раньше: без контейнеров и сетей он выглядит набором непонятных YAML-файлов, которые копируют из документации.
- Собрать пайплайн, который сам проверяет и выкатывает изменение
- Объяснить разницу между continuous delivery и continuous deployment
- Прочитать манифест Deployment и сказать, что произойдёт при его применении
- Понимать, что делает кластер, когда падает нода
CI/CD, Kubernetes
5. Прод: наблюдаемость, надёжность, IaC
Разница между «я умею запускать» и «мне можно доверить прод». Здесь появляются вопросы, на которые нет одного правильного ответа: сколько хранить логи, что считать инцидентом, когда откатываться, а когда чинить вперёд.
- Понимать, когда нужна метрика, когда лог, а когда трейс
- Описать инфраструктуру кодом так, чтобы её можно было пересоздать с нуля
- Проверить, что бэкап действительно восстанавливается
- Спроектировать выкат, который переживает падение одного узла
Автоматизация, Наблюдаемость, Эксплуатация, Данные