Jak wskazują badania przeprowadzone przez IBM, w ciągu kilku najbliższych lat kontenery w chmurze wpiszą się w krajobraz IT na dobre. Według 98% respondentów (developerzy i CTO), kontenery spełniły lub nawet przewyższyły ich oczekiwania, a 79% z nich uważa, że będą stanowiły część długofalowej strategii rozwoju.
Kontenery w chmurze
Kontenery w chmurze, czyli wykonywalne jednostki oprogramowania, zyskują największą popularność w branży software development – nic w tym dziwnego, biorąc pod uwagę korzyści, jakie czerpią z nich developerzy i DevOps. Nie jest to jedyna grupa, która może na nich skorzystać – przykładem jest zastosowanie kontenerów w budowaniu środowisk testowych oprogramowania do samochodów Volkswagen.
Chociaż kontenery nie wymagają środowiska chmurowego do działania, to właśnie w chmurze najlepiej wykorzystuje się zalety wpisane w ich architekturę. Decydują o tym takie cechy, jak:
- Wydajność – Kontenery w chmurze umożliwiają lepsze wykorzystanie procesora i pamięci, ponieważ współużytkują jądro systemu operacyjnego maszyny fizycznej, a pliki kontenerów potrzebują niewielu zasobów;
- Skalowalność – Rozbudowane i wymagające aplikacje mogą być dzielone na mikroserwisy, co zapewnia im stabilne działanie nawet przy znacznym obciążeniu;
- Przenośność – Kontenery zawierają wszystko, co jest potrzebne do uruchomienia znajdującego się w nich kodu, dzięki czemu oprogramowanie może zostać napisane raz, a następnie uruchamiane bez konieczności ponownego konfigurowania na różnych środowiskach czy infrastrukturze;
- Separacja instancji – Kontenery są od siebie oddzielone, co pozwala na wprowadzanie zmian w jednym z nich, bez zaburzeń w sąsiadujących z nimi;
- Wsparcie rozwoju i zmian – Wprowadzanie nowych funkcjonalności wymaga wyłączenia jedynie aktualizowanej części systemu. Jest to kluczowe dla aplikacji o wysokiej dostępności oraz pozwala organizacjom szybciej odpowiadać na zmiany zachodzące na rynku.
Zastosowanie kontenerów w praktyce
Z racji swojej struktury kontenery w chmurze stanowią doskonałe miejsce dla mikroserwisów. To modułowe podejście do tworzenia aplikacji pozwala utrzymywać i rozwijać systemy o skomplikowanej strukturze i rozbudowanych możliwościach bez przerw w ich pracy. Tym samym mikroserwisy utrzymują ich stałą dostępność, nie narażając firm na straty finansowe oraz ułatwiają rozwój aplikacji. Co więcej, zmniejszają one dług technologiczny – również istniejące już aplikacje można przystosować do pracy w architekturze rozproszonej.
Kontenery to jednak nie tylko “opakowanie” dla mikroserwisów, można bowiem je zastosować również w poniższych scenariuszach:
- Budowa środowisk hybrid cloud – Ponieważ kontenery działają spójnie w dowolnym miejscu, stanowią doskonałą architekturę do chmury hybrydowej, np. gdy organizacje działają w wielu chmurach publicznych oraz we własnym centrum przetwarzania danych.
- Modernizacja i migracja aplikacji – Konteneryzacja umożliwia migrację do chmury nawet starszych aplikacji.
- Internet rzeczy – Ponieważ kontenery dostarczają oprogramowanie w postaci przenośnych pakietów, które można łatwo wdrożyć, są idealnym sposobem na instalację i aktualizację aplikacji działających na urządzeniach IoT – zwłaszcza tych o minimalnej mocy obliczeniowej.
- Continuous Integration and Delivery (CI/CD) – Kontenery umożliwiają DevOps częstsze dostarczania pewnych, przetestowanych i sprawdzonych zmian w kodzie, ułatwiając implementację praktyk CI/CD, uważanych za jeden z najlepszych i najefektywniejszych sposobów pracy nad projektami informatycznymi.
Kontenery w chmurze na bare metalu
Większość firm, które rozważają konteneryzację jako kierunek rozwoju, posiada już duże doświadczenie w korzystaniu z maszyn wirtualnych. Dlatego często pierwszą myślą jest osadzenie nowej technologii na dobrze znanych VM.
Z biegiem czasu rozwiązanie to może okazać się jednak niewystarczające. Alternatywą jest więc uruchomienie kontenerów bezpośrednio na bare metalu.
Zalety kontenerów na bare metalu:
- Łatwość zarządzania – Pominięcie warstwy maszyny wirtualnej ułatwia rozwiązywanie problemów;
- Wydajność – Liczba kontenerów, które można umieścić na jednym serwerze, jest wyższa w środowisku bare metal niż na maszynach wirtualnych;
- Obniżenie kosztów – Łatwiejsze zarządzanie i wydajniejsze wykorzystanie sprzętu pozwalają zmniejszyć koszty utrzymania całego środowiska.
Jakie wyzwania stawia konteneryzacja?
Wykorzystanie kontenerów zapewnia niezaprzeczalnie wiele korzyści, ale wiąże się też z potencjalnymi trudnościami. Ponieważ jest to młoda technologia, zainteresowane organizacje nie zdobyły jeszcze wszystkich potrzebnych do korzystania z niej kompetencji. Potwierdza to badanie IBM, w którym respondenci zaliczyli do największych wyzwań:
- Brak personelu i odpowiedniej wiedzy w firmie;
- Złożoność strategii i technologii konteneryzacji;
- Wyzwania w przystosowywaniu istniejących aplikacji do kontenerów;
- Niepewność związana z czasem i kosztami projektu konteneryzacji;
- Trudność w przewidzeniu wydajności kontenerów i obawa przed niespełnieniem założeń SLA wobec klientów;
- Trudność w zarządzaniu, udostępnianiu i zabezpieczaniu danych w kontenerach.
Naprzeciw tym wyzwaniom wychodzą dostawcy kontenerów w chmurze.
Stanowią oni wsparcie zarówno dla firm, które widzą w technologii kontenerów szansę na rozwój, ale brakuje im doświadczenia, jak i tych szukających optymalizacji tego rozwiązania - pod względem wydajności czy kosztów.
Dostawcy chmurowi oferują wsparcie w zakresie konteneryzacji na wielu poziomach:
- Centrum danych – profesjonalne ośrodki gwarantują odpowiednie warunki klimatyczne, fizyczne zabezpieczenia oraz redundancję na poziomie sprzętu, sieci, energii i personelu;
- Fizyczny sprzęt – wysokiej jakości infrastruktura pozwala korzystać w pełni z możliwości kontenerów;
- Wirtualizacja i konteneryzacja – inżynierowie z data center doradzają, czy osadzić kontenery na bare metal czy maszynach wirtualnych oraz wspierają w stworzeniu odpowiedniego środowiska;
- Administracja – dostawca zapewnia profesjonalne monitorowanie i zarządzanie systemami znajdującymi się na serwerze i maszynach wirtualnych, a także orkiestrację kontenerów.
Kontenery vs serverless
Zarówno kontenery, jak i przetwarzanie bezserwerowe (serverless), należą do nowych technologii znacznie usprawniających tworzenie i wdrażanie aplikacji. Odpowiadają one jednak na różne potrzeby.
- Kontenery dają większą kontrolę nad środowiskiem, w którym działa aplikacja (choć wiąże się to również z koniecznością jego utrzymania) oraz nad używanymi językami i bibliotekami.
- Serverless natomiast pozwala programistom wdrażać i uruchamiać kod nie martwiąc się o infrastrukturę, a opłaty pobierane są jedynie za wywołanie danej funkcji. Dzięki temu stworzenie oraz eksploatacja aplikacji serverless w chmurze może być nawet 5-7 razy tańsza niż na kontenerach.
- Przetwarzanie bezserwerowe ma jednak swoje ograniczenia, np. wybór języka programowania jest uzależnione od oferty dostawcy public cloud. Ponieważ opłaty pobierane są według wykorzystania trzeba też pamiętać, że rosnąca liczba wywołań funkcji serverless powinna być wynikiem rosnącej skali biznesu, a więc transakcji biznesowych i generowanych przez nie przychodów.
Zamiast przeciwstawiać sobie kontenery i przetwarzanie bezserwerowe warto myśleć o nich jak o uzupełniających się technologiach. W przyszłości większość organizacji będzie prawdopodobnie korzystać z nich równolegle podczas tworzenia i dostarczania swoich aplikacji.
O kontenerach piszemy również
na łamach Rzeczpospolitej
Kontenery w chmurze a wirtualizacja
Czy to oznacza, że firmy powinny rezygnować z wirtualizacji na rzecz kontenerów? Jak w przypadku większości rozwiązań chmurowych wszystko zależy od potrzeb – nie ma jednej “złotej konfiguracji”, która będzie doskonałym rozwiązaniem dla każdego.
Należy wziąć też pod uwagę względy bezpieczeństwa. Ponieważ kontenery nie posiadają własnego systemu operacyjnego, dzielą OS maszyny, na której się znajdują.
W momencie, gdy dojdzie do tzw. “ucieczki z kontenera”, osoba niepowołana zyska dostęp administracyjny nie tylko do tego kontenera, ale też do samej maszyny i wszystkich pozostałych kontenerów znajdujących się na niej.
Na szczęście ucieczka z kontenera składa się z wielu etapów i można ją powstrzymać na każdym z nich, a zabezpieczenia kontenerów są stale rozwijane. Warto jednak pamiętać, że takie ryzyko istnieje.
Niejedna organizacja na pewno zyska na wykorzystaniu kontenerów w chmurze i zdecydowanie warto je wdrożyć, ale nie jako zamiennik wirtualizacji, a jako dodatkowe narzędzie.
Wdrożenie kontenerów w chmurze hybrydowej lub stworzenie hybrydowego środowiska poprzez wprowadzenie konteneryzacji zdecydowanie zwiększy zwinność i przygotuje firmy na dalszy rozwój – zarówno technologiczny, jak i biznesowy.
Kontenery w chmurze – w skrócie dla zabieganych
- Kontenery (wykonywalne jednostki oprogramowania) doskonale działają w środowiskach chmurowych.
- Do ich najważniejszych zalet należą: wysoka wydajność i skalowalność, przenośność i separacja instancji.
- Kontenery w chmurze to doskonała podstawa dla mikroserwisów – modułowego podejścia do tworzenia aplikacji. Sprawdzają się również w takich zastosowaniach, jak: budowa środowisk hybrid cloud, modernizacja i migracja aplikacji, IoT, Continuous Integration and Delivery (CI/CD).
- Ponieważ konteneryzacja jest dość młodą technologią stawia przed firmami wiele wyzwań, którym pozwalają sprostać dostawcy chmury.
- Konteneryzacja, wirtualizacja i przetwarzanie bezserwerowe (serverless) mają swoje wady i zalety, dlatego warto myśleć o nich jako uzupełniających się technologiach. Organizacje powinny korzystać z nich zgodnie ze swoimi potrzebami biznesowymi.
Zobacz również
Przejrzyj artykułyPlanujesz migrację zasobów do chmury?
Nasi eksperci odpowiedzą na każde Państwa pytanie. W zrozumiały sposób opiszą, jak działa MAIN i opracują najbardziej efektywne rozwiązanie.