Rozwój technologii chmurowych przesunął priorytet z pytania „gdzie są wdrażane serwisy” na „jak są opracowywane”. Możliwe stało się tworzenie programów specjalnie dla środowisk chmurowych, wykorzystujących maksimum zalet konkretnych platform. Podejście to nazwano Cloud Native i stało się zwiastunem rewolucyjnych zmian w rozwoju infrastruktury IT. Następnie zrozumiemy cechy koncepcji, jakie są zalety i wady podejścia, kiedy jest ono właściwe i jak je wdrożyć.
Co to jest Cloud Native
Cloud Native to styl budowy infrastruktury IT, w którym aplikacje budowane są specjalnie dla środowiska chmurowego. Są one zaprojektowane tak, aby działały nie w lokalnym centrum danych, a raczej w konkretnej, „natywnej” chmurze. Na przykład na platformie Amazon EC2, Azure, GAE lub Public Cloud OpenStack od GigaCloud. Takie podejście pozwala maksymalnie wykorzystać dostawcę — wykorzystać wszystkie jego narzędzia i funkcje.
Główne cechy rozwiązań Cloud Native:
- Oparte są na architekturze mikroserwisów. Aplikacje są tworzone jako zestaw małych usług, z których każda realizuje określoną szansę biznesową, uruchamia odrębny proces i wymienia dane za pośrednictwem interfejsów API lub komunikatów. Każdy mikroserwis jest wdrażany, aktualizowany i skalowany niezależnie od innych, co pozwala na częste aktualizacje aplikacji bez ryzyka przestojów.
- Pakowane w kontenery. Aplikacje są izolowane w kontenerach i działają autonomicznie z własnymi unikalnymi systemami plików i przydzielonymi zasobami. Koncepcja kontenerów Cloud Native umożliwia wdrożenie architektury mikroserwisów przy minimalnych kosztach.
Oznacza to, że sieci chmurowe to koncepcja tworzenia aplikacji w formacie minimalnie połączonych ze sobą mikroserwisów, umieszczonych w kontenerach na tych platformach chmurowych, dla których zostały pierwotnie opracowane.
Czym Cloud Native różni się od Cloud Agnostic
Aby lepiej zrozumieć specyfikę „natywnej” filozofii chmury, porównajmy dwa koncepcyjnie różne podejścia do budowania architektury IT – Cloud Native oraz Cloud Agnostic.
Jeśli w pierwszym przypadku wybierzesz dostawcę i zbudujesz swoją infrastrukturę zgodnie z cechami jego rozwiązań chmurowych, to zgodnie z podejściem agnostycznym wszystkie Twoje usługi nie będą uzależnione od jednej chmury. Możesz hostować narzędzia na platformach różnych operatorów i swobodnie je przenosić. Ta niezależność ma swoją cenę – konieczność monitorowania działania kilku platform jednocześnie, co obciąża zespół IT. Ponadto istnieje ryzyko ograniczenia usług w chmurze. Na przykład, jeśli jeden dostawca wdrożył ważną dla Ciebie funkcję, a inni operatorzy jeszcze jej nie mają w ofercie, pozostanie ona dla Ciebie niedostępna.
Spośród tych dwóch koncepcji strategia sieci w chmurze jest najbardziej optymalną opcją do szybkiego tworzenia i skalowania usług, a także szybkiego wejścia na rynek ze swoimi produktami.
Plusy i minusy Cloud Native
Firmy wybierają infrastrukturę Cloud Native ze względu na następujące zalety:
- Wysoka prędkość aktualizacji. Dzięki temu, że aplikacje podzielone są na mikroserwisy, programiści mogą szybko wprowadzać zmiany w dowolnej części aplikacji nawet z dnia na dzień. Nie trzeba czekać na jedno masowe wydanie aktualizacji. Dzięki temu możesz poprawiać błędy w usługach i ulepszać swoje produkty tak, aby spełniały życzenia klientów bez znacznych opóźnień.
- Dostęp do wszystkich funkcji platformy chmurowej. Koncepcja sieci chmurowych pozwala na maksymalnie efektywnie wykorzystanie funkcji platformy, dla której tworzone są aplikacje. Gwarantuje to firmie pełny zwrot zapłaty za usługi dostawcy.
- Szybkie wejście na rynek. Biorąc pod uwagę, że serwisy są tworzone do funkcjonowania na konkretnej platformie, nie ma potrzeby dużej liczby integracji pomiędzy narzędziami. Pozwala to na opracowanie nowej aplikacji, aby szybko przejść do etapów produkcji i wypuszczenia na rynek.
- Łatwość zarządzania. Architektura chmurowa nie wymaga rozwiązań firm trzecich do konfigurowania aplikacji i zarządzania nimi, ponieważ większość platform zapewnia pełnowartościowe narzędzia do monitorowania. Co więcej, najpopularniejsze platformy do zarządzania mikroserwisami Cloud Native – Kubernetes i Docker – pozwalają zautomatyzować procesy wdrażania i skalowania aplikacji chmurowych.
Przy wszystkich zaletach architektury chmurowej nie należy zapominać o fundamentalnej wadzie koncepcji — przywiązaniu do jednego dostawcy. Nie wystarczy, że musisz zbudować swoją infrastrukturę zgodnie ze specyfiką konkretnej platformy, to jeszcze jesteś zależny od operatora. Na przykład, operator może nagle przestać obsługiwać krytyczne dla Ciebie funkcje, doświadczyć ataku DDoS lub znacznie podnieść ceny usług. Wtedy albo będziesz musiał zaakceptować nowe warunki, albo zainwestować w przeniesienie usług na platformy innych dostawców.
Kiedy wybrać Cloud Native i jak najlepiej wdrożyć rozwiązanie
Warto zrezygnować z wyboru Cloud Native w następujących przypadkach:
- Dla Twojej firmy ważne jest jak najszybsze wprowadzenie nowych produktów na rynek, dlatego bardziej opłaca się korzystać z gotowych szablonowych rozwiązań dostawcy niż wydawać środki na budowę nowej, złożonej infrastruktury.
- Funkcje konkretnej platformy chmurowej są dla Ciebie krytycznie ważne, więc już zdecydowałeś się na operatora, który spełni wszystkie Twoje wymagania.
- Ze względu na specyfikę prowadzonej działalności nie obawiasz się ryzyka pewnego uzależnienia od operatora. Na przykład, nie planujesz lokalizować biznesu za granicą. A jeżeli planujesz, to atrakcyjność oferty dostawcy przeważa nad wadami sieci w chmurze.
Aby w pełni wykorzystać rozwiązania Native Cloud, ważne jest, aby prawidłowo korzystać z rozwiązań:
- Skorzystaj ze sprawdzonych platform do kontenerowej orkiestracji. Na przykład Docker Swarm, Hashicorp Nomad czy Kubernetes pozwalają wdrożyć system o dowolnym stopniu złożoności w chmurze, efektywnie nim zarządzać i dostosowywać do rosnących obciążeń. Twój zespół może skupić się tylko na rozwoju usług.
- Na początku nie eksperymentuj z dużą liczbą narzędzi. Operator może zaoferować Ci wiele możliwości, ale powinieneś jasno zdecydować, z jakich technologii i szablonów będziesz korzystać na początku. Pozwoli nam to poświęcić wszystkie nasze wysiłki na rozwój prawdziwie innowacyjnych programów, zamiast rozpraszać zasoby.
- Wykorzystaj w pełni możliwości podejścia DevOps. Wspieraj współpracę między programistami i zespołem operacyjnym oraz przeprowadzaj regularne automatyczne testy produktów i rób to tak często, jak to możliwe. Przyspieszy to udostępnianie i unowocześnianie usług.
Cloud Native pozwala przyspieszyć rozwój produktu, poprawić produktywność specjalistów IT oraz zwiększyć odporność na uszkodzenia usług – a to tylko wierzchołek góry lodowej zalet „natywnego” podejścia. Dlatego jeśli jesteś gotowy częściowo zrezygnować z niezależności od chmury na rzecz większej elastyczności i wydajności architektury IT, otrzymasz rozwiązanie, które pozwoli firmie szybciej reagować na wyzwania rynku i poprawić swoją konkurencyjność.