Konteneryzacja systemów jest aktualnie jednym z najistotniejszych haseł w branży IT. Co sprawiło, że stała się ona nieodzownym elementem w biznesie cyfrowym? Jakie korzyści można uzyskać dzięki tej technologii? Na przykładzie platformy Ferryt przyjrzymy się bliżej kontenerom i środowisku, w którym funkcjonują. Z artykułu dowiesz się również dlaczego w naszym rozwiązaniu wykorzystaliśmy platformę Kubernetes.

Konteneryzacja to pojęcie, które opisuje szereg zalet, jakie ma oprogramowanie wytwarzane w kompatybilnej technologii. Najczęściej wymieniane to przenośność czy skalowalność, ale w pakiecie dostajemy też efektywne korzystanie z zasobów, niższy koszt utrzymania oraz wiele innych pośrednich korzyści  skonteneryzowanego rozwiązania.

Dlaczego warto konteneryzować systemy?

Platforma Ferryt to system stworzony przez DomData w oparciu o najnowsze technologie dostępne na rynku. Dbamy o to, aby kolejne etapy „życia” aplikacji, takie jak instalacja, wdrożenie i utrzymanie, były tak proste i łatwe, jak tylko to możliwe. Dlatego podjęliśmy decyzję o konteneryzacji systemu Ferryt.

Jako platformę docelową wybraliśmy Kubernetes. Przekonała nas otwartość, popularność oraz szerokie wsparcie  tego rozwiązania na rynku. Podczas „oswajania” tego, czym jest konteneryzacja, szybko przekonaliśmy się, że ta metoda dystrybucji aplikacji i szeroko pojętego jej działania, oznacza łatwiej, szybciej i bardziej ekonomicznie. I to praktycznie na każdym polu. Automatyczne skalowanie systemu w zależności od potrzeb? Proszę bardzo. Efektywne zużycie zasobów w zależności od obciążenia? Jak najbardziej.

Rozkład obciążenia pomiędzy instancjami serwera aplikacji:

Dlaczego Kubernetes?

Zanim odpowiemy na pytanie, do czego służy Kubernetes, przypomnijmy jak wyglądał dotychczasowy proces zarządzania aplikacjami.

Infrastruktura utrzymująca aplikację składała się z więcej niż jednego serwera (fizycznego bądź wirtualnego), ze sztywno ustalonymi usługami, rozproszonymi na kilkanaście, a nawet kilkaset serwerów. Wraz ze wzrostem ruchu i żądań do aplikacji, rośnie również zapotrzebowanie na zasoby. Administratorzy byli zmuszeni do samodzielnego zarządzania usługami w sztywno zdefiniowanym środowisku, a także ręcznego zwiększania lub zmniejszania liczby instancji aplikacji na serwerach, co  było czasochłonne i uciążliwe.

Obecne rozwiązania upraszczają cały proces. Kubernetes, jako platforma zarządzania skonteneryzowanymi aplikacjami, posiada funkcjonalność zwaną skalowaniem poziomym podów (z ang. Horizontal Pod Autoscaling – HPA). Daje ona możliwość automatycznego i dynamicznego reagowania na zmieniające się obciążenie logicznej infrastruktury aplikacji. W przypadku wzrostu obciążania możemy w ciągu kilku chwil uruchomić dodatkowe zasoby do obsłużenia zwiększonego ruchu, aby następnie powrócić do wcześniej zdefiniowanych parametrów infrastruktury. Łatwość i szybkość skalowania jest jedną z podstawowych zalet Kubernetesa.

Scale-up i scale-down instancji serwerowych:

Jak Ferryt działa na Kubernetes?

Kiedy działa jednocześnie wiele instancji Ferryta, co jest sytuacją częstą i normalną, należy zadbać o odpowiednie ich rozłożenie na dostępnych węzłach (z ang. node).

Skalowanie poziome podów okazuje się tutaj niezwykle pomocne. Kiedy zużycie zasobów na jednej z instancji przekroczy określony pułap, automatycznie zwiększona zostaje skala wdrożenia (z ang. deployment), a nowe pody zostają automatycznie uruchomione na węzłach posiadających odpowiednio dużo wolnych zasobów. Wszystko to dzieje się autonomicznie, bez ingerencji administratora.

Kiedy wykorzystanie zasobów spada poniżej określonego poziomu, niepotrzebne już pody są wyłączane, zwalniając cenne zasoby. Rolą administratora jest jedynie ustawienie średniej utylizacji procesora oraz minimalnej i maksymalnej ilości replik aplikacji, jakie są pożądane.

Poniższe wykresy pokazują przykładowy przebieg życia kilku podów i node’ów w sytuacji, kiedy zużycie procesora wspomnianych podów drastycznie zwiększa się lub zmniejsza.

Zbiorcze obciążenie klastra z rozłożeniem na instancje:

Obciążenie przy dużej ilości instancji oraz widok jak się to rozkłada na klastrze:

Podsumowanie

Konteneryzacja systemu Ferryt przyniosła korzyści na każdym etapie jego rozwoju.

Na etapie produkcji platforma stała się bardziej uporządkowana poprzez kontrolowanie środowiska, w którym przyjdzie jej działać. Na etapie wdrożenia osiągnięto pełną zgodność ze standardami stosowanymi na rynku zarówno w instalacjach lokalnych u klienta, jak i w chmurze. Instalacja aplikacji jest szybsza i prostsza, a zarządzanie spójne. Standardy konteneryzacji w analogiczny sposób umożliwiają zarządzanie i nadzór nad wieloma aplikacjami w firmie.

Dodatkowo konteneryzacja platformy Ferryt znacząco wpływa na obniżenie kosztów wdrożenia rozwiązania i jego późniejszego utrzymania.

Jesteśmy przekonani, że stosowanie naszej Ferryt Low-Code Platform w kontenerowym środowisku Kubernetes przyniesie dodatkowe korzyści naszym Klientom.

Autorzy: Członkowie Zespołu Core zajmującego się rozwojem platformy Ferryt