Google har presenterat den stabila versionen av plattformen Knative 1.0, som är avsedd för att skapa infrastruktur för serverlös beräkning, utbyggd ovanpå ett containerisoleringssystem baserat på Kubernetes-plattformen. Förutom Google deltar även företag som IBM, Red Hat, SAP och VMware i utvecklingen av Knative. Utgivningen av Knative 1.0 markerar stabiliseringen av API:et för applikationsutveckling, som nu kommer att förbli oförändrat och bibehålla bakåtkompatibilitet. Projektets kod är skriven i Go och distribueras under Apache 2.0-licensen.
Den serverlösa applikationsutvecklingsmodellen som erbjuds i Knative ger en ytterligare abstraheringsnivå för molnsystem, vilket möjliggör att utföra funktioner som tjänster (FaaS, Functions as a Service). Kärnan i den serverlösa modellen är att utvecklaren implementerar logik på nivå av enskilda funktioner, utan att behöva ta hand om skapandet och hanteringen av infrastrukturen för att köra applikationer, och utan att vara bunden till specifika serverapplikationer och de molnmiljöer som krävs för deras funktion.
Utvecklingen sker utan att skapa monolitiska applikationer på nivån för att förbereda en uppsättning av små, separata funktioner, var och en av dem ansvarar för att bearbeta ett visst evenemang och är utformad för att arbeta oberoende av miljön (stateless, resultatet beror inte på tidigare tillstånd och innehållet i filsystemet). Funktionerna körs endast vid behov och kan omedelbart avsluta sin arbetscykel efter att ha behandlat ett evenemang, det vill säga i motsats till mikrotjänster krävs det inte att det alltid finns aktiva miljöer som konsumerar resurser i viloläge.
Plattformen Knative startar automatiskt containrar vid behov, placerar de förberedda funktionerna i dem, organiserar hanteringen och säkerställer skalning av de miljöer som behövs för att utföra dessa funktioner. Plattformen kan distribueras på egna resurser utan att vara bunden till externa molntjänster. Endast Kubernetes krävs för att köra. Det tillhandahålls verktyg för att stödja olika ramverk, inklusive Django, Ruby on Rails och Spring. För att hantera plattformens arbete kan kommandoradsgränssnittet användas.
Plattformen erbjuder två huvudkomponenter:
- Server för att köra serverlösa containrar i Kubernetes med automatisk nätverkskonfiguration, routing, förändringsspårning (skapande av snapshots av distribuerad kod och konfigurationer) och upprätthållande av nödvändig skalningsnivå (ner till att minska antalet poddar till noll vid inaktivitet). Utvecklaren kan fokusera helt på logiken, medan plattformen hanterar allt relaterat till körningen. För att organisera nätverksinteraktion och routa förfrågningar kan nätverksundersystem som Ambassador, Contour, Kourier, Gloo och Istio användas. Stöd finns för HTTP/2, gRPC och WebSockets.
- Eventing är ett universellt system för prenumeration (koppling av hanterare), leverans och hantering av händelser. Det möjliggör skapande av asynkront fungerande applikationer genom att koppla beräkningsresurser till datastreams med hjälp av en objektmodell och händelsebehandlingsmekanism.
Källa: opennet.ru
