5 rzeczy, które warto wiedzieć o aplikacjach cloud-native

Cloud-native to sposób tworzenia oprogramowania, od lat używany przez takie firmy jak Facebook, Netflix czy Amazon. Podejście cloud-native pozwala im tworzyć i rozwijać aplikacje dużo bardziej efektywnie, wykorzystując potencjał usług chmurowych w zakresie skalowalności, produktywności i bezpieczeństwa. To właśnie rozwiązania w chmurze dają programistom dodatkowy czas na rozwój i dopracowywanie kolejnych funkcjonalności produktu.

Julia Haleniuk. Content Writer w branży IT, specjalizująca się w zakresie najnowszych technologii. Gościnnie publikuje na blogach i portalach poświęconych tematyce rozwiązań PaaS i SaaS. Współpracowała z Cloud Foundry Foundation, organizacją non-profit promującą technologie cloud-native oraz Grape Up, polskim liderem w zakresie wdrażania rozwiązań cloud-native w przedsiębiorstwach z listy Fortune 1000.


Rynek nowych technologii nieustannie się zmienia, a co za tym idzie – wymagania klientów rosną w zawrotnym tempie. Dlatego też firmy specjalizujące się w oprogramowaniu cloud-native, wyprzedzają się we wdrażaniu coraz nowszych rozwiązań. W tym artykule poznasz pięć zalet aplikacji cloud-native. Jednak na wstępie warto zadać sobie pytanie:

Co sprawia, że aplikacje cloud-native są tak ważne?

Dziś już chyba każdy zdaje sobie sprawę z tego, jak ogromny wpływ na nasze życie mają nowe technologie. Rozmowy prowadzimy na Facebook’u, filmy oglądamy na Netfliksie, a dokumenty przechowujemy na Google Drive. Przynajmniej część z nas robi zakupy na Amazonie. Technologia towarzyszy nam na każdym kroku. Codziennie. Wszędzie.

Co za tym idzie, dostęp do tych aplikacji to dla nas oczywista oczywistość. Wspomniane wcześniej oczekiwania użytkowników, czyli nasze oczekiwania względem produktów cyfrowych rosną. Chcemy, aby były one niezawodne i dostępne, zawsze i wszędzie. I tym samym, wysuwa się jeden wniosek: Aby wyróżniać się na tle nasyconego rynku, w którym konkurencja nie śpi ani minuty, firmy potrzebują bardzo wydajnej infrastruktury technologicznej. 

Przez ostatnie dwadzieścia lat obserwowaliśmy gwałtowny rozwój technologii, jak i zmiany w kulturze organizacyjnej i samym podejściu do pracy. Naturalnym efektem tych zmian jest szybszy rozwój oprogramowania. Dodatkowo, potęgują to również takie rzeczy jak automatyzacja, integracja procesów, metodologia DevOps oraz architektura mikroserwisów. Często jednak bywa tak, że zespół musi czekać, aż na infrastrukturę konieczną do realizacji zadań. A to, jak wiemy, tylko spowalnia proces. 

Co za tym idzie, niektóre firmy próbują automatyzować dostarczanie infrastruktury albo na próbę wprowadzają DevOps w organizacji. Jeśli jednak zapewnianie wsparcia infrastrukturalnego zależy od zespołu pracującego zdalnie, który często pracuje w innym tempie niż reszta organizacji, taka automatyzacja niewiele pomoże. Rozwój chmury pokazuje, że dostępność infrastruktury jest możliwa w niekończącej się skali, a zespoły IT są w stanie dostarczać infrastrukturę z szybkością oferowaną przez dostawców usług na Amazonie. Co więcej, chmura bardziej się opłaca, ponieważ nie wymaga dużych nakładów kapitałowych. 

To klasyczny model usługi pay-as-you-go, której popularność obserwujemy wśród startupów, gdzie błyskawiczna weryfikacja założeń jest często niezbędna. Przechodząc do sedna, co tak naprawdę trzeba wiedzieć o cloud-native?

Co składa się na aplikacje cloud-native?

Mając już zarys przydatności aplikacji typu cloud-native, wróćmy do ich definicji, która czasem może wydawać się zawiła. Aplikacje cloud-native to aplikacje, które są specjalnie przystosowane do architektury cloud computing. Składają się z pięciu czynników podzielonych na dwie kategorie i to one są kluczowe do tworzenia środowiska cloud-native. 

