ci/cd

Czym jest CI/CD?

Obecnie każdy programista termin CI/CD interpretuje pewnie nieco inaczej. Dla jednych jest to kultura, do której należy się dostosowywać podczas budowy oprogramowania, a dla innych zestaw narzędzi, który automatyzuje operacje na wytworzonym kodzie. Dla osoby, która pierwszy raz ma styczność z tym pojęciem, najbardziej obrazujący będzie przykład; Marek dopisał nową funkcjonalność w kodzie, a po skończonej pracy zaktualizował repozytorium projektu. Automat przejął ten kod od niego i wykonał szereg testów jednostkowych, upewniając się, że zmiana ta nie popsuje istniejących funkcji systemu. Kiedy wszystkie testy zakończyły się pomyślnie, kolejny automat utworzył tymczasowe środowisko dla aplikacji z fikcyjnymi danymi użytkowników i przetestował czy aplikacja działa poprawnie pod obciążeniem (proces ten zazwyczaj nazywa się testami integracyjnymi, ponieważ łączy wiele komponentów serwisu i testuje je jako całość). Dopiero kiedy te testy się powiodły, Team Leader mógł dokonać aktualizacji głównego serwera ulokowanego u klienta, autoryzując się z użyciem swojego konta.

A więc Continuous Integration (CI) i Continuous Delivery (CD) to zbiór schematów, zasad, wytycznych i dobrych praktyk dotyczących pracy w projektach programistycznych. Dzięki temu zespół programistyczny może sprawniej i częściej dostarczać pewne i przetestowane zmiany w kodzie. To jeden z podstawowych sposobów pracy nad oprogramowaniem minimalizujący konieczność realizowania powtarzalnych procesów przez programistów i uniemożliwiający zrobienia czegoś w błędny, niezgodny z procedurami sposób.

Zalety z wdrożenia CI/CD

Wdrożenie CI/CD wesprze rozwiązanie wielu problemów projektowych tj.:

  • różnice w środowiskach programistów — CI/CD wyznacza jeden standard pracy, dzięki czemu klasyczne „dziwne, u mnie działa” przestanie być problemem;
  • wspiera automatyzacje — podczas tworzenia oprogramowania pojawiają się liczne czynności, które są w pełni powtarzalne; oprogramowanie CI/CD automatyzuje takie czynności, przyspieszając czas developmentu;
  • wsparcie testów oprogramowania — zastąpienie ręcznego uruchamiania testów automatycznym testowaniem po spełnieniu określonego warunku;
  • skrócenie czasu wprowadzania zmian na produkcji — CI/CD znacznie skraca ten proces, usprawniając pętle wdrożenia.

Jak przebiega proces wdrożenia?

Oto kilka zasad, którymi kierujemy się podczas wdrażania narzędzi CI/CD:

  • Bierzemy pod uwagę, ilu developerów liczy zespół, z jakich metodologii korzysta, a także to gdzie finalnie jest umieszczany kod (git flow);
  • Rysujemy szczegółowy diagram ścieżki dostarczania zmian, starając się przewidzieć takie scenariusze jak np. konieczność cofnięcia się do poprzedniej wersji czy konieczność dodania dodatkowego środowiska w celu przetestowania bardziej skomplikowanej funkcjonalności;
  • Wspólnie z klientem wybieramy technologię, a następnie specyfikujemy wszystkie ustalenia w dokumencie wzorcowym stanowiącym podstawę rozpoczęcia wdrożenia;
  • Implementujemy rozwiązanie (Code Pipelines), a dalej jeszcze przez kilka tygodni nadzorujemy czy każdy członek zespołu w pełni radzi sobie z nowymi narzędziami;
  • Zapewniamy monitoring naszego rozwiązania zorientowany na niezawodność, a także na wydajność codziennej pracy w zespole. Jesteśmy w stanie generować odpowiednie raporty;

ci/cd

Sprawdź, co możesz zyskać

Wspieramy rozwój technik CI/CD w firmach technologicznych. Na co dzień sami wykorzystujemy je w wewnętrznych strukturach naszej firmy, dlatego dysponujemy sprawdzonymi procesami wdrożeniowymi, które z łatwością możemy implementować w innych projektach. Jeśli prowadzisz projekty IT i zależy Ci na zwiększeniu wydajności, skorzystaj z naszego wsparcia i wdróż praktyki CI/CD w swojej firmie.

 

Podsumowanie

Continuous Integration i Continuous Delivery wyznaczają nowe standardy tworzenia oprogramowania na rynku IT. Firmy, które implementują te podejścia w swoich projektach, zyskują wymierne korzyści oraz osiągają przewagę na konkurencyjnym rynku. Warto więc zainteresować się tym tematem już teraz i wdrożyć go w swoich strukturach.