Let's talk
  • [ Cloud ]
  • [ Method ]
  • [ DevOps ]

Przejście do chmury i kultura DevOps

Adrien Bresson

Opublikowano 29 grudnia 2025

"Przejście do chmury"!

Ten cel można spotkać w firmach, które choć bywają zróżnicowane, borykają się z podobnymi problemami:

  • Ucieczka od problemów związanych z utrzymaniem sprzętu fizycznego (dysków twardych, maszyn fizycznych), które nie stanowią części ich głównej działalności
  • Możliwość wykorzystania technologii, których nie chcą powielać na swojej istniejącej bazie serwerowej
  • Unikanie problemów fizycznych (na przykład braku miejsca na dysku) przy jednoczesnym utrzymaniu kosztów pod kontrolą

Choć cele te są możliwe do osiągnięcia, nie należy lekceważyć dwóch kluczowych elementów:

  • Podnoszenie wiedzy i umiejętności zespołów w zakresie nowych narzędzi i koncepcji.
  • Pragmatyzm wymagany do uwzględnienia istniejącej sytuacji, która często jest częściowo niezgodna z tymi nowymi koncepcjami. Na przykład nierzadko okazuje się, że aplikacja stworzona jako monolit nie może być prawidłowo obsługiwana przy użyciu hostingu zarządzanego przez Kubernetes i Docker. Koszt dostosowania jest zbyt wysoki, dlatego należy iść na kompromisy, aby zapewnić udaną migrację.

Kaliop dobrze zna główne rozwiązania chmurowe na rynku międzynarodowym, francuskim i polskim (AWS, GCP, Azure, Scaleway) oraz posiada bogate doświadczenie w realizowaniu konkretnych migracji. Nie wahaj się więc z nami skontaktować, jeśli masz jakiekolwiek wątpliwości strategiczne dotyczące udanego przejścia do chmury!

Obietnice chmury

Niezawodność

Zdolność chmury do oferowania niezawodnej i wysoko dostępnej infrastruktury to jeden z jej kluczowych atutów. Wszystkie usługi chmurowe zapewniają wysoki wskaźnik dostępności, z kontraktowym poziomem 99,9% lub wyższym dla swoich usług. Oznacza to, że aplikacje i dane są dostępne niemal przez cały czas. Czas przywrócenia działania jest lepiej zagwarantowany. Kopie zapasowe są niemal zawsze domyślnie aktywne, z zoptymalizowanymi procesami odzyskiwania danych.

Nie zapomniano również o kwestii bezpieczeństwa. Usługi chmurowe zazwyczaj zawierają zaawansowane protokoły bezpieczeństwa, które chronią wrażliwe dane przed cyberatakami. Obejmuje to zaawansowane zapory sieciowe (firewalle), systemy wykrywania włamań oraz inne zaawansowane środki bezpieczeństwa.redundancję

W przypadku firm międzynarodowych główni operatorzy zapewniają również redundancję geograficzną na całym świecie. Optymalizacja infrastruktury pod kątem potrzeb geograficznych staje się dzięki temu jeszcze łatwiejsza.

Szybkość adaptacji

Chmura umożliwia szybsze wprowadzanie nowych usług.

W środowisku chmurowym zasoby IT, takie jak przestrzeń dyskowa, moc obliczeniowa czy pamięć, można uzyskać niemal natychmiast, na żądanie. Dla porównania, pozyskanie dodatkowych zasobów w środowisku fizycznym może zająć sporo czasu ze względu na konieczność zakupu, dostawy i konfiguracji dodatkowego sprzętu.

Dostawcy usług chmurowych szybko udostępniają nowe funkcje i technologie, co pozwala firmom od razu wdrażać najnowsze innowacje, bez konieczności inwestowania w drogi sprzęt czy poświęcania czasu na jego konfigurację.

Równolegle z wiodącymi rozwiązaniami chmurowymi rozwijane są narzędzia do automatycznego wdrażania. Aplikacje mogą być wdrażane szybko i spójnie w środowisku chmurowym. Znacznie skraca to czas potrzebny na udostępnienie użytkownikom końcowym nowych funkcjonalności lub całych aplikacji, przyspieszając czas wprowadzenia produktu na rynek (time-to-market).

Oferta

