DevOps-тимлид Тимофей Самарин объясняет суть профессии на примере работы официанта, рассказывает о своих задачах и рекомендует пять полезных ссылок, вдохновляющих начать свой путь в DevOps.
Что такое DevOps и чем занимаются специалисты в этой сфере?
DevOps — это культура коллаборации разработчиков ПО и отделов эксплуатации IT-инфраструктуры плюс набор практик и инструментов для этой коллаборации. DevOps придумали, чтобы быстрее доставлять до потребителя качественный цифровой продукт.
Представьте, что есть два кафе. В одном повар готовит еду, а официант приносит ее посетителям и выписывает счет. В другом официант более вовлечен в процесс: он следит за температурой подаваемых блюд, за остротой ножей, за чистотой приборов, получает обратную связь от посетителей и передает ее повару. Второй официант и есть DevOps. Он нужен там, где важно всегда быть впереди конкурентов, как можно раньше доставляя пользователям качественный сервис.
Приведу пару примеров ситуаций, с которыми я сталкиваюсь регулярно.
Кейс 1
Наша команда сделала облачный сервис для группы разработчиков. Там находятся сервисы, которые разработчики используют для написания кода: базы данных, брокеры сообщений, хранилище ключей и другие. В ходе эксплуатации выяснилось, что версия одной из баз данных (БД) содержит ошибку, из-за которой программисты не смогли работать в течение нескольких часов. Когда мы нашли причину проблемы, решили обновить версию БД.
Обновление заняло два часа и потребовало участия двух инженеров. Они составили операционный план обновления, где по шагам расписали весь процесс и критерии выполнения работы — прописали все консольные команды, сделали резервную копию данных, остановили и запустили заново все связанные с БД процессы и сервисы, заново создали аккаунты пользователей. Проверили работоспособность на тестовом окружении и проделали все то же на рабочем, чтобы коллеги смогли пользоваться.
Кейс 2
Одна из виртуальных машин (ВМ) облачной системы отказала, нагрузка перераспределилась по другим виртуальным машинам и, соответственно, увеличилась на каждую из них. Из-за этого некоторые сервисы на этих ВМ стали работать медленно — например, в облаке код тормозил.
Выяснилось, что в процессе создания облака на одну из ВМ по ошибке установили операционную систему неподходящей версии, и она перестала работать. ВМ вывели из работы, удалили существующую ОС, установили корректную. Потом включили ВМ, дали небольшую нагрузку, чтобы убедиться, что она работает корректно. После чего увеличили нагрузку до полной и стабилизировали систему в целом.
Какие инструменты я использую
Я — тимлид в команде DevOps из девяти инженеров, то есть менеджер с инженерными функциями. Мой типичный день состоит из митингов, чтения документации и работы с тикетами — запросами в службу поддержки от клиентов.
Мои инструменты, как менеджера, — это почта и мессенджер для связи с заказчиками, командой и другими отделами организации: продажами, IT-инфраструктурой.
Я ежедневно пользуюсь Jira и Confluence для трекинга задач и наполнения базы знаний. Для инженерных задач у меня всегда работает виртуальная машина на Linux — я пользуюсь операционными системами Ubuntu и CentOS. В ней живут сценарии командной строки для оболочки — Bash- и Python-скрипты.
В работе пригодятся Ansible-плейбуки — способ удаленно отправлять команды на компьютеры при помощи скриптов и YAML-файлы для быстрого разворота виртуальной инфраструктуры по принципу Infrastructure as Code. Этот принцип предполагает виртуальную настройку инфраструктуры компьютеров вместо ручной.
Как инженер я могу использовать приложения PyCharm, Notepad++, Visual Studio Code, Excel для разработки решений. Еще у меня всегда открыта масса вкладок в браузере, например GitHub, Jenkins, OpenStack/OpenShift/Kubernetes dashboards, Zabbix/Grafana/Alerta для мониторинга статусов серверов и сервисов, отчеты о работе публичных облаков Google/Amazon/Microsoft, страницы с внешней и внутренней документацией.
Почему DevOps — это круто и важно?
Как DevOps-команда, мы постоянно работаем над качеством продукта: стараемся заботиться о безопасности на этапе дизайна и разработки приложений и выстраивания архитектуры облачных систем. Поэтому мы везде, где только можем, используем лучшие практики мировой индустрии, например принцип наименьших привилегий. Это значит, что любой пользователь или сервисный аккаунт должен иметь ровно столько прав, сколько нужно для совершения необходимых действий, и не более того. Тогда не возникает ситуаций, когда кто-то случайно внес изменения, чем вызвал отказ системы и у конечного пользователя перестали работать сервис или программа.
Иногда из-за этого приходится спорить с разработчиками, которым всегда нужно больше прав, зато потом приятно получать от продаж и поддержки фидбек об отличном качестве нашего продукта и о том, что заказчик им доволен.
С какими проблемами может столкнуться DevOps-команда?
Вся DevOps-методология содержит в себе как пути решения, так и методы предотвращения проблем, даже самых критичных. За годы, пока существует практика, люди накопили массу опыта, так что моя задача как руководителя команды в основном сводится к поиску чужих решений.
Свои проблемы тоже были: мы были зависимы от внутренней IT-инфраструктуры компании и команды айтишников. Пришлось много поработать с менеджментом этой команды и перейти в публичные облака: AWS, GCP, MS Azure.
В работе нужно много говорить и слушать, часто не хватает времени на решение рутинных задач. Нередко задерживаемся после рабочего дня из-за огромного количества встреч.
Важные софт-скиллы для работы в DevOps
Без коммуникативных навыков, таких как открытость, прозрачность, общительность, в DevOps будет сложно. В этой сфере нужно много общаться, постоянно давать обратную связь.
Важно умение внятно формулировать и излагать свои мысли, а также доносить до собеседника сложные концепции, даже если у него нет глубоких технических знаний. Для этого существует практика ELI5 — Explain Like I’m 5: представьте, что вы объясняете некую идею пятилетнему ребенку. Если у вас получилось, значит, с любым коллегой получится точно.
Три причины, почему стоит начать заниматься DevOps
- Это красиво, если вам нравится разбираться в устройстве комплексных архитектурных схем. Сначала вы долго думаете, как объединить разные сложные программы и сервисы в одну систему, а потом наслаждаетесь результатом.
- Это сложно, но развивает мозг. В голове приходится держать много информации, нужно думать и реагировать быстро.
- Это актуально и востребовано. Методология используется во всем мире и применяется все чаще, чем традиционные схемы разработки и внедрения ПО. Если хотите уверенности в будущем, DevOps — хороший выбор.
5 важных ссылок: что почитать или посмотреть, если хочется развиваться в DevOps?
- Книга Дэвиса Дженнифера и Дэниелса Кэтрина «Философия DevOps. Искусство управления IT».
- Four DevOps Key Metrics — принцип, на который полезно опираться в работе. Он описан на многих платформах — выберите тот вариант, который нравится больше.
- DevOps Maturity Model — помогает уточнить принципы и методики, необходимые для улучшения создаваемой рабочей среды.
- Отчеты State of DevOps различных компаний, чтобы быть в курсе последних трендов в отрасли.
- DevOps Culture and Mindset от Coursera — полезный базовый вводный курс.