Google ha presentato una versione stabile della piattaforma Knative 1.0, progettata per creare un'infrastruttura informatica serverless distribuita su un sistema di isolamento dei contenitori basato sulla piattaforma Kubernetes. Oltre a Google, nello sviluppo di Knative sono coinvolte anche aziende come IBM, Red Hat, SAP e VMware. Il rilascio di Knative 1.0 ha segnato la stabilizzazione dell'API di sviluppo dell'applicazione, che d'ora in poi rimarrà invariata e compatibile con le versioni precedenti. Il codice del progetto è scritto in Go e distribuito sotto la licenza Apache 2.0.
Il modello di sviluppo di applicazioni serverless offerto da Knative fornisce un ulteriore livello di astrazione per i sistemi cloud, consentendo di eseguire le funzioni come servizi (FaaS, Functions as a service). L'essenza del modello serverless è che lo sviluppatore implementa la logica a livello delle singole funzioni, senza preoccuparsi di creare e gestire l'infrastruttura per l'esecuzione delle applicazioni e senza essere vincolato a specifiche applicazioni server e agli ambienti cloud necessari al loro funzionamento.
Lo sviluppo viene effettuato senza creare applicazioni monolitiche a livello di preparazione di una serie di piccole funzioni individuali, ognuna delle quali garantisce l'elaborazione di un evento specifico ed è progettata per funzionare separatamente senza riferimento all'ambiente (apolide, il risultato non dipende da lo stato precedente e il contenuto del file system). Le funzioni vengono avviate solo quando se ne presenta la necessità e dopo aver elaborato l'evento possono immediatamente completare il loro lavoro, ovvero a differenza dei microservizi, non è richiesta la presenza costante di ambienti in esecuzione che consumano risorse inattive.
La stessa piattaforma Knative avvia i contenitori secondo necessità, inserisce al loro interno le funzioni predisposte, organizza la gestione e garantisce il ridimensionamento degli ambienti necessari per eseguire tali funzioni. La piattaforma può essere implementata autonomamente senza essere vincolata a servizi cloud esterni. Per l'esecuzione è necessario solo Kubernetes. Vengono forniti strumenti per supportare una varietà di framework comuni, tra cui Django, Ruby on Rails e Spring. L'interfaccia della riga di comando può essere utilizzata per controllare il funzionamento della piattaforma.
La piattaforma prevede due componenti principali:
- Servire per eseguire contenitori serverless in Kubernetes con configurazione automatica della comunicazione di rete, instradamento, tracciamento delle modifiche (creazione di istantanee del codice ospitato e delle impostazioni) e mantenimento del livello di scalabilità richiesto (fino a ridurre a zero il numero di pod in assenza di attività) . Lo sviluppatore si concentra solo sulla logica; tutto ciò che riguarda l'esecuzione è gestito dalla piattaforma. Per organizzare l'interazione di rete e le richieste di instradamento è possibile utilizzare i sottosistemi di rete Ambassador, Contour, Kourier, Gloo e Istio. È disponibile il supporto per HTTP/2, gRPC e WebSocket.
- Eventing è un sistema universale per la sottoscrizione (collegamento di gestori), la consegna e la gestione degli eventi. Consente di creare applicazioni in esecuzione asincrona collegando risorse di elaborazione ai flussi di dati utilizzando un modello a oggetti e un meccanismo di elaborazione degli eventi.
Fonte: opennet.ru