Co to jest konteneryzacja?

Powstanie technologii konteneryzacji to konsekwencja dążenia twórców aplikacji do architektury mikroserwisów. Zarządzanie złożonymi, rozproszonymi systemami mikroaplikacji stało się sporym wyzwaniem logistycznym, stąd odniesienie do idei kontenerów w branży logistycznej. 

Podzielone na mniejsze elementy aplikacje umieszcza się w kontenerach czyli wydzielonych obszarach maszyny wirtualnej. Kontener zawiera wszystko (kod źródłowy, biblioteki systemowe, pliki konfiguracyjne itp.), co niezbędne do uruchomienia aplikacji. Dzięki temu aplikację można szybko przenieść i uruchomić w innym środowisku, bez konieczności jego ponownego, ręcznego konfigurowania. 

Dlaczego warto stosować kontenery?

Zmniejszenie wydatków 

W kontenerach znajduje się wszystko, czego aplikacja wymaga do uruchomienia, a system operacyjny jest najczęściej współdzielony przez wiele kontenerów. W przeciwieństwie do maszyn wirtualnych, które posiadają własny system operacyjny dla każdej aplikacji, kontenery są wydajniejsze, zajmują mniej miejsca i wykorzystują w związku z tym mniej zasobów.  

Przenośność (portability)  

Kontenery cechują się przenośnością tj. zawarte na nich aplikacje można dowolnie przenosić między różnymi środowiskami, a następnie uruchamiać.  

Ułatwienie pracy

W środowisku programistycznym kontenery skracają czas pracy nad tworzeniem aplikacji, co wynika z ich szybkiego działania i możliwości przeprowadzania operacji w różnych środowiskach.  
 

Skalowalność  

 Kontenery tworzy się szybko i równie szybko skaluje. Można dzięki temu natychmiast zareagować np. na nieoczekiwane obciążenie.  
 

Modułowość

Dzięki kontenerom istnieje możliwość podzielenia aplikacji na kilka komponentów. Tego typu modułowość zwiększa wydajność pracy; można pracować nad komponentem z jego własną funkcją, zamiast nad całością. 

Kubernetes i orkiestracja kontenerów

Aby ułatwić zarządzanie aplikacjami złożonymi z setek kontenerów zlokalizowanych na wielu serwerach niezbędne jest narzędzie do orkiestracji. Najpopularniejszym rozwiązaniem jest platforma open-source Kubernetes (K8s) stworzona przez Google, a obecnie rozwijana przez Cloud Native Computing Foundation.  

Kubernetes monitoruje aplikacje kontenerowe, które są wdrażane w chmurze. Ponownie uruchamia osierocone kontenery, zamyka kontenery, gdy nie są one używane, i automatycznie przydziela zasoby, takie jak pamięć, pamięć masowa i procesor, gdy jest to konieczne.