CI/CD – Jak automatyzacja sprawia, że tworzenie oprogramowania jest szybkie, wydajne i niezawodne

Ustrukturyzowane, bezbłędne, opłacalne – są to kluczowe cechy udanego rozwoju oprogramowania. Automatyzacja pomaga przenieść ten proces na inny poziom. CI/CD, czyli ciągła dostawa, ciągła integracja i ciągłe wdrażanie to trzy strategie DevOps, które są częścią zautomatyzowanego procesu rozwoju. Celem jest jak najszybsze budowanie, testowanie, wdrażanie i wydawanie aktualizacji oprogramowania przy możliwie jak najmniejszej liczbie błędów i zmniejszenie kosztów błędów poprzez zastosowanie podejścia „szybko i wcześnie”: im szybciej błąd zostanie znaleziony, taniej jest go naprawić.

Tak było

W zamierzchłej przeszłości, co w kategoriach cyfrowych oznacza około 15-20 lat temu, developerzy tworzyli aplikacje głównie w modelu kaskadowym. Podczas programowania konsultanci korzystali z systemu subversion, aby śledzić zmiany w kodzie, a po zakończeniu pewnego etapu wersja aplikacji została wysłana do działu IT.

Dział IT, który zawsze koncentruje się na stabilności i niezawodności, tworzył wówczas środowisko, w którym kod mógł zostać wdrożony. Uruchomiano na nim nową wersję. Pojawiało się wiele różnic między infrastrukturą IT (konfiguracją serwera) a ustawieniami używanymi przez programistów. Był to jeden z powodów, dla których ten proces mógł potrwać kilka tygodni. Każda zmiana w oprogramowaniu musiała zostać zweryfikowana przez dział IT, a także wielokrotnie przez zespół QA. Sposób komunikacji między zespołami wymagał oczywiście dodatkowego czasu, a podanie można było opublikować z pewnym opóźnieniem.

Tak jest

Obecnie proces wdrażania oprogramowania jest znacznie szybszy, a dzięki automatyzacji wielu podprocesów, znacznie bardziej stabilny i bezpieczny. Automatyzacja eliminuje błędy ludzkie, które nadal są główną przyczyną awarii. Ale są też wyzwania. Jak uniknąć sytuacji, w której czasami setki programistów, którzy pracują nad tą samą aplikacją, odprawiają swój kod dzień po dniu, godzinę po godzinie, a po pewnym czasie zdają sobie sprawę, że po scaleniu nie będą ze sobą współpracować?

Z pomocą przychodzi ciągła integracja (Continuous Integration, CI). Jest to metodologia, która wymaga od programistów meldowania się, łączenia, a następnie budowania kodu tak szybko, jak tylko część kodu jest gotowa, nawet kilka razy dziennie. Ciągła integracja małych zmian kodu we współdzielonym repozytorium i automatyczne testowanie go, pozwala na bieżąco wychwytywać drobne błędy. Dzięki temu można je rozwiązać w łatwiejszy i szybszy sposób. Po pomyślnym zakończeniu testów konieczne jest wdrożenie działającej aplikacji w środowisku testowym / przedprodukcyjnym lub produkcyjnym.

Continuous Delivery and Deployment

Proces wprowadzania zmian w kodzie jest ciągły i co godzinę, co minutę, a czasem co sekundę tworzona jest nowa wersja. Jak zatem sprawić, by wszystko działało? Odpowiedź polega na ciągłym dostarczaniu lub ciągłym wdrażaniu, zwanym continuous delivery (CD). Gdy proces akceptacji zmian i testów akceptacyjnych odbywa się ręcznie, możemy powiedzieć, że jest to ciągła dostawa. Ktoś jest informowany, że działająca, już przetestowana aplikacja czeka na ostateczne zatwierdzenie, a po przeprowadzeniu dodatkowych kontroli i testów ta osoba musi ręcznie zatwierdzić wersję. Scenariusz ciągłego wdrażania zostaje osiągnięty, gdy pojawia się pełna automatyzacja.

