Современный мир диктует свои условия ведения бизнеса и все больше проектов переходит в интернет, а IoT уже перестало быть новинкой на рынке. Эта тенденция требует от современного бизнеса быстрой трансформации ИТ-систем под актуальные требования рынка.
Организация процесса разработки и сокращение вывода новых программных продуктов и их функций на рынок стало ключевой в конкурентной борьбе организаций. Одной из важнейших элементов процесса организации этого процесса является стратегия DevOps - каким образом организован процесс взаимодействию структурных подразделений, насколько готова ваша инфраструктура к изменениям, насколько она стабильна и универсальна.
Влияние стратегии DevOps на разработку программных продуктов
DevOps - это набор методик и инструментов, это образ мышления, можно сказать культура, которая призвана объединить команды ИТ-инженеров, программистов, тестировщиков в единый организм и устранить узкие места в коммуникациях между ними, делая процесс разработки программного продукта непрерывным.
DevOps помогает решить следующие проблемы:
- исправлять ошибки раньше и быстрее;
- уменьшить время выхода продукта на рынок;
- повысить общую удовлетворенность конечным продуктом;
- повысить качество продукта;
- повысить продуктивность;
- улучшить командную работу.
Рисунок 1 - Схематично показано, как DevOps объединяет команды разработки, тестирования и эксплуатации.
Шаги реализации DevOps-стратегии
1. Проанализировать текущие состояние и понять, где можно использовать DevOps
Этот этап можно назвать планированием, поэтому перед тем как использовать методику, стоит:
- Проанализировать потребности в аппаратном и программном обеспечении.
- Какие есть нефункциональные потребности продукта (безопасность, производительность, мониторинг).
- Кто наша целевая аудитория и какая загруженность проекта.
На этом этапе важно помнить принципы и методику DevOps, которые необходимо использовать при планировании:
- Разделение окружений: для разработки, тестирования, предпродакшн и продакшн. При этом скорость разворачивания окружения должна быть очень высокая, т.е. практически все процессы автоматизированы и методы стандартизированы.
- Микросервисная архитектура с внешним хранением данных. Каждый сервис представляет собой отдельный функционал приложения, который взаимодействует с другим сервисом через API, а все необходимые артефакты сохраняется на отдельных ресурсах вне сервисов.
- Автоматическое регрессионное тестирование: позволяет убедиться, что обновление кода не ломает текущий функционал.
- СI/CD - один из первых шагов в DevOps, который позволяет автоматизировать процесс сборки, тестирования и интеграции кода в общий репозиторий, что позволяет на ранней стадии выявлять и быстро исправлять ошибки. Continuous deployment в свою очередь позволяет автоматически выкатить код на продакшн, уменьшая время на поиск и исправление ошибок.
Рисунок 2 - Схема CI/CD
2. Выбрать необходимые инструменты DevOps
Для каждого из принципов и методов есть большое количество инструментов для реализации задач. Ключевой момент в выборе инструмента - точно понимать свои потребности и не бояться экспериментировать, а также четко осознавать собственную квалификацию. Естественно, нет идеального набора инструментов, которые можно использовать безошибочно, но всегда есть лидеры и отстающие.
3. Тестирование и автоматизация
Любая из возможных операций должна быть автоматизирована и стандартизирована, что гарантирует:
- быструю разворачиваемость инфраструктуры;
- отсутствие человеческого фактора и ошибок;
- освобождение от рутинных задач для оптимизации структуры.
Тестирование позволит на ранних этапах выявлять и исправлять ошибки, что значительно дешевле, чем исправлять эти же ошибки уже после релиза.
Рисунок 3 - Пример общего рабочего процесса тестирования кода в проекте обработки и анализа данных
4. Объединить команды и убрать организационные барьеры
Внедряя методологию DevOps придется много экспериментировать с подходами, с инструментами, что не может не привести к ошибкам. Внедряя практику DevOps, вы должны заручиться поддержкой управленческого состава, что позволит сломать устоявшиеся неэффективные методики и привычки в компании. Программное обеспечение в продуктивной среде - должно стать единой целью для всей команды.
5. Оптимизация ради выгоды
Проанализировав процессы разработки, нужно идентифицировать процессы, на которых внедрение DevOps принесет наибольшую выгоду:
- если основные сбои возникают в процессе разработки и сборки - нужно начать с версионности и CI;
- если огрехи часто возникают на этапе тестирования - автоматизируйте процесс тестирования;
- если основные проблемы в инфраструктуре и деплое - CD поможет вам.
Для успешного внедрения методики DevOps, нужно видеть всю картину разработки в целом, не бояться экспериментировать с различными инструментами и методами. Условия рынка изменяются очень быстро, поэтому и разрабатываемый продукт должен меняться такими же темпами. В связи с этим, может пересматриваться стратегия DevOps, используемые инструменты и методы.