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.
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.