Automatyzacja platformy chmurowej

Innymi słowy, to naturalne środowisko życia dla aplikacji cloud-native, które pozwala aplikacjom funkcjonować, zarządzać bezpieczeństwem i współpracować z innymi aplikacjami. Elastyczność platform chmurowych i ich efektywność kosztowa jest idealna dla przedsiębiorstw, które nie chcą płacić z wyprzedzeniem za rozwiązania, które dopiero testują.

Funkcjonalności serverless 

To te niewielkie, ograniczone do jednego celu funkcjonalności, które pozwalają budować architekturę event-driven z wykorzystaniem mikroserwisów. Sama nazwa “serverless” może być trochę myląca, ponieważ kod jest umieszczony na serwerach, ale to po stronie dostawcy usług chmurowych leży obowiązek utrzymywania odpowiedniego działania i skalowania działania kodu. Na rynku istnieje szeroki zakresu usług serverless dla aplikacji cloud-native. Technologie i usługi takie jak IoT, Big Data czy Data Storage zbudowane są na bazie narzędzi open source. W praktyce oznacza to, że przy ich wykorzystaniu użytkownik nie musi zajmować się utrzymaniem całej platformy czy technologii i koncentrować się na instalacji, konfiguracji lub wybranych funkcjonalnościach.         

Wzorce architektury mikroserwisów

Wzorce architektury mają zapewniać niezależne produkty, które z kolei mają jeden rodzaj funkcjonalności o pojedynczym zastosowaniu. Mogą być rozwijane, testowane i wdrażane niezależnie, tak żeby przyspieszyć czas wyjścia produktu na rynek. Co jest równoznaczne z tym, co oferuje podejście cloud-native. 

Każdy kto pracuje nad tworzeniem mikroserwisów, powinien budować je w taki sposób, aby działały zgodnie z wytycznymi cloud-native. Najprawdopodobniej będzie to jedno z  największych wyzwań w tworzeniu i prowadzeniu aplikacji w rozproszonym środowisku. Na szczęście, “Zasada 12 czynników” przy tworzeniu aplikacji pozwala realizować takie projekty według sprawdzonych schematów:      

Źródło: 12factor.net

DevOps

Cloud-native to nie tylko zmiana sposobu tworzenia oprogramowania, lecz też liczne zmiany w kulturze organizacyjnej. To przede wszystkim postępowanie zgodne z zasadami DevOps. Dlatego ważne jest, aby zespoły produkcji i platformowe ze sobą bezpośrednio współpracowały. Jeden zespół jest odpowiedzialny za rozwój aplikacji, a drugi za pracę oraz automatyzację samej platformy.

Cloud reliability engineering

Cloud Reliability Engineering (CRE) to podejście oparte na filozofii Site Reliability Engineering opracowanej przez Google. Każda firma może je zastosować. Koncept bazuje na zarządzaniu platformą w sposób zbliżony do cyklu życia samego oprogramowania. Podejście to różni się od tradycyjnych praktyk z branży IT. W skrócie, inżynierowie SRE wykonują pracę, która była realizowana przez zespół platformowy. 

W sposobie pracy zespołów SRE można zauważyć następujące różnice. Tworzący je ludzie to inżynierowie z umiejętnościami budowy oprogramowania i aplikacji, charakteryzujący się dedykacją dla realizowanych zadań. Mają oni rozległą wiedzę o językach programistycznych, strukturach danych, algorytmach i wydajności. W rezultacie mogą tworzyć bardziej wydajne oprogramowanie. 

Wnioski

Nie ma wątpliwości co do tego, że to właśnie między innymi dzięki cloud native Facebook czy Amazon nie mają sobie równych. Oczywiście proces budowania tych aplikacji cloud native to nie tylko wybór odpowiednich narzędzi. To też odpowiedni ludzi, kultura ich pracy oraz metodyka DevOps, która w odpowiedni sposób łączy ludzi, procesy i technologie.


Pierwotna wersja artykułu znajduje się na blog.grapeup.com.

Patronujemy

 
 
Polecamy
W zespole siła, czyli Code Review