Czy kontenery zastąpią wirtualne maszyny?

Amazon, Red Hat, IBM, Microsoft, a nawet VMWare rozwijają technologie kontenerów. Powstaje więc pytanie - czy oznacza to rychły koniec technologii wirtualizacji i maszyn wirtualnych?

Kontenery odgrywają kluczową rolę w coraz większej ilości projektów. Działają na styku rozwiązań chmur oraz wirtualizacji, co zostało docenione przez wielu programistów. Można też zauważyć świadomą migrację wielu dużych firm (Amazon Web Services, Red Hat, IBM, Microsoft, a nawet VMWare) w kierunku rozwoju oprogramowania kontenerowego. Czy oznacza to koniec rozwoju technologii wirtualizacyjnych?

Kontenery nie stanowią nowej technologii. Pierwsze implementacje kontenerów można było znaleźć w kodach systemu Linux. Warto wskazać przykładowo projekt LXC. Jednak dopiero w ubiegłym roku kontenery zawładnęły sercami i umysłami wielu programistów tworzących aplikacje. Przyczyną był projekt Docker, który oddziela aplikacje od infrastruktury. Każda aplikacja jest odseparowana w ramach kontenera. Izolacja i mechanizmy bezpieczeństwa pozwalają uruchomić wiele jednocześnie pracujących kontenerów danym hoście.

Zobacz również:

Dlaczego kontenery?

Kontener izoluje określony kod, aplikację lub proces. Niezależnie od tego co znajduje się wewnątrz, otrzymujemy pełną opcję zarządzania kontenerami, przenoszenia kontenerów między różnymi hostami i wiele innych funkcjonalności. W przypadku wirtualizacji na serwerze można uruchomić wiele maszyn wirtualnych obsługujących różne systemy operacyjne. Kontenery są natomiast uruchamiane na podbudowie systemu operacyjnego, więc nie wymagają uruchamiania systemu operacyjnego za każdym razem, gdy są tworzone lub uruchamiane. Kontener zawiera aplikacje, pliki użytkownika oraz dane środowiskowe. Każdy kontener jest budowany z obrazu, który przekazuje informacje co dany kontener zawiera, jakie procesy są uruchamiane wraz z uruchomieniem kontenera, a także zawiera dane konfiguracyjne i środowiskowe.

Przykładem zastosowania kontenerów może być projekt Aptible. Aptible oferuje usługę przechowywania wrażliwych danych medycznych. Z punktu widzenia Aptible kontenery były naturalnym rozwiązaniem hostingowym dla wrażliwych danych. Firma uruchomiła kontenery w ramach usług Amazon Web Services Elastic ComputeCloud (EC2), uruchamiając na tej infrastrukturze Docker. Firma przechowywała dane wrażliwe medyczne, więc stworzyła odseparowane zasoby, uruchamiając niezależne kontenery dla każdego klienta. Kontenery w tym przypadku znacząco ułatwiły zarządzanie w porównaniu do maszyn wirtualnych.

Obok Docker i LXC pojawiają się nowe projekty związane z kontenerami. Dostawcy na rynku chmur i wirtualizacji szybko wkraczają w świat kontenerów. Docker stanowiący projekt open source stał się centralnym elementem nowego środowiska. Projekt Google Kubernetes wspiera zarządzania wieloma kontenerami i także zyskuje na popularności. Amazon Web Services - główny dostawca rozwiązań IaaS - zaprezentował Amazon Elastic Container Service (ECS). ECS zajmuje się skalowaniem rozwiązań kontenerowych i dostarcza możliwości centralnego zarządzania nimi. Microsoft zaprezentował wsparcie dla kontenerów uruchamianych na Windows, podobnie jak VMware.

Czy kontenery zastąpią maszyny wirtualne?

Wiele będzie zależało od uruchamianych przez klientów systemów operacyjnych i aplikacji. Jeżeli zamierzamy uruchomić wiele aplikacji w danym systemie kontenerowym, jest to możliwe, ale może to powodować zmniejszenie wydajności. Korzystając ze współdzielonych zasobów, łatwo uruchomić 1000 niezależnych aplikacji w postaci kontenerów. W przypadku VM każda instancja aplikacji będzie wymagała identycznych i niezależnych zasobów, co będzie czasami bardzo utrudnione. Inna kwestia to system operacyjny. Kontenery obsługujące aplikacje Linux będą wymagały środowiska Linux, natomiast kontenery uruchamiające aplikacje Windows będą wymagały podbudowy w postaci systemu operacyjnego Windows.

Rozwiązania wykorzystujące heterogeniczne środowiska, zawierające wiele systemów operacyjnych i różne poziomy kontroli bezpieczeństwa pozostaną przy architekturze maszyn wirtualnych. Kontenery wymagają uruchomienia wszystkiego na tym samym systemie operacyjnym i nie mogą zostać wymieszane pomiędzy Windows i Linux. Nic nie stoi jednak na przeszkodzie, aby stworzyć zmiksowane środowisko serwerów, z różnymi systemami operacyjnymi przygotowanymi do zastosowania kontenerów.

Część firm zakłada uruchomienie kontenerów wewnątrz środowiska VM pozwalając użytkownikom zapewnić bezpieczeństwo i zarządzanie. Ich uruchomienie wymaga odpowiedniej rejestracji w sieci oraz dostarczenia mechanizmów bezpieczeństwa, które także może zapewnić VM.

W obliczu popularyzacji kontenerów wielu analityków dość szybko ogłosiło rychły koniec maszyn wirtualnych. Rzeczywistość może być jednak inna. Wirtualizacja napędza przemysł IT i trudno będzie zastąpić ją w najbliższym czasie. Kontenery są dobrym rozwiązaniem w niektórych sytuacjach, ale nie stanowią panaceum na wszystkie problemy. O kontenerach można myśleć, jako kolejnej broni w arsenale chmur, która może znaleźć zastosowanie w wielu sytuacjach, ale nie wszystkich.