Czym jest technologia kontenerowa? | Porównanie

Czym jest technologia kontenerowa? | Porównanie

Technologia kontenerowa, znana również po prostu jako technologia kontenerowa, to metoda pakowania aplikacji tak, aby mogła działać wraz ze swoimi zależnościami odizolowana od innych procesów. Główni dostawcy usług przetwarzania w chmurze publicznej, w tym Amazon Web Services, Microsoft Azure i Google Cloud Platform, przyjęli technologię kontenerową, oferując oprogramowanie kontenerowe, którego nazwy obejmują popularne opcje z Docker, Apache Mesos, rkt (wymawiane „rakieta”) i Kubernetes. Technologia kontenerowa wzięła swoją nazwę od branży spedycyjnej. Zamiast oferować unikalny sposób wysyłki każdego produktu, produkty są umieszczane w stalowych kontenerach transportowych, które są już zaprojektowane do podnoszenia przez dźwig w doku, i wkładane do kontenera zaprojektowanego tak, aby pasował do standardowego rozmiaru kontenera. Krótko mówiąc, poprzez standaryzację procesu i utrzymywanie elementów razem, kontener można przenosić jako całość, a robienie tego w ten sposób kosztuje mniej. W przypadku technologii kontenerów komputerowych jest to podobna sytuacja. Czy zdarzyło Ci się kiedyś, że program działał doskonale na jednym komputerze, ale po przejściu na następny zrobił się niezręczny bałagan? Może się to zdarzyć podczas migracji oprogramowania z komputera programisty na serwer testowy lub z serwera fizycznego w centrum danych przedsiębiorstwa na serwer w chmurze. Problemy pojawiają się podczas przenoszenia oprogramowania ze względu na różnice między środowiskami maszyn, takie jak zainstalowany system operacyjny, biblioteki SSL, pamięć masowa, zabezpieczenia i topologia sieci. Tak jak dźwig podnosi cały kontener jako całość i umieszcza go na statku lub ciężarówce w celu transportu, co ułatwia przemieszczanie, komputerowa technologia kontenerów osiąga to samo. Technologia kontenerów zawiera nie tylko oprogramowanie, ale także zależności, w tym biblioteki, pliki binarne i pliki konfiguracyjne razem wzięte, i są migrowane jako całość, co pozwala uniknąć różnic między maszynami, w tym różnic w systemie operacyjnym i podstawowym sprzęcie, które powodują niekompatybilność i awarie . Kontenery ułatwiają także wdrażanie oprogramowania na serwerze.

Wirtualne maszyny

Zanim kontenery zyskały popularność, w centrum uwagi znajdowały się maszyny wirtualne. W tym przypadku serwer fizyczny może być używany do wielu aplikacji dzięki technologii wirtualizacji, zwanej również maszyną wirtualną, gdzie każda maszyna wirtualna zawiera cały system operacyjny, a także całość; aplikacja do uruchomienia. Następnie na serwerze fizycznym działa wiele maszyn wirtualnych, każda z własnym systemem operacyjnym, z pojedynczą warstwą emulacji hypervisora. Podczas jednoczesnego uruchamiania wielu systemów operacyjnych serwer jest obciążony dużym obciążeniem, ponieważ wykorzystywane są zasoby, a liczba maszyn wirtualnych jest ograniczona do kilku. Natomiast w przypadku technologii kontenerowej na serwerze działa jeden system operacyjny, ponieważ każdy kontener może współużytkować ten pojedynczy system operacyjny z innymi kontenerami na serwerze. Części wspólnego systemu operacyjnego są przeznaczone tylko do odczytu, aby nie kolidować z innymi kontenerami. Oznacza to, że w porównaniu z maszynami wirtualnymi kontenery wymagają mniej zasobów serwera przy zmniejszonym obciążeniu i są znacznie bardziej wydajne, dzięki czemu na jednym serwerze można zgrupować znacznie więcej kontenerów. Na przykład, chociaż każda maszyna wirtualna może wymagać gigabajtów pamięci, każdy kontener, na którym działa podobny program, może wymagać tylko megabajtów.

