Co to są aplikacje typu cloud native i dlaczego są tak ważne?

Aplikacje cloud native są specjalnie przystosowane do architektury cloud computing.  Mogą być szybko budowane i wdrażane przez małe dedykowane zespoły deweloperów na platformy, które działają na dowolnym sprzęcie i które można łatwo skalować. Aplikacje chmurowe zapewniają zwinność (tzw. agility) i elastyczność. Można je też łatwo przenosić między chmurami.

Model cloud native to podejście do tworzenia i uruchamiania aplikacji, które w pełni wykorzystuje zalety architektury cloud computing. Chmura zmienia otoczenie konkurencyjne w praktycznie wszystkich branżach, sprawia, że inwestycje kapitałowe i personel potrzebny do uruchomienia i utrzymania centrum danych przedsiębiorstwa są zastępowane dostępnością nieograniczonych mocy obliczeniowych na żądanie i modelem pay-as-you-go. Możliwość ograniczania wydatków na IT oznacza niższą barierę wejścia przy zdobywaniu przewagi konkurencyjnej. Usługowy model chmurowy ułatwia wprowadzanie na rynek nowych pomysłów biznesowych. Oprogramowanie odgrywa tu kluczową rolę.

Większość aplikacji cloud native powstaje i jest stosowana w firmach małych lub rozpoczynających działalność. Chętnie korzystają z nich też start-upy. Większość dużych przedsiębiorstw na razie przygląda się modelowi cloud native, zastanawiając się, jak mogą z niego skorzystać.

Organizacje potrzebują platformy do tworzenia i obsługi aplikacji oraz usług opartych na chmurze, które automatyzują i integrują koncepcję DevOps, mikrousługi i kontenery. Rozwój mikrousług wymusza przede wszystkim konieczność coraz szybszego tworzenia i modyfikowania oprogramowania. Fundamenty cloud native to Linux, linuksowe kontenery i aplikacje tworzone z wykorzystaniem architektury mikrousług i kontenerów. Jednak idea cloud native oznacza znacznie więcej niż tylko wdrażanie klastrów i uruchamianie kontenerów. To szersze podejście, uwzględniające fakt, że oprogramowanie do pracy w chmurze wymaga szerokiego zestawu komponentów, które działają razem. Wymaga to również architektury, która odbiega od tradycyjnego projektowania aplikacji korporacyjnych.

Native Cloud Application (NCA) to oprogramowanie projektowane specjalnie na potrzeby architektury cloud computing, którą tworzą luźno połączone usługi chmurowe. Przy podejściu cloud native zakłada się, że infrastruktura może ulegać awariom, natomiast niezawodne mają pozostać aplikacje. W radzeniu sobie z awariami mają pomóc mechanizmy wspomagające projektowanie aplikacji. Zadaniem programistów jest rozdzielenie zadań na oddzielne usługi, które mogą działać na kilku serwerach w różnych miejscach. Ponieważ infrastruktura obsługująca natywną aplikację chmurową nie działa lokalnie, przy projektowaniu aplikacji NCA należy uwzględniać redundancję, dzięki czemu aplikacja może pozostać odporna na awarię sprzętu i być w stanie automatycznie ponownie odwzorować adresy IP w razie awarii sprzętu. Dzięki temu, że aplikacja nie jest przywiązana do serwera, środowisko można łatwo skalować.

Projektowanie NCA jest efektywne kosztowo, ponieważ usługi, moce obliczeniowe i zasoby pamięci masowych mogą w razie potrzeby być skalowane poziomo, co pozwala uniknąć zbędnych zakupów sprzętowych i tworzenia planów równoważenia obciążeń. Wirtualne serwery mogą szybko być dodawane do testowania, a aplikacja dedykowana chmurze teoretycznie może zostać wprowadzona na rynek w tym samym dniu, w którym została utworzona.

Według prognoz analityków rynkowych, do roku 2020 aplikacje cloud native będą dominować. Wówczas ruch chmurowy będzie stanowił 92% całego ruchu tworzonego przez centra danych (źródło: Cisco 6th Global Cloud Computing Index, 2016).

Zalety aplikacji działających w modelu cloud native

  • można je szybko budować i wdrażać,
  • zoptymalizowane do pracy w chmurze; wykorzystują zalety chmury,
  • odporność na awarie sprzętu/infrastruktury,
  • uniwersalny dostęp do aplikacji chmurowych,
  • elastycznie dostosowują się do dynamicznej infrastruktury,
  • umożliwiają szybkie wprowadzanie na rynek nowych pomysłów biznesowych,
  • skalowalność,
  • elastyczność i zwinność (tzw. agility), łatwość przenoszenia między chmurami,
  • zorientowane na usługi, składają się z wielu usług,
  • zautomatyzowana konfiguracja.