Każdy główny dostawca usług chmurowych oferuje dziesiątki różnych usług. Podczas gdy ich pierwotną misją było rozszerzenie możliwości hostingu fizycznego poprzez oferowanie zasobów pomijających ograniczenia sprzętowe, obecnie dostępna jest ogromna liczba gotowych aplikacji, które są praktycznie gotowe do użycia. Przykładem są chociażby rozwiązania z zakresu danych, sztucznej inteligencji, narzędzia do wdrażania, rozwiązania serverless itp.

Oferta ta stale ewoluuje, a znaczne środki inwestowane są w badania i rozwój.

Druga strona wszechstronności chmury

Ciągła nauka

Jak zobaczyliśmy powyżej, główni gracze na rynku chmurowym stale innowują. Jednak nie poprzestają oni jedynie na dodawaniu nowych usług – rozwijają również te istniejące. Nie da się opanować wszystkiego, co znajduje się w ofercie, ale trzeba trzymać rękę na pulsie, aby wykorzystywać szanse odpowiednie dla własnych potrzeb. Z drugiej strony należy liczyć się z możliwością pojawienia się istotnych zmian. Choć zdarza się to rzadko, usługi mogą ewoluować w sposób, który nie zachowa kompatybilności wstecznej.

Nawet jeśli zazwyczaj podejmowane są niezbędne kroki, aby towarzyszyć aktualizacjom i wyjaśniać je, ich wpływu nie można bagatelizować.

Dlatego należy przewidzieć czas nie tylko na rozwijanie swoich umiejętności, ale także na ich stałe aktualizowanie.

Kontrola kosztów

Złożoność modeli wyceny usług chmurowych może utrudniać dokładne przewidywanie długoterminowych kosztów, co z kolei może prowadzić do nadmiernych lub nieoczekiwanych wydatków. Jak zobaczyliśmy wcześniej, zmiana używanych usług oraz ich konfiguracji jest szybka i prosta. Z tego względu konieczne jest wdrożenie odpowiedniego podejścia typu „FinOps”.

Wydatki są zazwyczaj powiązane z wykorzystaniem zasobów. Dlatego też kluczowe jest regularne monitorowanie zużycia zasobów chmurowych przy użyciu narzędzi do monitorowania i zarządzania kosztami, aby identyfikować anomalie oraz źródła marnotrawstwa. Planowanie potrzeb wydatkowych musi uwzględniać nieregularne aspekty wykorzystania zasobów i pozwalać unikać kosztownych niespodzianek.

Choć powyższe kwestie mogą być postrzegane negatywnie, rozwiązania chmurowe stwarzają również możliwości optymalizacji zasobów, które mają pozytywny wpływ na koszty. Zarządzanie wyłączaniem (zamrażaniem) nieużywanych zasobów, korzystanie z rezerwacji instancji oraz dobór odpowiednich typów instancji mogą znacznie obniżyć koszty operacyjne.

Rozumiejąc modele wyceny dostawców chmurowych, firmy mogą wybierać pakiety cenowe dostosowane do ich specyficznych potrzeb, co pozwala ograniczyć niepotrzebne koszty i zoptymalizować wykorzystanie usług w chmurze.

Zmiany organizacyjne

Migracja do chmury często wiąże się ze znaczącymi zmianami organizacyjnymi, w szczególności w zakresie ról i odpowiedzialności w zespołach IT. Budowanie kultury skupionej na chmurze oraz międzydziałowej współpracy ma kluczowe znaczenie dla powodzenia tej transformacji. Wpływ na system informatyczny jest wręcz fundamentalny, ponieważ zmianie ulegają dotychczasowe nawyki związane z architekturą, zarządzaniem danymi, bezpieczeństwem i wieloma innymi obszarami.

Cykle wdrażania ulegają zmianie – niektóre działania nie wymagają już czasu, którego wcześniej nie dało się skrócić. Zrewidować należy nawet samą zasadę cyklu życia usługi, ponieważ może ona zostać wyłączona w dowolnym momencie, mając na uwadze brak problemów sprzętowych do zarządzania.

Ostatecznie dostosować do chmury będą musiały się również narzędzia, co zazwyczaj oznacza wprowadzenie nowych rozwiązań, a to z kolei wpłynie na dotychczasową organizację pracy.

DevOps

Czym jest DevOps?

W obliczu tych wyzwań podejście DevOps okazuje się skutecznym rozwiązaniem zapewniającym sprawne zarządzanie operacjami w środowisku chmurowym.

