A co, jeżeli Twoja firma urośnie szybciej niż produkt? Sprawdź dojrzałość swojego procesu CI/CD

Startupy, młode firmy, przedsiębiorstwa nastawione na szybki rozwój – wszystkie te biznesy narażone są na poważne zagrożenia w projektach IT, które to mogą zatrzymać ich wzrost lub nawet doprowadzić do całkowitego zamknięcia firmy. Więcej na ten temat pisaliśmy w artykule “Firma o krok nad przepaścią. Jak nie doprowadzić do bolesnego upadku?”, a dzisiaj omówimy kilka klasycznych problemów projektowych, przed którymi chroni odpowiednio wdrożony proces CI/CD.

 

Zanim przejdziesz do głównej części artykułu, może masz odwagę już teraz przetestować poziom dojrzałości procesu CI/CD w Twojej firmie? Wypełnij krótki interaktywny test i sprawdź, na jakim etapie automatyzacji jesteś Ty i Twój zespół!

Nowoczesne oprogramowanie musi powstawać szybko i być wysokiej jakości, inaczej biznes w mgnieniu oka zaprzepaści swoje szanse w wyścigu technologicznym. Firmom zależy na jak najszybszym udostępnieniu aplikacji użytkownikom, a następnie modyfikowaniu i rozwijaniu ich w sposób ciągły. Aby tak się działo, należy pokonać kilka przeszkód, które opóźniają proces rozwoju oprogramowania i negatywnie wpływają na prace projektowe.

Jeżeli w swoim zespole developerskim spotykasz się z podobnymi problemami:

  • System działa różnie na różnych środowiskach programistycznych (a ty wciąż słyszysz, że “U mnie działa!”),
  • Czas potrzebny od wprowadzenia zmiany w kodzie do wdrożenia jej na środowisko wydłuża się w nieskończoność,
  • Aplikacja działa niestabilnie, a wy macie trudność z izolacją zmiany, która spowodowała problemy,
  • Stale napotykacie błędy i opóźnienia przy wdrażaniu nowych funkcji,
  • Musicie przeprowadzać ręczne testy,
  • Macie problemy z bezpieczeństwem rozwiązania,
  • Zauważacie niską jakość kodu.

To najwyraźniej najwyższy czas wdrożyć procesy Continuous Development. 

Czym jest proces CI/CD i jakie przynosi korzyści?

Wytyczne CI (Continuous Integration) i CD (Continuous Delivery) są częścią metodyki DevOps, zwierającą zbiór dobrych praktyk, skupiających się wokół pracy nad projektami IT.

Procesy Continuous Development

Continuous Integration

  • Celem CI jest wypracowanie zautomatyzowanego sposobu budowania oraz testowania aplikacji.
  • Zespół dąży do jak najczęstszego wdrażania zmian do głównej linii kodu oraz ich natychmiastowego testowania.

Continuous Delivery

  • Kluczowym aspektem CD jest automatyzacja procesu dostarczania zmian dla wszystkich wykorzystywanych w projekcie środowisk.
  • Samo wdrożenie na produkcję może odbywać się w sposób automatyczny lub manualny, w zależności od poziomu ryzyka, jakie wiąże się z danym projektem.

Continuous Testing

  • Celem procesu CI/CD jest szybkie dostarczanie wysokiej jakości kodu, tym samym wymaga ciągłego przeprowadzania testów.
  • Testy przeprowadzane są automatycznie jako integralna część CI/CD pipeline.

Przez ostatnie lata zrobiło się wokół CI/CD pipeline sporo szumu, ponieważ wdrożenie procesu pozwala na automatyzację części prac projektowych. Przed firmami otworzyła się droga do szybszego dostarczania oprogramowania, a jaki biznes nie chciałby zyskać na czasie? W ten sposób ciągłość i automatyzacja wszystkich etapów powstawania kodu zaczęła być atrakcyjną opcją.

W końcu CI/CD przynosi korzyści takie jak:

  • Skrócenie czasu między kodowaniem a wdrażaniem zmian na produkcję,
  • Sprawniejsze przekazywanie funkcji do testowania i integracji,
  • Szybsze identyfikowanie niezgodności w kodzie i problemów, a tym samym ich naprawa lub wycofanie,
  • Automatyczne testowanie, które pozwala pracować nad aplikacją w sposób ciągły, a tym samym stale poprawiać jej jakość,
  • Większa produktywność zespołów developerskich, które nie muszą oczekiwać na finalne testy.

Procesy Continuous Development pozwalają ulepszać aplikacje w sposób ciągły, co przekłada się na szybsze wdrażanie nowych pomysłów i funkcjonalności. Firmy, które rozwijają swoje cyfrowe produkty pozostawiając je w fazie Continuous Product Design oraz posiadając rozwinięty proces CI/CD, mają dużą szansę utrzymywać na rynku pozycję lidera w swojej branży.

Dlaczego firmy nie korzystają z procesu CI/CD?

