Carichi di lavoro funzione
Una funzione è un frammento di codice senza stato che esegue determinate operazioni quando viene richiamata da richieste di tipo " HTTP ". Grazie alle funzioni IBM Code Engine, puoi eseguire la tua logica di business in modo scalabile e senza server. IBM Code Engine Le funzioni offrono un ambiente di esecuzione ottimizzato per supportare scenari caratterizzati da bassa latenza e rapida scalabilità orizzontale. Il codice della funzione può essere scritto in un runtime gestito che includa versioni specifiche di Node.js o Python.
Un bundle di codici è una raccolta di file che rappresenta il codice della funzione. Questo bundle di codice viene inserito nel contenitore di runtime. Il tuo bundle di codice è creato da Code Engine ed è memorizzato nel registro del contenitore o in linea con la funzione. Un bundle di codice non è un'immagine contenitore standard OCI (Open Container Initiative).
Ciclo di vita di un'istanza di funzione
Quando una funzione viene richiamata (avviata), l'istanza della funzione corrispondente viene inizializzata con il contenitore di runtime configurato e i parametri Resource. Il processo della prima inizializzazione viene definito avvio a freddo.
Per ridurre la latenza di avvio a freddo, Code Engine ottimizza il richiamo pre - riscaldando determinati runtime con specifiche configurazioni di CPU e memoria. Le combinazioni preriscaldate per le funzioni includono i runtime Node.js e Python e la combinazione predefinita di CPU e memoria per le funzioni, ovvero 0.25 vCPU x 1 GB di memoria. Inoltre, il sistema è progettato per migliorare il riutilizzo delle istanze della funzione già inizializzate. Pertanto, un'istanza della funzione viene mantenuta attiva una volta terminata la chiamata per consentire le chiamate successive riutilizzando la stessa istanza e riutilizzando lo stato dell'istanza al completamento dell'ultima chiamata. Il riutilizzo di un'istanza di funzione non è garantito.
Quali sono le caratteristiche principali di lavorare con le funzioni?
Consulta i seguenti argomenti per ulteriori informazioni sull'utilizzo delle funzioni IBM Code Engine.
- Isolamento
- Registrazione
- Runtime
- Esecuzione di funzioni
- Sicurezza
- Simultaneità di richiamo e scalabilità delle istanze di funzioni
- Impacchettamento di codice sorgente per una funzione
Isolamento
Code Engine è un servizio regionale a più tenant in cui i tenant condividono la stessa rete e infrastruttura di calcolo. In particolare, la rete e l'infrastruttura di elaborazione sono risorse condivise e alcuni componenti di gestione sono comuni a tutti i tenant. Tuttavia, i tenant e i loro carichi di lavoro sono isolati l'uno dall'altro utilizzando progetti Code Engine. Code Engine impedisce la comunicazione tra i progetti, fornendo l'isolamento alle applicazioni all'interno di un ambiente a più tenant, che può includere applicazioni, lavori batch e funzioni. Inoltre, ci sono controlli di accesso eseguiti a livello di risorsa per consentire solo agli utenti autorizzati di eseguire determinate operazioni sulle risorse del progetto, come funzioni o altri carichi di lavoro Code Engine.
Per ulteriori informazioni sull'isolamento del carico di lavoro, vedi Isolamento del carico di lavoroCode Engine.
Registrazione
Il codice funzione può scrivere i registri 'stdout e 'stderr che vengono catturati e inoltrati a un'istanza IBM Cloud Logs. IBM Cloud Logs è un'istanza di registrazione della piattaforma che può essere impostata per
indicizzare i log. Per ulteriori informazioni, vedi Visualizzazione dei log.
Runtime
Code Engine include i runtime gestiti che puoi utilizzare per le tue funzioni.
I runtime gestiti includono le versioni Node.js e Python e specifiche combinazioni di CPU e memoria. Questi runtime sono ottimizzati per un avvio rapido. Questi runtime sono pre - riscaldati, il che evita il sovraccarico di estrarre immagini del contenitore e avviare contenitori e processi. Il tuo codice viene inserito in un contenitore già in esecuzione.
Per ulteriori informazioni, vedi Runtime.
Funzioni in esecuzione
Che il tuo codice sia presente come codice sorgente in un file locale o in un repository Git, oppure che si tratti di un'immagine container presente in un registro pubblico o privato, Code Engine ti offre un modo semplificato per eseguire il tuo codice come funzione.
Puoi creare e richiamare la tua funzione in Code Engine nei seguenti modi:
-
Eseguire da un bundle di codice esistente.
-
Eseguire dal codice sorgente esistente. Se stai iniziando con il codice sorgente che si trova in un repository Git o sulla tua workstation locale, puoi puntare all'ubicazione della tua origine e Code Engine si occupa della creazione dell'immagine per te.
Per ulteriori informazioni sulla creazione e il richiamo di funzioni, consulta Gestione delle funzioni in Code Engine.
Sicurezza
Code Engine fornisce una protezione DDOS immediata per la tua funzione. La protezione DDOS di Code Engineè fornita da Cloud Internet Services (CIS) senza costi aggiuntivi per te. DDoS La protezione copre gli attacchi ai protocolli dei livelli 3 e 4 del modello OSI ( TCP/IP ), ma non quelli al livello 7 ( HTTP ). Vedi “DDoS protection ”.
Code Engine fornisce inoltre un service mesh che consente di utilizzare il proprio livello di rete, il quale rende possibile il traffico Transport Layer Security ( TLS ) tra le funzioni, garantendo così la sicurezza delle comunicazioni da servizio a servizio e da utente a servizio.
Per ulteriori informazioni sulla sicurezza, vedi Code Engine e la sicurezza.
Simultaneità di richiamo e ridimensionamento delle istanze di funzioni
Quando vengono richiamate più funzioni contemporaneamente, Code Engine inizializza le nuove istanze di funzione per ogni richiamo, ma allo stesso tempo tenta di massimizzare il riutilizzo. Solo un richiamo di funzione viene gestito da un'istanza
di funzione in un singolo momento. Per Node.js, la funzione può essere configurata con concurrency > 0 per consentire la gestione di più richiami in una singola istanza della funzione.
Impacchettamento del codice sorgente per una funzione
Le funzioni possono essere impacchettate in tre modi diversi.
- come un singolo file
- come più file (con una struttura di cartelle e moduli dipendenti)
- come immagine contenitore
Come posso iniziare con le funzioni?
Per distribuire una semplice applicazione Code Engine con un'immagine di esempio hello-world, consulta l'esercitazione Running IBM Code Engine Functions.
Per un'analisi più approfondita dell'utilizzo delle funzioni, vedi Utilizzo delle funzioni in Code Engine.