Ефективните процеси по внедряване (deployment) са от съществено значение за гарантиране на безпроблемното предоставяне на софтуерни продукти в днешния динамичен технологичен свят. УниКредит Булбанк, водеща финансова институция в България, осъзна необходимостта от оптимизиран процес по внедряване, който да повиши производителността и надеждността на софтуерната разработка. С помощта на нашия вътрешен екип oт програмисти в DSS разработихме цялостен процес по внедряване (deployment pipeline), чрез който постигнахме невероятни резултати.
Преглед на процеса по внедряване
Нашият вътрешен процес по внедряване (deployment) следва педантична поредица от стъпки, за да се гарантира качеството и сигурността на софтуерните версии. Процесът може да бъде разделен на следните етапи:
- Одит на софтуерни пакети и автоматични тестове: Процесът започва в рамките на вътрешната ни инфраструктура Kubernetes, където извършваме тестове и одит на софтуерни пакети, за да гарантираме, че стандартите за качество са спазени преди внедряването (deployment).
- Статичен анализ на кода със SonarQube: След успешното тестване проектът се подлага на задълбочен статичен анализ на кода с помощта на SonarQube. Тази стъпка помага да се идентифицират и коригират потенциални проблеми в качеството на кода в ранните фаза на разработката.
- Изграждане на Docker образи: След като преминем всички тестове и анализи, пристъпваме към изграждане на Docker образи (images), които обхващат приложението и неговите софтуерни пакети. Това осигурява последователност и възможност за пренасяне в различни среди.
- Сканиране на сигурността с Trivy: Използваме Trivy, за да извършим сканиране на сигурността на Docker образите, като идентифицираме и отстраняваме всички уязвими места преди внедряване.
- Внедряване с Helm Charts: Използвайки диаграмите на Helm, ние организираме внедряването на приложенията в нашата вътрешна инфраструктура Kubernetes. Диаграмите на Helm осигуряват удобен и повторяем начин за управление на приложенията в Kubernetes.
- Интеграция с Jenkins: Процесът ни на внедряване (deployment) се интегрира безпроблемно с Jenkins, като използва Kubernetes pods като агенти. Jenkins автоматизира целия цикъл (pipeline) - от одитирането и тестването до изграждането и внедряването, като осигурява последователност и ефективност.
Разширение към инфраструктурата на Unicredit
В рамките на сътрудничеството ни с УниКредит Булбанк нашият процес по внедряване (deployment pipeline) става естествено разширение към тяхната инфраструктура. Когато се извършват промени в определен клон, Jenkins задейства задача за извършване на промени в репозиторията на УниКредит. Тяхната инстанция на Jenkins след това копира нашия pipeline, включващ одитиране, тестване, анализ на SonarQube, изграждане на Docker образи, сканиране на сигурността с Trivy и push на репозитория с образи (images).
Целта на внедряването обаче е различна, тъй като Jenkins на Unicredit се внедрява в тяхната инфраструктура Openshift. Това гарантира, че софтуерните версии преминават през същите строги тестове и проверки, преди да бъдат внедрени в средите на УниКредит.
Мониторинг и видимост
За да се осигури плавен и непрекъснат цикъл на внедряване (deployment pipeline), всички логове са лесно достъпни в инстанцията на УниКредит Grafana за мониторинг и отстраняване на неизправности в реално време, като се поддържа прозрачност и видимост по време на целия процес по внедряване.
Консистентност в различните среди
Заслужава да се отбележи, че един и същ процес на внедряване (deployment pipeline) се спазва както за вътрешните среди за разработка и тестване, така и за тестовите и производствените среди на УниКредит. Тази консистентност гарантира, че софтуерните версии поддържат едно и също ниво на качество и сигурност през всички етапи от цикъла на внедряване.
Заключение
Сътрудничеството между нашия вътрешен екип за разработка и УниКредит Булбанк е пример за значението на устойчивите процеси по внедряване в съвременната разработка на софтуер. Използвайки модерни технологии като Kubernetes, Helm, Jenkins и Trivy, ние рационализирахме процесите на внедряване, като осигурихме бърза и надеждна доставка на софтуерни продукти. Това партньорство не само повишава производителността и ефективността, но и затвърждава ангажимента ни да предоставяме висококачествени решения, които отговарят на строгите стандарти във финансовата индустрия.