От 1 раза в две недели до 2 раз в день
От 3 месяцев до 2 недель
3 месяца
Сведения о клиенте
Клиент — это компания, входящая в группу глобальной корпорации из Сингапура, занимающаяся разработкой программной платформы для страхования имущества и страхования от несчастных случаев. Программное обеспечение представляет собой надёжную систему, разработанную на объектно-ориентированном языке программирования. Данное программное обеспечение поставляется по всему миру, особенно в странах Азии.
Задача
Клиентом была поставлена задача повысить оперативность разработки и уменьшить объём операций, выполняемых вручную. На этапе анализа мы определили, что в течение более чем десяти лет непрерывной разработки увеличилась как сама система, так и команда разработчиков, в результате чего возникли три основные проблемы.
1. Развёртывание вручную
Развертывание в каждой среде выполнялось вручную, что приводило к временным затратам. Кроме того, иногда возникала необходимость повторного выполнения работ из-за человеческих ошибок.
2. Неэффективный рабочий процесс разработки
Отсутствовала какая-либо связь между системой управления исходным кодом, системой управления регистрируемыми запросами и т.д. Это приводило к увеличению сроков выполнения заказов и периодическим пропускам некоторых процессов проверки.
3. Длительное время реализации изменений
Среднее время выполнения заявок на устранение неисправностей и внесение изменений составляло 3 месяца. В течение такого длительного срока появлялись новые заявки, относящиеся к тому же источнику, что увеличивало сложность разработки.
Решение
Было очевидно, что проблемы клиента могут быть решены путём внедрения CI/CD*. Поэтому основное внимание было уделено проектированию подходящего решения. На основе информации, полученной на этапе анализа, нами были разработаны и реализованы следующие 3 решения.
*В конкретном случае была реализована непрерывная доставка (CD).
1. Автоматизация каждой операции
С учётом того, что IaC будет сопровождаться эксплуатационной группой, мы выбрали Ansible, который работает на сравнительно простом языке YAML и управляется без агента. Затем мы объединили существующую документацию с информацией, полученной в ходе интервью, и создали на их основе файлы Ansible YAML.
2. Оркестрация задач автоматизации с помощью Jenkins
Мы усовершенствовали рабочий процесс разработки на основе результатов анализа документации для разработчиков, интервью, а также лучших практик использования конвейеров Jenkins.
3. Организация взаимосвязи рабочих процессов и задач разработки с помощью Jira
Клиент использовал собственную систему управления заказами. Мы произвели оценку, следует ли улучшить существующую систему или внедрить другой инструмент для бесшовной интеграции процессов разработки и автоматизации операций. В результате нами было принято решение использовать Jira для объединения рабочих процессов разработки и управления заявками. Преимуществом Jira является возможность миграции текущих заявок из существующей системы в новую, а также возможность бесшовной интеграции с другими системами.
Результат
Клиент успешно внедрил CI/CD в свою среду разработки. Группы разработки и эксплуатации освоили новый процесс разработки и набор инструментов в течение прибл. 3 месяцев. В результате стала возможным регистрация в репозитории ресурсов, прошедших модульное и комплексное тестирование с частотой 2 раза в день. Таким образом, решение обеспечило повышение гибкости и предотвращение повторного выполнения работ, как и требовалось клиенту.
• Частота развёртывания:
Раз в две недели → Ежедневно → 2 раза в день
• Время реализации изменений:
3 месяца → 1 месяц → 2 недели
• Частота отказов изменений:
30% → 15% → 10%
Несмотря на то, что концепция DevOps является общей, реализация всегда зависит от конкретных условий клиента. Доверьте нам внедрение/улучшение DevOps в вашей организации.