Warto podkreślić, że DevOps nie jest zawodem samym w sobie, lecz raczej podejściem kulturowym i organizacyjnym, które sprzyja współpracy oraz integracji między zespołami rozwoju oprogramowania (Dev) a zespołami utrzymania infrastruktury IT (Ops). Istnieją jednak określone role i odpowiedzialności powiązane z praktyką DevOps w organizacji. Oto para ról związanych z DevOps:

  • Inżynier DevOps (DevOps Engineer): profesjonaliści ci odpowiadają za wdrażanie praktyk DevOps, w tym automatyzację procesów tworzenia, testowania i wdrażania oprogramowania, a także za zarządzanie potokami ciągłej integracji i ciągłego wdrażania (CI/CD). Są odpowiedzialni za zapewnienie skutecznej współpracy między zespołami deweloperskimi i operacyjnymi, przy jednoczesnym promowaniu wdrażania zwinnych narzędzi i praktyk programistycznych.
  • Administrator systemu DevOps (DevOps system administrator): profesjonaliści ci odpowiadają za zarządzanie i konfigurację infrastruktur IT, dbając o to, aby systemy były zoptymalizowane pod kątem wspierania zwinnych praktyk programistycznych oraz procesów automatyzacji. Ściśle współpracują z zespołami deweloperskimi, aby zapewnić stabilne i niezawodne środowiska programistyczne oraz testowe.

Choć DevOps sam w sobie nie jest zawodem, doprowadził do powstania nowych ról i stanowisk, które stały się coraz bardziej powszechne w organizacjach nastawionych na cyfrową transformację oraz wdrażanie zwinnych praktyk tworzenia oprogramowania.

Dlaczego jest to konieczne w środowisku chmurowym?

W architekturze dedykowanej zasoby takie jak inżynierowie sieciowi czy specjaliści od systemów operacyjnych są niezbędne. W architekturze chmurowej obowiązują te same wymagania. Nadal musisz zarządzać sieciami i usługami, które posiadają swoją własną, specyficzną konfigurację, wraz z wymogami w zakresie monitorowania i nadzoru.

Ze względu na specyfikę stosowanych narzędzi, zespoły deweloperskie mają lepsze wyobrażenie o tym, co jest dla nich dostępne – w szczególności dlatego, że mogą potencjalnie odwzorować to środowisko lokalnie przy użyciu technologii takich jak Docker.

Nie daj się jednak zwieść: nawet jeśli Twoje zespoły programistyczne dobrze rozumieją architekturę, nie oznacza to, że opanowały ją w pełni. Rozumienie to stanowi czynnik sukcesu dla sprawnego działania Twoich aplikacji, co samo w sobie jest już dużym osiągnięciem, jednak nie będziesz w stanie obejść się bez kompetencji DevOps.

Stosowane technologie

Terraform: Terraform to narzędzie open source do zarządzania infrastrukturą jako kodem (IaC). Pozwala zespołom DevOps opisywać infrastrukturę chmurową w plikach konfiguracyjnych, co ułatwia wdrażanie zasobów i zarządzanie nimi w zróżnicowanych środowiskach chmurowych. Co więcej, kod ten będzie zarządzany w ramach narzędzia takiego jak GitHub czy GitLab, z wykorzystaniem tych samych praktyk, które stosują zespoły deweloperskie (gałęzie, przeglądy kodu itp.). Możliwe staje się również wykonywanie testów jednostkowych. Takie podejście gwarantuje możliwość szybkiego powrotu do działania po poważnym awaryjnym incydencie na produkcji, ponieważ wszystko można odbudować na podstawie tego kodu.

Docker: Docker to platforma open source do tworzenia, wdrażania i zarządzania aplikacjami w kontenerach. Ułatwia szybkie wdrażanie oraz zarządzanie aplikacjami, gwarantując przenieśność i spójność między środowiskami deweloperskimi a produkcyjnymi.

Kubernetes: Kubernetes to platforma open source do orkiestracji i zarządzania kontenerami, która ułatwia wdrażanie, skalowanie oraz zarządzanie skonteneryzowanymi aplikacjami. Umożliwia zespołom DevOps wydajne zarządzanie złożonymi obciążeniami w wielkoskalowych środowiskach chmurowych.

Prometheus: Prometheus to system open source do monitorowania i powiadamiania o alertach, zaprojektowany do śledzenia zasobów chmurowych oraz aplikacji w czasie rzeczywistym. Gromadzi wskaźniki wydajnościowe i dane monitorujące, umożliwiając zespołom DevOps szybkie diagnozowanie i rozwiązywanie problemów z wydajnością.

Podobne treści