DevOps вам в помощь: ускоряем релизы качественно
В 2018 году DevOps-инженеры и эксперты по аналитическим данным (Data Scientist) заняли две верхние строчки в перечне 50 наиболее оплачиваемых профессий в США по версии Glassdoor.
Высокая востребованность DevOps как концепции объясняется тем, что в условиях глобальной диджитализации и быстрых изменений рынка бизнес ждет от IT таких решений, которые помогут быстрее выпустить продукт. И не просто продукт, а в соответствии с высокими стандартами пользовательского опыта, которые задают сейчас лидеры.
Банки понимают, что если не предложить клиенту удобные и простые приложения для дистанционного обслуживания, он просто начнет пользоваться услугами тех компаний, которые окажутся в прямом смысле слова “ближе”, а точнее в мобильном клиента.
Медиаресурсы непрерывно ищут новые способы изучить своего читателя и найти к нему персональный подход. Ритейлеры оптимизируют каналы общения с покупателем, избавляя его от размышлений о том, как купить, чтобы привлечь его внимание к тому, что купить.
Как не отстать в гонке сильных соперников? Для этого бизнесу нужно внедрять новые IT-решения так, чтобы они начинали давать результаты “еще вчера”. И DevOps-практики в этом смысле работают именно в этом направлении.
Что такое DevOps?
DevOps — это философия, подход к работе, который сформировался в ответ на изменения рынка, технологий и экосистемы в целом. DevOps-практики охватывают автоматизацию и виртуализацию процессов разработки и направлены на то, чтобы регулировать поток информации между участниками проекта. Их реализацию могут брать на себя участники IT-подразделения, но мы на собственном опыте убедились, что присутствие в команде специально выделенных DevOps’ов дает массу преимуществ.
В еще не забытые времена раннего DevOps’а разработчики нашей команды самостоятельно справлялись с процедурами разработки и развертывания, и это не вызывало проблем. Каждый программист знал всю процедуру от начала до конца и мог ее выполнить. Но компания расширялась, росли объемы работ, приходили новые сотрудники, которым нужно было время, чтобы освоить процессы. Мы нашли идею выделить для этих целей отдельного специалиста разумной и перспективной.
Ожидания и прогнозы оправдались. DevOps-инженер занял свое место в команде Umbrella IT: релизы не проходят, а пролетают, участники команды не отвлекаются от своих основных задач, автоматизация позволяет сэкономить время, каждый участник проекта получает точную информацию о текущем состоянии дел, а заказчики возвращаются к нам с новыми идеями и проектами.
Никакой магии, или DevOps-практики, как часть командной работы
Как показывает опыт, наиболее эффективные преобразования и улучшения становятся результатом того, что вся команда работает на достижение общей цели.
Отдельные Василий и Иннокентий могут быть супергениями в своем деле, однако успех проекта базируется не только на индивидуальных талантах, но и на правильно настроенных процессах и четко организованной коммуникации.
Касается это и DevOps-ов: их вклад в общую работу начинается с конфигурации сред для разработчиков и QA и всех необходимых настроек в самом начале проекта.
Начало проекта
DevOps создает условия для того, чтобы разработчики и QA-специалисты могли не отвлекаясь выполнять и тестировать проектные задачи. Для этого производится настройка инструмента для совместной работы с кодом, сред development (где трудится разработчик в процессе написания кода), staging (где происходит предварительное тестирование приложения) и production (где запускается работающее приложение) и автотестов.
Когда окружение создано, начинается настройка процессов:
- Continuous Integration: слияние рабочих веток в основную, в рамках одного репозитория, в результате чего все изменения регулярно переносятся из рабочих в основную ветку и на каждое изменение производится сборка приложения и прогон автотестов;
- Continuous Delivery: непрерывная поставка обновлений работающего продукта, в процессе которой проверка тестировщиками не влияет на уже существующие функции;
- Continuous Deployment: непрерывное автоматическое развертывание новых функций и изменений в приложении.
Для командной работы правильно настроенное и поддерживаемое рабочее окружение означает сразу несколько преимуществ:
1. Автоматизация и стандартизация процессов сокращает общее время разработки продукта. Исполнение процессов остается неизменным, не зависит от исполнителя, а такая повторяемость обеспечивает стабильное качество продукта на выходе.
2. Работа в режиме коротких итераций гарантирует то, что любые ошибки и баги будут обнаружены на самом раннем этапе, а не когда продукт будет уже наполовину готов. Что в итоге? Экономится время и повышается качество готового продукта.
3. Внутренние ресурсы команды используются более эффективно, а сэкономленное время распределяется на решение внеочередных задач. Возникновение таких задач в работе практически неизбежно, но уменьшить их влияние на основные процессы вполне реально.
4. Следующий фактор, который несомненно нужно записать в плюс — коммуникация. Оповещение о событиях (ошибки, сбои, успешное прохождение тестов) настраивается так, что все заинтересованные лица получают своевременную и унифицированную информацию.
5. Корректно организованную и настроенную систему можно легко масштабировать. То есть если когда вы решите расширяться, не нужно будет начинать распутывать сеть взаимосвязей с самого начала, а достаточно будет взять за основу слаженно работающую исходную структуру.
На этом работа DevOps-инженера не останавливается: на всех последующих этапах он продолжает заниматься корректировками и дополнительными настройками в зависимости от того, что именно происходит на проекте.

Релиз
Наступает время релиза, и у DevOps-инженера начинается жаркая пора контроля, подведения итогов и окончательного приведения продукта в надлежащий вид.
В сферу ответственности DevOps’а на этом этапе входит:
- выбор и настройка систем для мониторинга и оповещения: сервер (Zabbix, Grafana, Prometheus) и приложения (New Relic)
- выбор и настройка системы логирования (ELK)
- безопасность: оценка уязвимости, Qualys, статический анализ кода
- деплои/CI: Bamboo, Jenkins, GitLab, travis ci, teamcity
- Резервное копирование и восстановление: AWS (встроенный механизм), Acronis, Bacula
- своевременное обновление программного обеспечения: обновление зависимостей приложения, еженедельная проверка и обновление пакета системных программ, автоматические обновления для системы безопасности
Как вы понимаете, DevOps проживает с приложением всю историю его создания и последующей работы. Следит за обновлениями, мониторит изменения, сопровождает расширение. Приложение не может не развиваться, чтобы оставаться в топе, а DevOps-инженер — это один из тех, кто будет его поддерживать и предотвращать потенциальные проблемы.
Преимущества интеграции DevOps-практик
Реальных примеров того, как бизнес успешно использует DevOps-концепции и усиливает IT-процессы, существует много. На них можно учиться, но их нельзя просто скопировать и примерить на себя. Суть в том, что они должны органично вплетаться в культуру и организационную структуру IT-команды, а иначе — отторжение, непонимание и прочие неприятные последствия. Непросто? Да. Но игра стоит свеч. Мы проверили это на практике, и вот наши результаты:
- автоматизация процессов разработки: увеличение скорости разработки и повышение качества готового продукта;
- оптимизация использования серверных ресурсов: экономия средств за счет того, что оплачиваются только фактически используемые ресурсы;
- усиление безопасности: оптимальная защита, мониторинг уязвимостей и спокойный сон по ночам;
- контроль стабильности систем: бесперебойная работа в режиме 24/7;
- готовность систем к росту нагрузок: отсутствие ограничений для дальнейшего расширения.
Фото: Shutterstock.com