Wirtualne maszyny a kontenery

Za sprawą Docker, coraz bardziej popularnym terminem staje się “software container”. Jak to bywa z nowikami ostatnio, czasami są one wdrażane na siłę, w środowiskach gdzie nie ma takiej potrzeby.

Na blogu skupiam się na środowisku Windows, dlatego również o kontenerach będę pisał od strony programistów Windows. Najpierw jednak wypada wyjaśnić co to jest kontener?

Wiele lat temu, standardem były fizyczne maszyny. Gwarantowało to oczywiście 100% izolacji między aplikacjami. Aplikacja na komputerze A, nie mogła bezpośrednio adresować pamięci na komputerze B. Z punktu widzenia bezpieczeństwa osiągano w ten sposób wysoką niezależność. Niestety, w momencie gdy chcieliśmy wdrążyć drugi serwis\aplikację, wtedy stawało się to bardzo kosztowne ponieważ musieliśmy zakupić dodatkowy serwer. Można to pokazać następująco:

1

Ogromnym przełomem były wirtualne maszyny. Dzięki nim, na tym samym komputerze, mogliśmy symulować kilka innych systemów operacyjnych. Co ważne, każdy z nich miał swoje zasoby takie jak CPU czy pamieć podręczna. Z punktu widzenia izolacji i bezpieczeństwa, rozwiązanie było znakomite.

2

Nastały jednak czasy, gdzie taka skalowalność nie wystarczała. Wyobraźmy sobie architekturę opartą o mikro-serwisy. Przy dużym ruchu chcemy mieć możliwość aktywowania pewnych węzłów jak szybko tylko to możliwe. Wirtualne maszyny to dosyć ciężkie rozwiązanie. Każda maszyna to osobny system operacyjny. Każdy system z kolei pożera na starcie masę zasobów (CPU, pamieć). Instalacja maszyny również jest dość powolna.

Z pomocą przychodzą kontenery. Można je określić mianem wewnętrznej wirtualizacji. Pojedynczy system zawiera kilka kontenerów, które poziomem izolacji przypominają wirtualne maszyny:

3

Dzięki kontenerom nie mamy overhead, który wiązał się z wirtualną maszyną. Uruchomienie nowego kontenera jest również dużo szybsze niż VM. W wielu wypadkach takie rozwiązanie jest optymalne ponieważ zwykle nie potrzebujemy osobnego systemu, a chodzi nam wyłącznie o izolację. W przypadku mikro-serwisów, kontenery są dobrym rozwiązaniem ponieważ nie potrzebujemy osobnych systemów operacyjnych – wystarczy jeden, wspierający kontenery.

Leave a Reply

Your email address will not be published.