Biorąc pod uwagę wszystkie korzyści, jakie stoją za narzędziami i rozwiązaniami powiązanymi z CD, wydawać by się mogło, że każda firma powinna dążyć do wprowadzenia Continuous Delivery jako standardu podczas realizacji projektów. Praktyka pokazuje jednak, że firmy wcale nie tak często korzystają z możliwości ciągłej integracji, dostarczania i wdrażania oprogramowania.

Największe przeszkody, jakie blokują wdrożenie CD w firmach:

  • Niewielkie doświadczenie programistów w obszarze DevOps,
  • Przyzwyczajenie do tkwienia w powtarzalnych schematach i manualnej pracy; strach przed automatyzacją i “utratą” części pracy,
  • Obawa przed wprowadzeniem do środowisk zmian zawierających błędy,
  • Tkwienie w przeświadczeniu, że rzadsze wdrażanie większych zmian jest szybsze i prostsze,
  • Brak zrozumienia ze strony kierownictwa/klienta, że wdrożenie procesu CI/CD – chociaż początkowo wiąże się z większymi opłatami i dłuższym czasem rozpoczęcia projektu – później zwraca się z nawiązką.

Jak tworzyć rozwiązania, które rosną wraz z biznesem?

Dzięki zrozumieniu zagrożeń, jakie wiążą się z rozbudowanymi projektami IT i wyeliminowaniu ich już u źródła. Trudne w rozwoju aplikacje, niestabilne, pełne błędów, które z czasem zaczynają blokować biznes, najczęściej są wynikiem braku doświadczenia w budowaniu oprogramowania oraz złymi wzorcami projektowymi. Aby mieć pewność, że dostarczamy klientom elastyczne i bezpieczne rozwiązania, wypracowaliśmy własny framework projektowy: Software as a Journey, który jest efektem wielu lat doświadczenia w prowadzeniu projektów dla dużych firm z sektora enterprise.

SaaJ prowadzi nas przez każdy projekt, eliminując ryzyka i powodując, że nawet najbardziej skomplikowane systemy nie są już wyzwaniem. Jego ważną częścią jest realizacja wszystkich trzech elementów procesu Continuous Development:

  • Continous Integration – wspólne repozytorium kodu, do którego możliwie często commitujemy małe zmiany (każdy programista przynajmniej raz dziennie). Kod jest kompilowany i testowany (testy jednostkowe i integracyjne) po każdej zmianie.
  • Continuous Delivery – automatycznie budujemy gotowe paczki (zawierające to, co wytworzył Continous Integration), które mogą zostać umieszczone w dowolnym środowisku. W tym miejscu przeprowadzamy także testy funkcjonalne lub np. wstępnie wygenerowane testy akceptacyjne.
  • Continous Deployment – możemy przeprowadzać automatyczny deployment na środowiska docelowe. Kod nie ulega zmianom, ale zmienia się konfiguracja.

Infografika przedstawiająca proces Continuous Delivery

Continuous Deployment można rozumieć jako uzupełnienie Continuous Delivery, ponieważ różnica zachodzi dopiero w ostatnim kroku. Co jednak ważne, nie w każdym projekcie stosujemy automatyczną instalację na produkcji – niektóre procedury klientów wymagają ręcznego podejścia, dlatego zawsze uzgadniamy to wcześniej.

Dzięki takiemu podejściu:

  • Szybko wprowadzamy i wycofujemy zmiany. Rzadko dochodzi do sytuacji, w której zmiany wycofywane są już z produkcji,
  • Nasze zespoły cały czas pracują nad skróceniem cyklu oraz identyfikują i analizują ryzyka z nim związane,
  • Przeprowadzamy automatyczną analizę kodu przy użyciu narzędzi takich jak SonarQube czy Checmarx,
  • Wydania są częste i zautomatyzowane,
  • Posiadamy politykę zarządzania konfiguracją.

Chcesz mieć pewność, że współpraca z software housem będzie układać się po Twojej myśli? Poznaj możliwości naszego frameworku na podstawie projektu, jaki realizowaliśmy dla Hyundai Glovis.

Czym grozi brak rozwiązań Continuous Development?

Dobrze ułożony proces CI/CD pomaga przyspieszyć pracę i umożliwia sprawny rozwój aplikacji, jednocześnie dbając o jej bezpieczeństwo, stabilność i wydajność. Wykorzystywane narzędzia pomagają dbać o standaryzację kodu i jego jakość, co równocześnie zmniejsza problem długu technicznego.

Praca bez składowych Continuous Development naraża firmę na wszystkie zagrożenia wymienione w pierwszej części artykułu oraz zwiększa prawdopodobieństwo długu technicznego.  Opóźnienia i problemy mogą być tak duże, że w rezultacie firma zacznie rosnąć szybciej, niż jej produkt. Nowi klienci będą napływać, pojawią się dodatkowe potrzeby, odkrywane będą kolejne błędy, ale produkcja nie będzie w stanie udźwignąć ogromu zmian, co zahamuje rozwój biznesu.