IBM Cloud Docs
Migration de IBM Cloud Functions vers Code Engine

Migration de IBM Cloud Functions vers Code Engine

IBM Cloud Functions a été IBM la solution Functions-as-a-Service recommandée par IBM, basée sur le nuage public d'IBM. Disponible dans six centres de données à travers le monde, IBM Cloud Functions répond aux besoins des clients depuis sa création.

Cependant, les exigences accrues et les exigences supplémentaires que nos clients ont formulées nous conduisent à innover, à améliorer et à faire évoluer en permanence les technologies et les offres IBM Functions-as-a-Service. Par conséquent, pour répondre à ces demandes, IBM ajoute la technologie Functions-as-a-Service à IBM Cloud® Code Engine. Pour connaître les limitations liées à l'utilisation de fonctions dans Code Engine, voir Limitations de fonction.

Comparaison de Code Engine à Cloud Functions

Le service SOC2, ISO32k, BSI C5, et certifié Financial Services Cloud IBM Cloud Code Engine est disponible dans neuf (9) régions. En tant que plateforme sans serveur entièrement gérée, elle exécute une grande variété de charges de travail client telles que des conteneurs, des travaux par lots, des applications et des fonctions. Vous pouvez accéder à Code Engine dans le IBM public cloud.

Les nouvelles fonctionnalités Functions-as-a-Service permettent aux clients Code Engine d'exécuter des charges de travail de type exécution / exécution courte. Que vous soyez un client de Cloud Functions ou que vous découvriez les fonctions en tant que service, vous pouvez en savoir plus sur l'exécution de fonctions dans IBM Cloud Code Engine. Vous pouvez même suivre un tutoriel.

Functions-as-a-Service dans Code Engine offre une proposition de valeur sans serveur améliorée en termes d'expérience utilisateur, de modèles d'utilisation, de sécurité et de coût total de possession.

Les fonctions de Code Engine simplifient votre expérience utilisateur avec les options suivantes.

  • S'intègre entièrement au flux de développement et aux fonctions Code Engine.
  • Inclut des langages de programmation communs et fournit des environnements d'exécution gérés optimisés.
  • Offre une exécution de code à la demande avec un faible temps d'attente de démarrage à froid et une mise à l'échelle rapide.
  • Offre un mécanisme d'invocation de fonctions basé sur l' URL Web avec un support riche en fonctionnalités pour les applications Web.
  • Fonctions de sécurité prises en charge, telles que l'accès aux référentiels et registres privés.

Avec les fonctions de IBM Cloud Code Engine, vous pouvez utiliser votre langage de programmation préféré pour écrire un code léger qui exécute des bribes de logique d'entreprise de manière évolutive. Vous pouvez exécuter du code en réponse à des requêtes HTTP provenant d'applications ou en réponse à des services IBM Cloud et à des événements externes.

Au lieu d'exécuter une image de conteneur, les fonctions Code Engine exécutent un bundle de code. Un bundle de code est une collection de fichiers qui représente votre code de fonction. Ce bundle de code est injecté dans le conteneur d'exécution. Votre bundle de code est créé par Code Engine et est stocké dans le registre de conteneur ou en ligne avec la fonction. Un bundle de code n'est pas une image de conteneur standard OCI (Open Container Initiative).

Principales fonctionnalités

Lorsque vous migrez vos charges de travail basées sur IBM Cloud Functions, tenez compte des capacités et stratégies suivantes.

En outre, Code Engine inclut des limites de fonction, ainsi que des quotas de projet.

Quelle entité Code Engine est la mieux adaptée à ma charge de travail?

Code Engine les applications servent des tâches de calcul complexes et de longue durée sur une infrastructure de calcul évolutive.

Les travaux Code Engine sont utilisés pour les charges de travail planifiées à faible parallélisme qui peuvent nécessiter des ressources élevées.

Les fonctions Code Engine peuvent effectuer des transformations de données légères et de courte durée en tant que résultats d'événements externes. Ils peuvent également servir le contenu des éléments de données dynamiques sur les pages Web. En général, les fonctions peuvent exécuter des tâches parallèles évolutives et de courte durée qui doivent être terminées dans un délai défini ou court.

Les fonctions Code Engine offrent un modèle de programmation simple qui utilise des fragments de code source des langages de programmation pris en charge. Ces fragments de code sont utilisés "en ligne" dans une définition de fonction sans qu'il soit nécessaire de compiler votre code en premier.

