Funktionsworkloads

Eine Funktion ist ein zustandsloser Codeausschnitt, der Aufgaben ausführt, sobald er durch „ HTTP “-Anfragen aufgerufen wird. Mit den Funktionen „ IBM “ und „ Code Engine “ können Sie Ihre Geschäftslogik skalierbar und serverlos ausführen. IBM Code Engine Die Funktionen bieten eine optimierte Laufzeitumgebung, um Szenarien mit geringer Latenz und schneller horizontaler Skalierung zu unterstützen. Ihr Funktionscode kann in einer verwalteten Laufzeitumgebung geschrieben werden, die bestimmte Versionen von Node.js oder Python enthält.

Ein Codepaket ist eine Sammlung von Dateien, die Ihren Funktionscode darstellt. Dieses Codepaket wird in den Laufzeitcontainer eingefügt. Ihr Code-Bundle wird von Code Engine erstellt und in der Container-Registry oder in der Funktion gespeichert. Ein Codepaket ist kein OCI-Standard-Container-Image (Open Container Initiative).

Lebenszyklus einer Funktionsinstanz

Wenn eine Funktion aufgerufen (gestartet) wird, wird die entsprechende Funktionsinstanz mit den konfigurierten Laufzeitcontainer-und Ressourcenparametern initialisiert. Der Prozess der ersten Initialisierung wird als Kaltstartbezeichnet.

Um die Latenzzeit für den Kaltstart zu reduzieren, optimiert Code Engine den Aufruf, indem bestimmte Laufzeiten mit bestimmten CPU-und Speicherkonfigurationen vorab aktualisiert werden. Zu den vorgewärmten Kombinationen für Funktionen gehören die Laufzeiten Node.js und Python sowie die Standard-CPU- und Speicherkombination für Funktionen, d. h. 0.25 vCPU x 1 GB Speicher. Darüber hinaus soll das System die Wiederverwendung von bereits initialisierten Funktionsinstanzen verbessern. Daher wird eine Funktionsinstanz nach Abschluss des Aufrufs aktiv gehalten, um nachfolgende Aufrufe durch Wiederverwendung derselben Instanz und Wiederverwendung des Status der Instanz nach Abschluss des letzten Aufrufs zuzulassen. Die Wiederverwendung einer Funktionsinstanz ist nicht garantiert.

Was sind die Hauptmerkmale der Arbeit mit Funktionen?

Lesen Sie die folgenden Abschnitte, um mehr über die Arbeit mit IBM Code Engine-Funktionen zu erfahren.

Isolation

Code Engine ist ein regionaler Multi-Tenant-Service, bei dem Tenants dieselbe Netz- und Recheninfrastruktur gemeinsam nutzen. Insbesondere die Netz- und Recheninfrastruktur sind gemeinsam genutzte Ressourcen und einige Managementkomponenten werden von allen Tenants einheitlich verwendet. Tenants und ihre Workloads werden jedoch mithilfe von Code Engine-Projekten voneinander isoliert. Code Engine verhindert die Kommunikation zwischen Projekten und ermöglicht die Isolation Ihrer Anwendungen in einer Multi-Tenant-Umgebung, die Anwendungen, Batch-Jobs und Funktionen umfassen kann. Darüber hinaus gibt es Zugriffssteuerungen, die auf Ressourcenebene ausgeführt werden, damit nur berechtigte Benutzer bestimmte Operationen für Projektressourcen ausführen können, wie z. B. Funktionen oder andere Code Engine-Workloads.

Weitere Informationen zur Workload-Isolation finden Sie unter Code Engine-Workload-Isolation.

Protokollierung

Funktionscode kann ' stdout und ' stderr Logs schreiben, die erfasst und an eine IBM Cloud Logs Instanz weitergeleitet werden. IBM Cloud Logs ist eine Platform Logging Instanz, die Sie einrichten können, um Ihre Logs zu indizieren. Weitere Informationen finden Sie unter Protokolle anzeigen.

Laufzeiten

Code Engine enthält Verwaltete Laufzeiten, die Sie für Ihre Funktionen verwenden können.

Verwaltete Laufzeiten umfassen Node.js-und Python-Versionen sowie bestimmte CPU-und Speicherkombinationen. Diese Laufzeiten sind für einen schnellen Start optimiert. Diese Laufzeiten werden vorab erwärmt, wodurch der Aufwand für das Extrahieren von Container-Images und das Starten von Containern und Prozessen vermieden wird. Ihr Code wird in einen bereits aktiven Container eingefügt.

Weitere Informationen finden Sie unter Laufzeiten.

Funktionen ausführen

Ganz gleich, ob Ihr Code als Quellcode in einer lokalen Datei oder in einem „ Git “-Repository vorliegt oder ob es sich um ein Container-Image handelt, das in einer öffentlichen oder privaten Registry gespeichert ist – „ Code Engine “ bietet Ihnen eine optimierte Möglichkeit, Ihren Code als Funktion auszuführen.

Sie können Ihre Funktion in Code Engine wie folgt erstellen und aufrufen:

  • Aus einem vorhandenen Code-Bundle ausführen.

  • Aus vorhandenem Quellcode ausführen. Wenn Sie mit Quellcode beginnen, der sich in einem Git-Repository oder auf Ihrer lokalen Workstation befindet, können Sie auf die Position Ihrer Quelle verweisen, und Code Engine erstellt das Image für Sie.

Weitere Informationen zum Erstellen und Aufrufen von Funktionen finden Sie unter Mit Funktionen in Code Engine.

Sicherheit

Code Engine bietet sofortigen DDoS-Schutz für Ihre Funktion. Der DDoS-Schutz von Code Engine wird von Cloud Internet Services (CIS) bereitgestellt, ohne dass Ihnen zusätzliche Kosten entstehen. DDoS Der Schutz umfasst Protokollangriffe auf den OSI-Schichten 3 und 4 ( TCP/IP ), jedoch keine Angriffe auf Schicht 7 ( HTTP ). Siehe „ DDoS-Schutz “.

Code Engine bietet zudem ein Service-Mesh zur Nutzung seiner Netzwerkebene an, das den gegenseitigen TLS-Datenverkehr ( TLS ) für Funktionen ermöglicht und so die Kommunikation zwischen Diensten sowie zwischen Benutzern und Diensten sichert.

Weitere Informationen zur Sicherheit finden Sie unter Code Engine und Sicherheit.

Gemeinsamer Aufrufzugriff und Skalierung von Funktionsinstanzen

Wenn mehrere Funktionen gleichzeitig aufgerufen werden, initialisiert Code Engine neue Funktionsinstanzen für jeden Aufruf, versucht jedoch gleichzeitig, die Wiederverwendung zu maximieren. Nur ein Funktionsaufruf wird von einer Funktionsinstanz zu einem bestimmten Zeitpunkt verarbeitet. Für Node.jskann die Funktion mit concurrency > 0 konfiguriert werden, damit mehrere Aufrufe in einer einzigen Funktionsinstanz verarbeitet werden.

Quellcode für eine Funktion packen

Funktionen können auf drei verschiedene Arten gepackt werden.

  • als einzelne Datei
  • als mehrere Dateien (mit Ordnerstruktur und abhängigen Modulen)
  • als Container-Image

Wie kann ich mit Funktionen beginnen?

Informationen zum Bereitstellen einer einfachen Anwendung Code Engine mit einem hello-world-Beispielimage enthält das Lernprogramm Running IBM Code Engine Functions.

Weitere Informationen zum Arbeiten mit Funktionen finden Sie unter Mit Funktionen in Code Engine.