Nie ma wątpliwości, że aplikacje cloud-native zrewolucjonizowały świat IT. Aby wspierać rozwój cloud-native i związanych z nimi projektów, w 2015 roku powstała organizacja Cloud Native Computing Foundation (CNCF). Fundacja ta gromadzi projekty i narzędzia dedykowane środowiskom cloud-native w ramach tzw. krajobrazu CNCF, o którym więcej przeczytasz w tym artykule.
Jak powstało CNCF?
W 2014 roku Google rozpoczęło projekt open-source do orkiestracji kontenerów o nazwie Borg. Jednak projekt nie został wdrożony w szerokiej skali, więc rok później Google nawiązało współpracę z Linux Foundation (założoną w 2011 roku), tworząc Cloud Native Computing Foundation. Borg został rozwinięty i przemianowany na Kubernetes, a głównym celem CNCF było wspieranie współpracy między Kubernetes a innymi narzędziami.
Fundacja ma bardzo rygorystyczny proces akceptacji projektów do krajobrazu CNCF. Projekt musi zostać zatwierdzony większością głosów przez Technical Oversight Committee (TOC) – komitet składający się z przedstawicieli firm członkowskich CNCF. Głosowanie ma na celu utrzymanie wysokiej jakości i zdrowia ekosystemu.
CNCF wyróżnia 3 etapy dojrzałości kodu projektu:
- Sandbox – bardzo wczesny etap, w którym projekt potrzebuje wsparcia społeczności, aby się rozwinąć. Wybierany ze względu na duży potencjał.
- Incubating – po spełnieniu wymogów Sandbox i wdrożeniu w co najmniej 3 firmach, projekt trafia do inkubacji. Otrzymuje wsparcie zespołu, który rozwija nowe funkcjonalności.
- Graduation – projekt musi wykazać dobre wyniki, posiadać aktywnych kontrybutorów z co najmniej 2 organizacji, mieć uporządkowane procesy oraz spełnić wymagania Linux Foundation Core Infrastructure, aby uzyskać odznakę „Best Practices”.
Obecnie ponad 120 projektów zostało przyjętych do CNCF po sukcesie Kubernetes.

Struktura krajobrazu cloud-native
Wszystkie projekty zaadoptowane przez CNCF są podzielone na 6 głównych kategorii, z warstwami dedykowanymi różnym obszarom tworzenia ekosystemu cloud-native.
Provisioning (Zarządzanie zasobami)
Podstawowe narzędzia niezbędne do działania aplikacji cloud-native i technologii wspierających.
- Automation and Configuration – wsparcie szybkiego wdrażania zasobów cloud-native.
- Container Registry – przechowywanie obrazów kontenerów, wspieranie ich wykorzystania przez inne narzędzia.
- Security & Compliance – bezpieczeństwo w ekosystemie cloud-native.
- Key Management – zarządzanie hasłami, dostępami i sekretami.
Runtime (Środowisko uruchomieniowe)
Narzędzia służące do uruchamiania kontenerów i zasobów.
- Container Runtime – uruchamianie aplikacji kontenerowych i zarządzanie ich cyklem życia.
- Cloud Native Storage – magazynowanie danych i tworzenie jednolitych interfejsów dla urządzeń.
- Cloud Native Network – umożliwia kontenerom komunikację poprzez wirtualną sieć.
Orchestration & Management (Orkiestracja i zarządzanie)
Narzędzia do zarządzania aplikacjami cloud-native na dużą skalę.
- Scheduling & Orchestration – zarządzanie zasobami, harmonogramowanie, automatyzacja zadań.
- Coordination & Service Discovery – komunikacja między komponentami aplikacji cloud-native.
- Remote Procedure Call (RPC) – transfer wiadomości w klastrach cloud-native.
- Service Proxy – przekierowywanie ruchu między usługami.
- API Gateway – komunikacja API między użytkownikami, aplikacjami i mikroserwisami.
- Service Mesh – zarządzanie ruchem i komunikacją między usługami, zwiększając niezawodność i obserwowalność.
App Definition & Development (Tworzenie i definiowanie aplikacji)
Narzędzia do planowania, budowy i wdrażania aplikacji cloud-native.
- Database – bazy danych natywne dla chmury lub możliwe do zintegrowania.
- Streaming & Messaging – komunikacja między usługami.
- Application Definition & Image Build – wsparcie dla deweloperów kontenerów.
- CI/CD – narzędzia do zarządzania pipeline’ami i automatyzacji wdrożeń.
Observability & Analysis (Obserwowalność i analiza)
Dostarczają informacji o działaniu infrastruktury cloud-native i wskazują obszary do poprawy.
- Monitoring – zbieranie metryk, wizualizacja, tworzenie alertów.
- Logging – gromadzenie danych operacyjnych i błędów.
- Tracing – śledzenie ścieżki żądania w rozproszonym systemie.
- Chaos Engineering – symulowanie błędów w celu sprawdzenia odporności systemu.
Platforms (Platformy)
Narzędzia zamieniające aplikacje cloud-native w gotowe rozwiązania dla firm.
- Certified Kubernetes – Distribution
- Certified Kubernetes – Hosted
- Certified Kubernetes – Installer
- PaaS/Container Service
Cloud Native Trail Map
Na podstawie krajobrazu CNCF, fundacja opracowała Cloud Native Trail Map – rekomendowaną ścieżkę adopcji cloud-native, składającą się z 10 kroków (większość z sugerowanymi narzędziami):
- Konteneryzacja
- CI/CD
- Orkiestracja i definicja aplikacji (użyj Kubernetes)
- Obserwowalność i analiza (użyj Prometheus)
- Service proxy, discovery i mesh (użyj CoreDNS, Linkerd, Envoy)
- Sieci i polityki (użyj Calico lub Weave Net)
- Rozproszone bazy danych i storage (użyj Vitess)
- Streaming i messaging (użyj gRPC lub NATS)
- Rejestr kontenerów i środowisko uruchomieniowe (użyj rkt lub Harbor)
- Dystrybucja oprogramowania (użyj Sigstore lub Notary)
