Урок 1 из 8 · 15 мин · обновлено

Кто такой DevOps-инженер и откуда взялся DevOps

Что такое DevOps, какие проблемы он решает, чем занимается DevOps-инженер и по каким признакам видно, что команда выпускает программы хорошо.

Проблема «стены»

В «Чайной лавке» сначала всё было просто: разработчик дописывал код и вечером копировал файлы на сервер. Через полгода в команде три разработчика, выпуск раз в месяц, и каждый раз что-то ломается: то забыли обновить базу, то на сервере другая версия Python, то перезаписали чужие изменения.

Так выглядит классическая проблема: разработка торопится выпустить новое, эксплуатация боится всё сломать, а между ними — «стена» и ручная работа. DevOps — ответ на это: общие цели, общая ответственность и автоматизация всего пути кода к пользователям.

Чем занимается DevOps-инженер

  • Сборка и проверка — после каждого изменения код автоматически собирается и проходит тесты (урок 3).
  • Выкладка — новая версия попадает на серверы по кнопке или сама, без ручного копирования.
  • Контейнеры — приложение упаковано так, что работает одинаково везде (урок 4).
  • Инфраструктура — серверы, сети, базы данных настроены по описанию в коде, а не вручную (урок 6).
  • Мониторинг — команда узнаёт о проблеме раньше пользователей (урок 7).
  • Помощь команде — разработчики сами выкладывают свои изменения через удобные инструменты, которые настроил DevOps-инженер.

Часто и понемногу

Главная идея DevOps: выпускать часто и маленькими частями. Кажется, что это опаснее, но на деле наоборот:

Редкие большие выпуски Частые маленькие выпуски
Изменений в выпуске Сотни Одно-два
Если что-то сломалось Неясно, что именно Причина очевидна
Откат Сложный, теряется много работы Быстрый
Нервы команды Ночные выпуски, стресс Рутина

Крупные IT-компании выпускают изменения десятки раз в день — и именно благодаря автоматизации.

Как понять, что выпуск налажен

Исследования команд разработки выделяют четыре простых показателя:

  • частота выпусков — как часто новое попадает к пользователям;
  • время от коммита до выпуска — сколько ждёт готовое изменение;
  • доля неудачных выпусков — сколько из них приходится откатывать или срочно чинить;
  • время восстановления — как быстро сервис снова работает после сбоя.

Работа DevOps-инженера — улучшать все четыре.

Попробуйте сами. Выпуск новой версии «Чайной лавки» сейчас выглядит так: разработчик собирает архив на своём компьютере, по почте отправляет администратору, тот вечером копирует файлы на сервер и вручную перезапускает сайт. Выпишите, что здесь может пойти не так и что бы вы автоматизировали первым.

Пример ответа

Что может пойти не так: архив собран с ошибкой или без последних изменений; администратор скопировал не в ту папку; на сервере другая версия программ; тесты никто не запускал; если сайт упал, непонятно, как быстро вернуть прошлую версию.

Что автоматизировать первым: конвейер, который после каждого изменения в Git сам запускает тесты и собирает версию. Следующий шаг — автоматическая выкладка на сервер этой проверенной версии и возможность одной командой откатиться на предыдущую.

Мини-тест · 4 вопроса

Проверьте себя

Выберите вариант, который кажется вам правильным. В конце вы увидите свой результат и объяснение к каждому вопросу.

  1. Какую проблему решает DevOps?

  2. Чем занимается DevOps-инженер?

  3. Почему выпускать часто и маленькими частями безопаснее, чем редко и большими?

  4. Что из этого — признак хорошо налаженного выпуска?