CI/CD jako proces niezbędny w dzisiejszym IT

CI/CD (continuous integration/continuous delivery lub deployment) to jeden z najgłośniejszych tematów dzisiejszego IT. Procesy zawarte w tych schematach potrafią drastycznie usprawnić proces rozwoju oprogramowania. Nic dziwnego, że ten temat jest niezmiennie popularny w praktycznie każdym projekcie IT.

Zacznijmy od kilku klasycznych problemów projektów IT

Jest wiele standardowych trudności, które pojawiają się praktycznie zawsze. CI/CD może wiele z nich zniwelować, postaram się wymienić najważniejsze:

Problemy wynikające z różnic środowisk programistycznych członków zespołu

Istnieje legendarny cytat, który non stop przewija się w żartach związanych z IT. Ten cytat to “U mnie działa!”. Oznacza to mniej więcej to, że pisany system może działać i budować się inaczej u każdego programisty. Sprawny system CI/CD załatwia skutecznie ten problem ponieważ wyznacza jeden standard pracy i testowania systemu. Argument, że “u mnie działa” nie ma sensu, bo wyznacznikiem tego, co działa a co nie jest system CI.

Powtarzalne czynności, które można zautomatyzować

Systemy CI pozwalają na uruchamianie czynności automatycznie, które tradycyjnie były robione ręcznie. Pozwala to na masę niesamowicie przydatnych procedur, takich jak:

  • budowanie gotowych paczek
  • testowanie
  • statyczna analiza kodu
  • deployment paczek na różne środowiska
Długi czas od zmiany do wdrożenia jej na środowiska

Bez systemu automatyzującego zmiana w kodzie przechodzi bardzo długą drogę. Mogą minąć tygodnie zanim stabilna paczka zawierająca zmianę będzie dostarczona do klienta. System CI może skrócić ten czas do kilku minut.

Problem izolacji zmiany, która spowodowała problem

Wyobraźmy sobie system, w którym pracuje kilku programistów. W trakcie jednego dnia do repozytorium może trafić wiele różnych zmian. Co jeśli po tym dniu zostanie wykryty błąd? Bez automatycznego testowania izolacja kłopotliwej zmiany jest bardzo żmudnym procesem.

Potrzeba ciągłego, ręcznego testowania aplikacji

Jeśli nie posiadamy żadnego procesu automatyzującego testy, to musimy polegać na ręcznym uruchamianiu ich przez programistów. Oczywiste jest, że w takim wypadku testy po prostu nie będą regularnie uruchamiane.

Continuous integration vs Continuous delivery vs Continuous deployment

Kolejnym tematem, który warto rozumieć to zamieszanie związane z terminologią. Wszystkie te określenia są często mylone lub stosowane zamiennie. Dlatego też warto omówić dokładniej różnice i podobieństwa.

Continuous integration:

CI oznacza stosowanie centralnego repozytorium kodu i ciągłe umieszczanie w nim możliwie małych zmian. Często też w tym terminie mieści się podstawowa automatyzacja – budowanie i testowanie kodu po każdej zmianie.

Continuous delivery:

Continuous delivery rozszerza Continuous integration o automatyczne budowanie gotowych paczek oprogramowania. Dobrze skonfigurowany continuous delivery dostarcza gotowy produkt, który może być umieszczony na wybranym środowisku.

Continuous deployment:

Continuous deployment jest najpotężniejszą formą automatyzacji. Dokłada ona do Continuous delivery możliwość autonomicznego deploymentu na środowiska docelowe. W praktyce zwykle nie oznacza to kompletnie automatycznego procesu. Szczególnie środowisko produkcyjne powinno być aktualizowane przy nadzorze ludzkim, w celu obrony przed niestabilnymi zmianami.

Ścieżka DEVOPS

Potrzeba systemów CI/CD doprowadziła do powstania zupełnie nowej profesji IT. W połączeniu z umiejętnościami utrzymania, administratorskimi i programistycznymi można stać się ekspertem DevOps. Specjaliści tego typu mogą łączyć te wszystkie dziedziny w jedno, co w praktyce często oznacza tworzenie sprawnego CI. Jeśli nie jesteś w stanie zdecydować się jednoznacznie na żadną z nich to DevOps może okazać się idealnym wyjściem.

Podsumowując.

Znajomość podstaw CI/CD jest dzisiaj wiedzą niezbędną, dla każdego kto pracuję przy rozwoju systemów IT. Wcześniej, czy później każdy musi się zmierzyć z tym tematem. Dlatego też zawsze polecam poznanie fundamentalnych założeń CI/CD dla każdego. Jestem przekonany, że ta wiedza zaprocentuje wiele razy w przyszłości.

Leave A Comment