В одном из предыдущих постов о DevOps мы обещали рассказать о технологической составляющей нашего CI/CD-конвейера.
Чтобы в красках описать всю картину и в полной мере разделить свои эмоции (боль и кровавые слезы), расскажу о том, с чего мы начинали пару лет назад и к чему пришли сегодня.
Обо мне
Я работаю в Райффайзен более пяти лет. Сначала я был внештатным специалистом, а сейчас руковожу отделом, который поддерживает конвейер CI/CD и занимается разработкой автоматизации.За этот значительный период времени мы с моей командой успели поработать, наверное, с 90% всего программного обеспечения, используемого в банке, и накопить много полезного опыта, частью которого мне хотелось бы поделиться.
Какая технология и подход использовались два года назад и к чему мы пришли?
Как и любая крупная компания, не имевшая утвержденного набора Middle и Software, со временем мы пришли к огромному стеку используемых технологий.Команды разработчиков использовали совершенно разные языки программирования, фреймворки и инструменты.
Группы поддержки также использовали то, что знали, с разной степенью успеха.
То есть у Dev были свои инструменты, у Ops — свои.
Автоматизация, если она и была, была на уровне «cmd вызывает батник, он запускает VBS-скрипт, создающий объект в COM+, который.
» НЕТ, ЭТО ВСЕ, Я НЕ ХОЧУ ЭТО ПОМНИТЬ! Итак, о технологии.
Начнем с компакт-диска, если его можно так назвать.
Несколько subversion-установок, в просторечии - SVN, пара подпольных GIT-установок, все это работает либо на чудесной Win 2003, либо на новенькой RHEL 5. И конечно, это не связано друг с другом, буквально НИКАК.
Многие люди предпочли вообще не использовать системы контроля версий.
База знаний и документации велась либо в SVN (да-да) в виде инструкций msdoc, либо на какой-то внутренней командной вики.
Стоит отметить, что было 3-4 команды, которые активно строили свой автоматизированный процесс.
Что не могло не радовать.
Но их опыт было сложно масштабировать из-за количества и различий в используемых технологиях.
Jenkins, TeamCity, Bamboo, Artifactory, Nexus, в общем, каждый делал что хотел и как умел.
«Мы построим свой конвейер, с блэкджеком и куртизанками»
Все эти инструменты поддерживались самими разработчиками, которые тратили на это часть своего времени вместо того, чтобы вырезать новые возможности.В качестве системы управления билетами использовался Remedy, и это моя личная, ужасная, горькая боль.
Мне кажется, те, кто работал, поймут, и если вам посчастливилось не иметь дело с Remedy, я могу вам только позавидовать.
Не менее превосходной была система управления тестированием — HP ALM. К системе отслеживания ошибок у меня претензий нет, вся проблема в интеграции.
Но возможно, что это всего лишь моя личная «любовь» к программным продуктам HP. Первым важным изменением в нашем зоопарке, с моей точки зрения, стало появление Jira. После Remedy это был глоток свежего воздуха: легко, быстро, удобно! Сначала несколько команд разработчиков решили попробовать Jira, и в итоге она стала общебанковской системой.
Сначала на него была перенесена вся работа над непромышленными средами, а сейчас мы внедряем JIRA SD как систему управления инцидентами и изменениями.
Также важно, что JIRA начала вместе работать над задачами Dev и Ops. Слияние тоже не заставило себя долго ждать.
Затем мы приступили к централизации всех систем хранения исходного кода.
Мы поставили централизованный стенд SVN, в который перенесли репозитории всех команд. Bitbucket также поднимался как альтернатива SVN, и многие команды сразу же перешли на него.
В результате весь самодельный код стал храниться в двух продуктах, и каждая команда самостоятельно решала, что использовать.
К этому времени уже созрела идея создания полноценного конвейера для автоматизации CI/CD. Жаркие споры развернулись вокруг выбора инструмента для автоматизации сборки и установки программного обеспечения, а также инструмента для хранения бинарных объектов.
Мы очень долго присматривались к тому, что было доступно на рынке, что-то сравнивали, читали, изучали, пробовали и тестировали, в том числе и самописный инструмент, разработанный в нашем головном офисе в Вене.
В итоге мы остановились на Bamboo по нескольким причинам:
- Из коробки других вкусностей в интеграции с продуктами Atlassian.
- Недостающие функции на 90% покрываются доступными плагинами.
- Имеется подготовленный и разработанный SDK для написания собственных плагинов.
- Поддержка от крупного поставщика.
При создании плана сборки необходимо указать в требованиях необходимые компоненты.
При запуске сборки происходит поиск свободного агента, соответствующего вашим требованиям, и на нем строится приложение.
Он разворачивается по тому же принципу.
При этом и сборка, и развертывание выполняются одинаково во всех средах, промышленных и непромышленных! В качестве инструмента для хранения бинарных объектов была выбрана Artifactory. На сравнение и выбор между Nexus и Artifactory у нас ушло около месяца.
Различные источники в Интернете говорили о превосходстве того или иного инструмента.
Оба варианта нам подходили, но в итоге победила лицензионная политика Jfrog. И мы до сих пор ни разу не пожалели о своем выборе; инструмент удобен и активно развивается.
За пару месяцев мы подняли и интегрировали непромышленную и промышленную трубопроводную среду.
Недолго думая, в качестве ОС для всех продуктов мы выбрали RHEL 7, а в качестве СУБД — PostgreSQL. Начался захватывающий процесс перевода команд на централизованный конвейер CI/CD. Чем больше они пересылали, тем больше программного обеспечения нужно было установить на агентов Bamboo. Поясню: на установку и отладку около 45 компонентов на 10 агентах ушло около 5 месяцев.
Вся эта история подтолкнула нас к пересмотру большинства внутренних командных процессов и некоторых общебанковских процессов.
Но одна лишь оптимизация не помогла добиться необходимой скорости.
И однажды мы поняли, что стало невозможно поддерживать и устанавливать необходимое командам программное обеспечение вручную.
Мы пообщались с разработчиками, приостановили установку нового и обновление текущего ПО и пошли изучать автоматизацию.
Команда поддержки автоматизации не знает, как автоматизировать! Что за черт?!
Учитывая, что со временем агентов Bamboo станет гораздо больше, чем 25, мы решили использовать комбинацию Bamboo и Ansible для создания и обновления агентов.Почему Ansible оказался для нас интереснее других инструментов управления конфигурациями:
- простота обучения,
- отсутствие серверной части,
- ну и все остальные преимущества такого ПО.
Как всегда было много проблем с Windows; мы уже провели здесь 3-4 месяца.
В то же время мы все еще ведем войну с нугетом и шоколадом.
Но вместо двух недель создание и настройка агента теперь занимает всего два часа.
Кстати, сегодня у нас ~50 агентов, а количество установленных компонентов приближается к 120. Казалось бы, вот это счастье, два часа — и новый агент готов! Но нет. Создание нового сервера – не менее замечательная история, если учесть количество команд, участвующих в этом процессе.
Проведя все согласования и управление изменениями, мы потратили около недели на создание нового сервера RHEL. А потом еще пару дней на перенос рута.
С большой властью приходит большая ответственность.Что-то нужно было изменить.
Мы начали думать.
Тем временем мы добавили в конвейер SonarQube — инструмент для статического анализа кода и управления техническим долгом.
Крутой софт! Но вернемся к нашим овцам: в эпоху IaaS было очень больно осознавать, что мы неделю создаем виртуальную машину.
Почему бы не использовать AWS/GoogleCloud/Azure или любое другое облако? Ответ прост — российское законодательство это запрещает, а наша служба безопасности (мягко говоря) не в восторге от идеи использования внешнего облака.
Тогда мы сделаем свое! К тому времени банк уже экспериментировал с vRealize, мы воспользовались этой возможностью и присоединились к эксперименту.
В результате мы получили пул ресурсов, которыми можно было управлять и создавать по шаблонам серверы с нужной ОС.
Создание десятка серверов вместо недели стало занимать час, и нашей радости не было предела.
Но мы решили не останавливаться на достигнутом.
Если вы занимаетесь автоматизацией, вам необходимо научиться создавать серверы в vRealize из Bamboo. Неделя исследований и еще неделя реализации собственного плагина — и первый сервер был создан непосредственно из проекта развертывания Bamboo. К тому времени люди решили, что SVN нам вообще не нужен, и вместе с ним Fisheye+Crucible: у Bitbucket было гораздо больше возможностей, он был более современным и удобным.
Мы помогли командам перейти на Bitbucket и отключили «устаревший» SVN. Что еще вы могли бы автоматизировать? Dev/Ops/DevOps/BizDevOps — что мешает всем этим людям автоматизировать сборку и установку? Работа с запросами системы управления изменениями! Но что же делать без управления изменениями, это важная вещь! Если посмотреть на ситуацию более внимательно, то станет понятно, что нам мешает не сам процесс, а необходимость планировать, согласовывать и фиксировать результат изменения ВРУЧНУЮ! И возможность писать собственные плагины для Bamboo снова приходит на помощь! Неделя исследований, две недели внедрения, и на основе того же проекта развертывания мы создаем первый заранее согласованный CRQ в промышленной среде.
Что мы делаем сейчас?
Мы опробовали несколько инструментов для ChatOps. Тащим с собой HipChat, потому что, несмотря на все его недостатки, лучшего onpremise решения я пока не нашел.Опять же, используя большой стек продуктов Atlassian, мы получим кучу вкусностей.
Например, интеграция всех инструментов позволяет отслеживать в задаче Jira все коммиты, сборки и развертывания, сделанные во время реализации этой функции.
Включение HipChat в процесс позволит, например, установить конкретный релиз в конкретной среде, запустить автотесты, вернуть результат в чат и отправить пользователям уведомления о том, что они могут запустить UAT, введя одну команду в окно чата.
Наш конвейер теперь выглядит так:
Взаимная интеграция всех этих приложений позволяет автоматизировать практически все рутинные действия, связанные с производством программного обеспечения.
У нас есть больше времени, чтобы улучшить качество нашей продукции или провести некоторые исследования.
Обещаем вернуться и поделиться новыми интересными впечатлениями.
Теги: #Системное администрирование #DevOps #ci/cd #automation #agile #atlassian #raiffeisen
-
Разбивка Стоимости Веб-Хостинга
19 Oct, 24 -
Гершко, Аврам
19 Oct, 24 -
Блуменбах, Иоганн Фридрих
19 Oct, 24 -
Прикладная Лингвистика
19 Oct, 24 -
Microsoft Откроет Исходный Код Субд Foxpro
19 Oct, 24 -
Одесса: Два Месяца Работы У Моря
19 Oct, 24