Niezbędne narzędzia

Na rynku dostępnych jest wiele narzędzi, które mogą pomóc zespołowi programistów we wdrożeniu CI/CD w ich projekcie. AWS zapewnia zespołowi programistów platformę do dzielenia się kodem, automatycznego budowania zmian, testowania aplikacji, powiadamiania o wynikach i automatycznego wdrażania w produkcji lub wycofywania, gdy testy się nie powiodą.

  • Code Pipeline to narzędzie do zarządzania przepływem pracy, w którym konfigurowane są wszystkie ustawienia innych narzędzi CI/CD. Możesz łatwo utworzyć cały przepływ pracy i zarządzać nim za pomocą jednego zunifikowanego pulpitu nawigacyjnego ze wszystkimi niezbędnymi szczegółami na temat stanu procesu, zestawu parametrów i logów. Pipeline można utworzyć ręcznie z poziomu konsoli internetowej lub przy użyciu kodu jak w podejściu Infrastruktura jako kod (Infrastructure as a Code, IaC).
  • Podczas wdrażania pipeline CI/CD w AWS możesz wybrać, który system kontroli wersji ma wybrać. AWS obsługuje przechowywanie plików w S3, GitHub, CodeCommit (wewnętrzna usługa repozytorium kodów zarządzanych przez AWS) lub repozytorium kompatybilnym z git.
  • AWS Code Commit to narzędzie, które zapewnia programistom kontrolę nad wersjonowaniem w kodzie oraz w GitHub. Cena jest przewagą nad prywatnym repozytorium GitHub, ponieważ w CodeComit prywatne repozytoria są bezpłatne.
  • AWS Code Star to platforma zarządzana z przydatnym kreatorem, który umożliwia programistom tworzenie w pełni działającego i bezpiecznego pipeline CI/CD w ciągu kilku minut. AWS CodeStar obsługuje wiele popularnych języków programowania, w tym Java, JavaScript, PHP, Ruby i Python.

Automatyzacja = klucz do sukcesu

Wybierając opcję zautomatyzowania procesu, ułatwiasz kontrolę stanu oprogramowania. Nawet przed wdrożeniem jakichkolwiek nowych zmian możesz sprawdzić, czy mogą one zawierać jakieś błędy – oznacza to, że możesz wdrożyć bieżącą wersję oprogramowania do wersji produkcyjnej. Testowanie staje się łatwe. Co najważniejsze, jest bezpieczne, a bezpieczeństwo jest kluczowe w procesie programowania. Oznacza to, że możesz wyeliminować ryzyko przed złamaniem oprogramowania, wykryć problemy na wczesnym etapie, a wszystkie poprawki można wykonać szybko. Dzięki temu zespół jest mniej zainteresowany wyszukiwaniem potencjalnych błędów. Jednocześnie kładzie większy nacisk na rozwój oprogramowania.

Automatyzacja pozwala uzyskać szybką pętlę sprzężenia zwrotnego, uniknąć „piekła integracji” i zwiększyć zarówno przejrzystość, jak i widoczność. W rezultacie poprawiasz jakość i testowalność, co przekłada się na większą satysfakcję i pewność zarówno klientów, jak i zespołu.

About the Author: Wojtek Kubiak

Związany z IT od przeszło 19 lat, Wojtek związany jest z Cybercom od ponad dekady. Ponad cztery lata pracował w dziale security, gdzie odpowiadał za audyty infrastruktury i pentesty.
Swoją przygodę z Chmurą rozpoczął w 2014, a pierwsze projekty, w któych uczestniczył dotyczyły cludowej migracji zarówno projektów klienckich, jak i samego Cybercomu. Od kilku lat zarządza działem Cloud, w którym zajmuje się wsparciem klientów i konsultingiem w zakresie rozwiazań Chmur publicznych – AWS i Azure.

Read the articles:

Let’s talk about the digital sustainability in your company!

2020-05-06T08:22:13+00:006 maja, 2020|Uncategorized|0 Comments

Leave A Comment