Google ha presentato la versione stabile della piattaforma Knative 1.0, progettata per creare un'infrastruttura di calcolo serverless distribuita sopra un sistema di isolamento dei container basato sulla piattaforma Kubernetes. Oltre a Google, anche aziende come IBM, Red Hat, SAP e VMware partecipano allo sviluppo di Knative. Il rilascio di Knative 1.0 segna la stabilizzazione dell'API per lo sviluppo di applicazioni, che d'ora in poi non cambierà e manterrà la compatibilità retroattiva. Il codice del progetto è scritto in Go e viene distribuito con licenza Apache 2.0.
Il modello di sviluppo serverless offerto da Knative fornisce un ulteriore livello di astrazione per i sistemi cloud, consentendo di eseguire funzioni come servizi (FaaS, Functions as a Service). L'essenza del modello serverless è che lo sviluppatore implementa la logica a livello di singole funzioni, senza preoccuparsi della creazione e gestione dell'infrastruttura necessaria per eseguire le applicazioni, e senza essere legato a specifiche applicazioni server e agli ambienti cloud necessari per il loro funzionamento.
Lo sviluppo avviene senza creare applicazioni monolitiche, a livello di preparazione di un insieme di piccole funzioni distinte, ognuna delle quali gestisce un evento specifico e progettata per lavorare in modo isolato senza legami con l'ambiente (stateless, il risultato non dipende dallo stato passato e dal contenuto del file system). Le funzioni vengono attivate solo quando necessario e possono terminare immediatamente dopo aver gestito l'evento, cioè, a differenza dei microservizi, non è necessario mantenere continuamente ambienti operativi che consumano risorse a vuoto.
La piattaforma Knative avvia autonomamente i container secondo necessità, distribuisce al loro interno le funzioni pronte, organizza la gestione e garantisce la scalabilità degli ambienti necessari per l'esecuzione di queste funzioni. La piattaforma può essere distribuita sulle proprie risorse senza legarsi a servizi cloud esterni. Per l'esecuzione è necessario solo Kubernetes. Sono forniti strumenti per supportare vari framework standard, inclusi Django, Ruby on Rails e Spring. Per gestire il funzionamento della piattaforma può essere utilizzata l'interfaccia della riga di comando.
La piattaforma fornisce due componenti principali:
- Serving per l'avvio di container serverless in Kubernetes con configurazione automatica delle comunicazioni di rete, instradamento, monitoraggio delle modifiche (creazione di snapshot del codice e delle impostazioni distribuiti) e mantenimento del livello di scalabilità richiesto (fino a ridurre il numero dei pod a zero in assenza di attività). Lo sviluppatore si concentra solamente sulla logica, mentre la piattaforma si occupa di tutto ciò che riguarda l'esecuzione. Per organizzare la comunicazione di rete e l'instradamento delle richieste possono essere utilizzati sottosistemi di rete come Ambassador, Contour, Kourier, Gloo e Istio. È supportato HTTP/2, gRPC e WebSockets.
- Eventing — un sistema universale di sottoscrizione (allegare gestori), consegna e gestione degli eventi. Permette di creare applicazioni che operano in modo asincrono, collegando risorse computazionali a flussi di dati tramite un modello a oggetti e un meccanismo di elaborazione degli eventi.
Fonte: opennet.ru
