Technologie kontenerowe uznawane za kluczowe dla blisko 40 proc. firm na świecie
Technologie kontenerowe uznawane za kluczowe dla blisko 40 proc. firm na świecie
Jakie są nieoczywiste wady i zalety tych rozwiązań?
Co trzecia firma na świecie inwestuje najwięcej swoich zasobów, budżetu i czasu w rozwój technologii chmurowych i kontenerowych[1]. W 2024 roku spośród wszystkich rozwiązań open source większą popularnością cieszyły się jedynie bazy i technologie danych, co potwierdza globalny wzrost znaczenia kontenerów. Jak wskazują eksperci Linux Polska, mikroserwisy rozwiązują problem złożoności aplikacji, przyspieszając proces jej projektowania i wdrożenia. Z drugiej strony kontenery mogą znacząco skomplikować pracę nad projektem, zwłaszcza w przypadku mniej doświadczonych zespołów. Co organizacja może osiągnąć dzięki rozwiązaniom kontenerowym? Kiedy powinna zdecydować się na inną opcję?
Kontenery sposobem na problem złożoności projektów
Istotą kontenerów jest dekompozycja aplikacji na mniejsze serwisy, w obrębie których można wdrażać poprawki lub ulepszenia. W przeciwieństwie do aplikacji monolitycznych, wprowadzanie zmian nie oznacza konieczności wydawania nowej wersji całego projektu. Praktyczną korzyścią wynikającą z takiego rozwiązania jest oszczędność czasu. Jak podkreśla Tomasz Dziedzic, Chief Technology Officer w Linux Polska, dzięki temu, że każdy serwis może być rozwijany niezależnie od innych, praca nad aplikacją staje się szybsza i bardziej efektywna.
– Wprowadzanie zmian w jednym mikroserwisie nie wpływa na inne komponenty aplikacji. Jeśli więc klient zleci poprawkę, zgłosi błąd lub stwierdzi, że chce rozwinąć jakąś konkretną funkcję, deweloperzy nie muszą pracować nad nową wersją całego projektu – wprowadzają zmiany w jednym elemencie. Takie rozwiązanie nie tylko pozwala na szybsze wydawanie aktualizacji, lecz także usprawnia pracę. Poszczególne zespoły wykonują swoje zadania niemal niezależnie od innych osób, a serwisy aplikacji mogą mieć swoje własne wydania, co w przypadku aplikacji monolitycznych jest utrudnione – wyjaśnia Tomasz Dziedzic, Linux Polska.
Łatwiejsze skalowanie i przełamanie barier technologicznych
Oprócz poprawek dużą rolę odgrywa również kwestia skalowania aplikacji. Architektura mikroserwisowa umożliwia niezależne skalowanie poszczególnych serwisów w zależności od potrzeb i obciążenia. Proces ten przebiega zdecydowanie szybciej niż w przypadku aplikacji monolitycznych, gdzie obciążenie jednej funkcjonalności może pociągnąć za sobą ciąg zasobochłonnych automatyzacji. Jak dodaje Dariusz Świąder, CEO Linux Polska, konteneryzacja jest dla organizacji również sposobem na przełamanie barier związanych z wdrażaniem nowych technologii.
- Wolność deweloperów w zakresie doboru technologii to kolejny czynnik, który wpływa na efektywność pracy nad projektem. W przypadku aplikacji monolitycznych technologia jest zwykle narzucona z góry, co w praktyce oznacza, że musi być ona wykorzystana do pracy nad każdym elementem projektu. Konteneryzacja pozwala z kolei na dobór najbardziej optymalnych rozwiązań w zależności od serwisu. Aby ułatwić ten proces, stworzyliśmy Lekkie Pakiety Konteneryzacji – zestaw narzędzi ułatwiających integrację i obsługę technologii do zarządzania, monitorowania stanu i zabezpieczania Kubernetesa, jednej z najpopularniejszych platform służących do tworzenia i rozwoju aplikacji kontenerowych. Dzięki automatycznej instalacji i integracji dostępnych komponentów, realizacja projektu jest szybsza, prostsza i tańsza – mówi Dariusz Świąder, Linux Polska.
Kiedy kontenery okazują się mniej skuteczne?
Paradoks korzyści wynikających z konteneryzacji polega na tym, że mogą być one jednocześnie jej wadą. Dekompozycja aplikacji monolitycznej wiąże się z koniecznością wdrożenia systemu dystrybucji komunikatów pomiędzy jej komponentami – i to mimo tego, że można je rozwijać niezależnie od siebie. Brak odpowiedniej komunikacji może skutkować błędami, które mogą być widoczne dopiero podczas uruchamiania całej rozproszonej aplikacji.
Co więcej, jeśli zespół nie zna dobrze technologii, w której pracuje, zaczynają pojawiać się błędy w architekturze. Częstym problemem jest przykładowo brak zrozumienia, jak tworzy się architekturę rozproszoną – początkujący deweloperzy kończą konteneryzację na „włożeniu” aplikacji monolitycznej do kontenera, mimo że powinien to być dopiero pierwszy etap działania.
Jak podkreśla Radosław Klewin, Senior Solutions Architect w Linux Polska, konteneryzacja jest także wyzwaniem z perspektywy podejścia CI/CD.
– O ile ciągła integracja zmian nie jest problemem przy aplikacjach monolitycznych, o tyle w przypadku mikroserwisów powstaje ryzyko nierównego rozwoju poszczególnych komponentów. Wprowadzenie zbyt dużej liczby zmian w jednym serwisie wpływa na jego funkcjonowanie w całej aplikacji, a także funkcjonowanie innych serwisów. Dlatego, mimo że zespoły mają możliwość niezależnej pracy nad danym elementem aplikacji, to i tak wymaga to od nich komunikacji z innymi zespołami oraz z architektem rozwiązania, który ocenia skutki wprowadzanych zmian. Problemem okazuje się również dowolność w wyborze technologii, która w praktyce oznacza konieczność poznania jej przez pozostałe osoby pracujące przy projekcie. Jest to największe wyzwanie dla administratorów, którzy odpowiadają za konfigurację, wdrożenie i monitoring – dodaje Radosław Klewin, Linux Polska.
Kontenery przede wszystkim do dużych, złożonych systemów?
Czy z zestawienia wad i zalet konteneryzacji wynika, że mikroserwisy są dobrym rozwiązaniem przede wszystkim dla dojrzałych organizacji i doświadczonych zespołów? W pewnym stopniu wskazują na to badania. Technologie kontenerowe są uznawane za kluczowe dla biznesu przez 38 proc. firm zatrudniających powyżej 5 tys. pracowników[2]. W przypadku początkujących startupów odsetek ten wynosi zaledwie 18 proc.
Biorąc pod uwagę, że wielkość organizacji w dużym stopniu wpływa na liczbę i złożoność realizowanych przez nią projektów, można dojść do wniosku, że mikroserwisy dobrze sprawdzają się w dużych systemach o wysokiej skalowalności, w przypadku częstych aktualizacji aplikacji oraz jako sposób na organizację pracy wielu zespołów stosujących różnorodne technologie. Kiedy zatem konteneryzacja się nie sprawdza? Eksperci zwracają uwagę przede wszystkim na proste aplikacje, ograniczony budżet, zbyt mały zespół i brak doświadczenia w zarządzaniu mikroserwisami.
[1] OpenLogic, Open Source Initiative, Eclipse Foundation, 2024 State of Open Source Report, s. 11
[2] OpenLogic, Open Source Initiative, Eclipse Foundation, 2024 State of Open Source Report, s. 12