Урок 1 из 8 · 15 мин · обновлено
Кто такой DevOps-инженер и откуда взялся DevOps
Что такое DevOps, какие проблемы он решает, чем занимается DevOps-инженер и по каким признакам видно, что команда выпускает программы хорошо.
Проблема «стены»
В «Чайной лавке» сначала всё было просто: разработчик дописывал код и вечером копировал файлы на сервер. Через полгода в команде три разработчика, выпуск раз в месяц, и каждый раз что-то ломается: то забыли обновить базу, то на сервере другая версия Python, то перезаписали чужие изменения.
Так выглядит классическая проблема: разработка торопится выпустить новое, эксплуатация боится всё сломать, а между ними — «стена» и ручная работа. DevOps — ответ на это: общие цели, общая ответственность и автоматизация всего пути кода к пользователям.
Чем занимается DevOps-инженер
- Сборка и проверка — после каждого изменения код автоматически собирается и проходит тесты (урок 3).
- Выкладка — новая версия попадает на серверы по кнопке или сама, без ручного копирования.
- Контейнеры — приложение упаковано так, что работает одинаково везде (урок 4).
- Инфраструктура — серверы, сети, базы данных настроены по описанию в коде, а не вручную (урок 6).
- Мониторинг — команда узнаёт о проблеме раньше пользователей (урок 7).
- Помощь команде — разработчики сами выкладывают свои изменения через удобные инструменты, которые настроил DevOps-инженер.
Часто и понемногу
Главная идея DevOps: выпускать часто и маленькими частями. Кажется, что это опаснее, но на деле наоборот:
| Редкие большие выпуски | Частые маленькие выпуски | |
|---|---|---|
| Изменений в выпуске | Сотни | Одно-два |
| Если что-то сломалось | Неясно, что именно | Причина очевидна |
| Откат | Сложный, теряется много работы | Быстрый |
| Нервы команды | Ночные выпуски, стресс | Рутина |
Крупные IT-компании выпускают изменения десятки раз в день — и именно благодаря автоматизации.
Как понять, что выпуск налажен
Исследования команд разработки выделяют четыре простых показателя:
- частота выпусков — как часто новое попадает к пользователям;
- время от коммита до выпуска — сколько ждёт готовое изменение;
- доля неудачных выпусков — сколько из них приходится откатывать или срочно чинить;
- время восстановления — как быстро сервис снова работает после сбоя.
Работа DevOps-инженера — улучшать все четыре.
Попробуйте сами. Выпуск новой версии «Чайной лавки» сейчас выглядит так: разработчик собирает архив на своём компьютере, по почте отправляет администратору, тот вечером копирует файлы на сервер и вручную перезапускает сайт. Выпишите, что здесь может пойти не так и что бы вы автоматизировали первым.
Пример ответа
Что может пойти не так: архив собран с ошибкой или без последних изменений; администратор скопировал не в ту папку; на сервере другая версия программ; тесты никто не запускал; если сайт упал, непонятно, как быстро вернуть прошлую версию.
Что автоматизировать первым: конвейер, который после каждого изменения в Git сам запускает тесты и собирает версию. Следующий шаг — автоматическая выкладка на сервер этой проверенной версии и возможность одной командой откатиться на предыдущую.
Мини-тест · 4 вопроса
Проверьте себя
Выберите вариант, который кажется вам правильным. В конце вы увидите свой результат и объяснение к каждому вопросу.
-
Какую проблему решает DevOps?
DevOps соединяет разработку и эксплуатацию и автоматизирует выпуск, чтобы новые версии выходили часто и без сбоев.
-
Чем занимается DevOps-инженер?
Он отвечает за путь кода от коммита разработчика до работающего сервиса и за то, чтобы сервис был стабильным.
-
Почему выпускать часто и маленькими частями безопаснее, чем редко и большими?
В большом выпуске сотни изменений, и найти виновника сбоя трудно. В маленьком — одно-два, причина очевидна.
-
Что из этого — признак хорошо налаженного выпуска?
Сбои случаются у всех. Важно, как часто выпуски ломают продукт и как быстро команда всё чинит.