Comparer les applications, les emplois et les fonctions Code Engine
Caractéristique Application Travail Fonction
Temps d'exécution (durée) A exécution longue (10 minutes par demande) Longue durée (jusqu'à 24 heures) Courte durée (2 minutes ou moins)
Temps d'attente de démarrage Moyen Début planifié Faible
Résiliation Exécution en continu Exécution jusqu'à la fin Exécution jusqu'à la fin
Appel A la demande ou en cours d'exécution permanente Planifiée Sur demande, instantané
Modèle de programmation Génération et exécution basées sur un conteneur Génération et exécution basées sur un conteneur Fichiers de code source spécifiques au langage et métadonnées de dépendance
Parallélisme Exécution parallèle, flexible Exécution parallèle faible à moyenne Exécution parallèle élevée
Extension En fonction du nombre de demandes En fonction de la définition de charge de travail du travail Basé sur des événements ou des appels directs
Optimisé pour Charge de travail longue durée et très complexe et ajout à la demande Charges de travail planifiées ou planifiées avec des demandes de ressources élevées Temps de démarrage et ajout rapide

Migration des IBM Cloud Functions Actions vers les Code Engine Fonctions FAQ

Comment puis-je traiter un chargement en bloc de calculs?

Si vous traitez un chargement en bloc de calculs qui nécessitent des ressources d'UC et de mémoire élevées et doivent être terminés en moins de n heures, vous pouvez migrer votre logique de programme dans un travail Code Engine, puis planifier l'exécution quotidienne de vos travaux. Pour plus d'informations, voir Utilisation de travaux et d'exécutions de travail.

J'ai utilisé Cloud Function pour inclure des éléments dynamiques pour mon application Web. Puis-je passer aux fonctions Code Engine ?

Vous pouvez convertir votre action en une fonction Code Engine, puis utiliser l' URL la fonction fournie pour invoquer et renvoyer le contenu dynamique requis. Pour commencer, voir Utilisation des fonctions.

Puis-je déclencher mon code de fonction?

Oui. Code Engine prend en charge les travaux cron (alarmes) pour les fonctions. Les autres types de producteurs d'événements (ou de déclencheurs) ne sont pris en charge que pour les applications et les travaux. Vous pouvez créer votre code en tant qu'application ou tâche, puis ajouter un abonnement à un producteur d'événements, y compris les tâches cron, le stockage d'objets et les données Event Streams (Kafka). Pour plus d'informations, voir Premiers pas avec les abonnements.

Peut-on accéder à ma fonction par le biais d'une URL publique ?

Une fonction Code Engine comprend une URL publique, qui vous est fournie lorsque vous la créez. Vous pouvez également utiliser un domaine personnalisé pour votre fonction.

Comment puis-je sécuriser mes fonctions?

Bien que votre code puisse être sécurisé dans un dépôt Git ou un registre de conteneur, l' URL votre fonction étant publique, l'autorisation d'invoquer votre fonction doit être mise en œuvre par le code de la fonction elle-même.

Puis-je inclure des éléments dynamiques?

Vous pouvez inclure des éléments dynamiques pris en charge par Code Engine. Par exemple, si vous utilisez une base de données Cloudant et que vous appelez des actions Cloud Functions basées sur des modifications de données, vous ne pouvez pas migrer car Code Engine ne prend pas en charge l'abonnement à une base de données Cloudant. Toutefois, vous pouvez vous abonner à IBM Cloud Object Storage.

Puis-je utiliser des séquences pour enchaîner mes fonctions?

Code Engine n'inclut pas la prise en charge des séquences. Cependant, comme n'importe quelle fonction peut être invoquée en appelant son point de terminaison privé ou public, vous pouvez enchaîner vos fonctions avec une série d'appels REST. Cette logique doit être ajoutée directement à votre code de fonction.

Puis-je utiliser des actions whisk.system ?

Si vous utilisez des Cloud Functions basées sur des actions whisk.system, vous pouvez exporter votre action whisk.system avec la commande ibmcloud fn action get et inclure l'option --save. La sortie contient le code source et les références aux bibliothèques requises. Ensuite, créez une fonction Code Engine, basée sur les artefacts source exportés. Bien qu'un certain niveau de compatibilité des artefacts soit conservé, vous ne pouvez pas exporter les métadonnées d'action directement dans les fonctions Code Engine.

Puis-je lier ma fonction aux données d'identification du service?

Oui, les liaisons de service sont prises en charge ! Voir Utilisation de liaisons de service pour intégrer des services IBM Cloud à Code Engine.

Où puis-je trouver des informations sur mes exécutions de fonction Code Engine en cours et terminées?

Si vous avez créé votre fonction à partir du code source, vous pouvez afficher les journaux de génération.

Sinon, vous pouvez utiliser set up IBM Cloud Logs pour afficher les journaux de la plate-forme, qui contiennent des informations sur l'invocation de la fonction (méta-informations) ainsi que les messages émis par le code de la fonction.

Code Engine fournit-il une spécification OpenAPI pour la fonction déployée?

Non, Code Engine ne génère pas ou ne fournit pas de spécification OpenAPI pour les fonctions que vous déployez. Des packages et des outils sont disponibles pour de nombreux langages de programmation afin de générer une spécification OpenAPI à partir de code.