Jak działają kontenery?

Kontenery są skonfigurowane do pracy w architekturze wielokontenerowej, zwanej klastrem kontenerów. W grupie kontenerów Kubernetes znajduje się jeden główny klaster, a pozostałe powiązane kontenery są oznaczone jako węzły, które są wieloma maszynami roboczymi. Rolą mastera klastra jest planowanie obciążeń węzłów, ale także zarządzanie ich cyklem życia i aktualizacjami. Technologia kontenerowa nie jest zjawiskiem nowym i od dawna jest istotną cechą Linuksa. Postęp w technologii kontenerów, jaki nastąpił w ostatnich latach, stał się łatwiejszy w użyciu, a twórcy oprogramowania przyjęli je ze względu na ich prostotę i uniknięcie problemów ze zgodnością. Umożliwiają także podzielenie programu na małe fragmenty, zwane mikrousługami. Zaletą posiadania programu w postaci mikrousług składowych jest to, że różne zespoły mogą pracować osobno na każdym z kontenerów, pod warunkiem zachowania interakcji pomiędzy różnymi kontenerami, co ułatwia szybsze tworzenie oprogramowania. Wreszcie technologia kontenerów pozwala na pełną szczegółową kontrolę kontenerów. Chociaż na kontenerach można uruchamiać wszelkiego rodzaju oprogramowanie, starsze programy zaprojektowane do działania na maszynie wirtualnej nie migrują dobrze do technologii kontenerów. To starsze oprogramowanie działające na maszynie wirtualnej można zainstalować na platformie chmurowej, takiej jak Microsoft Azure, więc kontenery raczej nie zastąpią całkowicie maszyn wirtualnych w dającej się przewidzieć przyszłości.

Jak firmy zarządzają kontenerami?

Przy tak dużej liczbie programów działających w formie kontenerów zarządzanie kontenerami stało się wymogiem i trudno jest zawęzić niemożność ręcznego wykonania tego zadania. Wymagane jest specjalistyczne oprogramowanie do zarządzania kontenerami, a popularnym rozwiązaniem open source jest Kubernetes, który ma kilka dystrybucji, w tym Red Hat OpenShift. Oprogramowanie do zarządzania kontenerami ułatwia wdrażanie kontenerów i dobrze współpracuje ze strategiami szybkiego wdrażania filozofii DevOps. Kolejną wielką cechą technologii kontenerowej jest jej elastyczność. W przypadku maszyny wirtualnej uruchomienie zajmuje kilka minut, tak jak komputer PC na pulpicie uruchamia się na początku dnia. Natomiast w przypadku technologii kontenerowej, ponieważ na serwerze działa już system operacyjny, uruchomienie kontenera zajmuje kilka sekund. Umożliwia to uruchamianie i zatrzymywanie kontenerów w razie potrzeby, zginanie w czasie dużego zapotrzebowania i zginanie, gdy nie jest to potrzebne. Dodatkowo, jeśli kontener się zepsuje, można go szybko uruchomić ponownie i wznowić zadanie. Ten typ zarządzania nazywany jest orkiestracją kontenerów, a oprogramowanie takie jak Docker Swarm może kontrolować ten typ orkiestracji i rozdzielać zadania pomiędzy grupy kontenerów. Ponieważ wiele kontenerów korzysta z tego samego systemu operacyjnego, istnieją obawy, że technologia kontenerów jest mniej bezpieczna niż maszyna wirtualna. Wynika to z faktu, że jeśli w jądrze hosta wystąpi luka w zabezpieczeniach, będzie ona miała wpływ na wiele kontenerów. Podjęto wysiłki, aby zwiększyć bezpieczeństwo kontenerów. Jedno podejście obejmuje platformę Docker wymagającą infrastruktury podpisywania, aby zapobiec nieautoryzowanemu uruchomieniu kontenera. Istnieje również oprogramowanie zabezpieczające kontener, takie jak Twistlock, które opisuje zachowanie kontenera, a następnie zatrzymuje kontener, który nie jest częścią oczekiwanego profilu.