Как обычно пишут программы
Традиционный цикл разработки программ выглядит так:
- Программисты пишут код небольшими порциями.
- Когда очередная версия программы готова, она отдаётся в отдел тестирования.
- Тестировщики пишут тесты и ищут ошибки в коде. Если нашли — отдают программистам, и всё начинается с первого пункта.
- Если ошибок нет, код отправляется на сборку, чтобы включить его в новую версию программы.
- После добавления этого кода в новую версию код снова тестируют — всё ли нормально, дружит ли новый код со старым и нет ли каких конфликтов. Если есть — код отдаётся обратно программистам.
- Если всё в порядке, код идёт в бой, например, выкатывается на сайт.
Кажется, что всё так и должно быть. Но в крупных компаниях с большими проектами у такого подхода появляется много минусов.
Минусы поэтапной разработки
Всё дело в том, что с таким подходом есть чёткое разделение зон ответственности. Допустим, у нас простая разработка, которая разделена по отделам так:
- есть программисты, которые пишут код;
- дизайнеры, которые натягивают дизайн на этот код;
- тестировщики;
- и отдел выпуска финальных релизов.
Проблема в том, что у каждого из этих отделов своё рабочее окружение: они сами следят за своими библиотеками, фреймворками и операционной системой. Из-за этого то, что работает у одних, может не работать у других.
В итоге все тратят время на синхронизацию требований к коду, компонентам, фреймворкам и библиотекам. Работа стоит, код не пишется.
DevOps-подход к разработке
Изначально термином DevOps описывали только сам подход к разработке софта, но потом этим термином стали называть новую профессию. DevOps-подход в общих чертах можно описать так:
- если что-то можно автоматизировать — автоматизируем;
- каждый отдел использует один и тот же софт и настройку;
- финальный код должен как можно быстрее доходить до того, кто пользуется этим софтом;
- единая среда для разработки, тестирования и финального выпуска.
Благодаря этому подходу каждый отдел получает единую настроенную среду для работы — точно такую же, которой пользуются и программисты, и тестировщики, и аналитики, и служба поддержки. Это помогает быстрее тестировать и выпускать код, а также экономит время настройки каждого рабочего места.
Кто такие девопсы и что они делают
Чтобы всё это работало на практике, появились девопс-инженеры, или просто девопсы. Основная задача такого специалиста — настройка и поддержание в рабочем состоянии нужного софта в компании, а также автоматизация каждого этапа разработки.
Вот что может делать девопс-инженер:
- настраивать серверы и автоматически управлять их конфигурациями;
- создавать и настраивать виртуальные контейнеры для быстрого запуска нужного софта. Чаще всего для этого используют Docker;
- управлять этими контейнерами из одного места и автоматизировать всю их работу;
- настроить автоматическое тестирование кода;
- сделать так, чтобы код после тестов автоматически попадал в готовую сборку;
- собирать данные для мониторинга работы всей системы. Если какой-то сервис или процесс сломается, девопс сразу должен это увидеть и отреагировать.
👉 Главная задача девопса — сделать так, чтобы автоматизации было как можно больше и чтобы она действительно ускоряла разработку.
Что нужно уметь
Чтобы стать девопсом, нужно освоить много разного:
- принципы и теорию разработки ПО;
- инструменты автоматизации работы с кодом — Git, Jenkins;
- системное администрирование на уровне мидла или выше;
- виртуальные контейнеры и работу с ними — Docker и Kubernetes;
- базы данных — реляционные и нереляционные;
- веб-серверы;
- Python или другой язык для написания рабочих скриптов;
- системы управления конфигурацией серверов — Ansible;
- сбор данных по нагрузке и ошибкам во всех системах.
Если при этом девопс будет знать хотя бы на уровне джуниора выбранный язык программирования в компании — будет вообще идеально. Так он сможет учесть особенности языка и подобрать под него нужные инструменты.
Деньги
По данным Хабр Карьеры, в первом полугодии 2021 года средняя зарплата девопс-инженера — 171 тысяча в месяц. Джуниоры получают в среднем 82 тысячи, а сеньоры — 230 тысяч.
Что дальше
Скоро поговорим о докере и системах управления виртуальными контейнерами. Они здорово экономят время при разработке и позволяют быстро решать разные задачи. Например, с ними можно развернуть и полностью настроить кастомный вордпресс и все нужные сервисы всего за 4 минуты.