Firma Google zaprezentowała stabilną wersję platformy Knative 1.0, przeznaczonej do tworzenia infrastruktury obliczeń bezserwerowych, uruchamianej na systemie izolacji kontenerów w oparciu o platformę Kubernetes. Oprócz Google w opracowaniu Knative biorą również udział takie firmy jak IBM, Red Hat, SAP i VMware. Wydanie Knative 1.0 oznacza stabilizację interfejsu API do tworzenia aplikacji, który od teraz nie będzie się zmieniał i zachowa zgodność wsteczną. Kod projektu napisany jest w języku Go i rozpowszechniany na licencji Apache 2.0.
Proponowany w Knative bezserwerowy model tworzenia aplikacji (serverless) zapewnia dodatkowy poziom abstrakcji dla systemów chmurowych, umożliwiając wykonywanie funkcji jako usługi (FaaS, Functions as a service). Istotą bezserwerowego modelu jest to, że programista realizuje logikę na poziomie pojedynczych funkcji, nie martwiąc się o tworzenie i zarządzanie infrastrukturą do uruchamiania aplikacji, ani nie wiążąc się z konkretnymi aplikacjami serwerowymi i wymaganymi do ich działania środowiskami chmurowymi.
Rozwój odbywa się bez tworzenia monolitycznych aplikacji na poziomie przygotowywania zestawu małych, oddzielnych funkcji, z których każda zapewnia przetwarzanie określonego zdarzenia i jest zaprojektowana do pracy izolowanej bez powiązania z środowiskiem (stateless, wynik nie zależy od przeszłego stanu i zawartości systemu plików). Funkcje uruchamiane są tylko w razie potrzeby, a po przetworzeniu zdarzenia mogą od razu zakończyć swoją pracę, tzn. w odróżnieniu od mikroserwisów nie wymaga się stałego utrzymywania uruchomionych środowisk, które zużywają zasoby w trybie bezczynności.
Platforma Knative sama uruchamia kontenery w miarę potrzeby, umieszcza w nich przygotowane funkcje, organizuje zarządzanie i zapewnia skalowanie środowisk potrzebnych do wykonywania tych funkcji. Platforma może być uruchamiana na własnych zasobach bez wiązania z zewnętrznymi usługami chmurowymi. Do uruchomienia wystarczy tylko Kubernetes. Udostępniane są narzędzia wspierające różne standardowe frameworki, w tym Django, Ruby on Rails i Spring. Do zarządzania działaniem platformy może być używany interfejs wiersza poleceń.
Platforma zapewnia dwa podstawowe komponenty:
- Obsługa uruchamiania bezserwerowych kontenerów w Kubernetes z automatyczną konfiguracją połączeń sieciowych, routowaniem, śledzeniem zmian (tworzenie zrzutów kodu wdrożonego i ustawień) oraz utrzymywaniem wymaganych poziomów skalowania (aż do zmniejszenia liczby podów do zera przy braku aktywności). Programista koncentruje się wyłącznie na logice, a wszystkim, co związane z wykonaniem, zajmuje się platforma. Do organizacji połączeń sieciowych i routowania żądań mogą być wykorzystywane podsystemy sieciowe Ambassador, Contour, Kourier, Gloo i Istio. Dostępne jest wsparcie dla HTTP/2, gRPC i WebSockets.
- Eventing — uniwersalny system subskrypcji (przypisywania obsługujących), dostarczania i zarządzania zdarzeniami. Umożliwia tworzenie aplikacji działających asynchronicznie, przypisując zasoby obliczeniowe do strumieni danych za pomocą modelu obiektowego i mechanizmu przetwarzania zdarzeń.
Źródło: opennet.ru
