Уже много лет термин DevOps вызывает бурные дискуссии в IT сфере. Мнения по этому поводу разделились – если одна часть специалистов считает DevOps лишь маркетинговым ходом, то вторая убеждена в том, что этот подход совершил революцию в IT. Тем не менее, популярность DevOps с каждым годом растет, но применение подхода не всегда оправдывает ожидания. Это связано в первую очередь с непониманием сути DevOps, его методов и культуры.
Что такое DevOps
DevOps (Development Operations, акроним от англ. development и operations) — методика программной разработки, подразумевающая тесное взаимодействие разработчиков со специалистами сервисных IT-подразделений. В наибольшей степени DevOps необходим командам, которым нужны частые выпуски ПО.
DevOps позволяет стандартизировать окружения разработки для быстрого переноса ПО между разными этапами и средами, что значительно ускоряет выпуск новых релизов.
Команды, применяющие DevOps становятся эффективнее и выпускают более совершенное ПО. Почему так происходит?
Преимущества DevOps
- Ускорение выпуска ПО
DevOps позволяет автоматизировать сборку ПО почти полностью, что значительно ускоряет весь процесс. - Надежность и безопасность
Инструменты DevOps позволяют не только контролировать качество обновлений приложения и изменений инфраструктуры, но и минимизировать риски при разработке. - Масштабирование
DevOps обеспечивает стабильную разработку и поддержку инфраструктуры при любом масштабе. - Оптимизация совместной работы
DevOps – это командная работа. Культурные принципы DevOps несут такие ценности, как сопричастность и ответственность. Это значительно экономит командное время.
Вся сущность DevOps-подхода строится на пяти принципах – Culture, Automation, Lean, Measurement, Sharing.
Принципы DevOps
- Culture
Культура DevOps – это сотрудничество и совместная работа. От культуры в организации зависит то, как будут сформированы все процессы в целом, потому подробнее о культуре DevOps мы расскажем ниже. - Automation
Автоматизация устраняет избыточный ручной труд, заменяя его на быстрые, надежные автоматизированные процессы. - Lean IT
Бережливость в IT подразумевает выявление и устранение потерь (времени и других ресурсов) при разработке и эксплуатации ПО. Для этого весь процесс визуализируется с помощью карты потока создания ценности. - Measurement
В DevOps измерять необходимо вообще всё. При этом действительно важные метрики необходимо контролировать постоянно, а остальные данные – при необходимости. - Sharing
Распространение знаний подчеркивает важность открытых коммуникаций в компании. Принцип борется за использование Канбан и других методов визуализации, для того чтобы каждый мог понять на каком этапе сейчас находится каждая конкретная задача.
Внедрение DevOps предполагает изменение культуры, так как в первую очередь этот подход разрушает барьеры между командами разработчиков и командами специалистов сервисных IT-подразделений.
Культура DevOps
- Прозрачность и единство
Одним из главных принципов DevOps является прозрачность при взаимодействии между командами. Команды DevOps совместно планируют работу и обмениваются информацией при ее выполнении. - Участие и ответственность
Команды DevOps несут ответственность за результат на всех этапах разработки. Этот значительно улучшает качество ПО. - Сокращение циклов выпуска
Методика DevOps предполагает внедрение коротких циклов выпуска. Это делает команду более гибкой и позволяет ей легче адаптироваться к потребностям клиентов. Короткие циклы выпуска ПО делают систему более стабильной так как облегчается планирование и управление рисками. - Постоянное обучение
Команды DevOps стремятся к непрерывному повышению профессиональной компетенции, а полученные знания применяют на практике. В DevOps всегда есть куда расти.
Методы DevOps
Быстрее автоматизировать и оптимизировать процессы разработки ПО помогают основные методы DevOps:
- Непрерывная интеграция
Непрерывная интеграция – это принцип частой сборки и тестирования ПО для выявления ошибок на ранней стадии разработки. Этот метод помогает существенно сократить время на выпуск новых обновлений. - Непрерывная доставка
Непрерывная доставка – это автоматизация всего процесса релиза ПО. При максимальной автоматизации непрерывной доставки вручную необходимо только запустить процесс. Избавившись от монотонного ручного труда, разработчик становится намного продуктивнее. - Инфраструктура как код
Инфраструктура как код – это практика выделения и управления инфраструктурой методами разработки ПО. Этот метод устранил границы между созданием системы и среды для нее, что значительно облегчило работу разработчиков со средой. - Управление конфигурациями
Управление конфигурациями занимается поддержанием целостности системы на протяжении всего жизненного цикла ПО. Использование кода в управлении конфигурацией позволяет в любой момент времени иметь доступ к актуальной версии конфигурационного элемента. - Мониторинг и ведение журналов
Мониторинг метрик приложения позволяет анализировать то, как обновления воздействуют на пользователей, а также заблаговременно найти источник проблем или незапланированных изменений.
Как работает DevOps в SimpleOne
SimpleOne — разработчик программного обеспечения для автоматизации бизнес-процессов. Продуктовая разработка подразумевает необходимость применения DevOps в своей работе. В SimpleOne есть целое направление DevOps, которое оптимизирует весь цикл разработки программных продуктов. DevOps-инженеры SimpleOne обладают T-shaped skills, что значительно повышает скорость и качество их труда. Культура DevOps проникла в каждый уголок компании, устранив силосную культуру и бункерный менталитет. Тесное взаимодействие, непрерывное улучшение, высокое качество стали основными принципами работы всех направлений SimpleOne.
Сейчас в направлении DevOps работает 4 человека, которые каждый день стараются сделать работу команды SimpleOne лучше.
В своей работе команда использует ряд инструментов, в числе которых:
- GitLab CI – организация CI/CD;
- Ansible – развертывание и конфигурация инфраструктуры;
- Goharbor – хранение артефактов;
- CentOS 8 – основная ОС;
- Prometheus, Alertmanager, Grafana – мониторинг;
- Elasticsearch, Fluent, Kibana – сборка, хранение и визуализация логов.
За год работы команда DevOps-инженеров:
- упаковала платформу в Docker;
- построила мониторинг и логирование;
- развернула ряд инструментов для оптимизации работы команд;
- построила цикл CI/CD.
В этом году планируется:
- кластеризация;
- переход на Kubernetes;
- углубленная автоматизация процессов;
- создание динамических инвентарей с интеграцией с ALM-системой на платформе SimpleOne.
Применение DevOps в SimpleOne объединяет усилия отдельных подразделений для создания более качественных и надежных продуктов, упрощает общение, взаимодействие и интеграцию внутри организации. Внедрив DevOps, мы получили возможность лучше реагировать на потребности клиентов, повышать доверие к создаваемому ПО и быстрее достигать бизнес-целей.