IBM Cloud Functions から移行する場合、IBM Cloud Code Engine は可能なデプロイメント・ターゲットの XNUMX つです。 コード エンジンは、選択できる (または必要な) アプリ、ジョブ、および (最近の機能) を提供します。 この投稿では、コード エンジン関数の操作方法に関するいくつかの論点を提供し、ヒントとコツを共有します。
IBMクラウドコードエンジン は、コンテナ化されたワークロードを実行するだけでなく、フルマネージドのサーバーレス プラットフォームです。 それは持っています 2021年XNUMX月から大きく進化しました、ブログ投稿を公開したとき、「Cloud Functions コードをコード エンジンに移行する」 2021 年には、Code Engine のアプリとジョブしかありませんでした。 今年の初めに、コード エンジンは関数のサポートを追加しました (Functions-as-a-Service、または FaaS)。
この投稿では、このトピックを改めて検討し、次のような状況から移行する方法についてのオプションについて説明します。 IBMクラウド機能 コードエンジンに。
アプリ、ジョブ、機能
IBM Cloud コード・エンジンの機能 ビジネス ロジックを実行する XNUMX つの異なる方法:
- An アプリ HTTP リクエストに応答する継続的に実行されるプロセスです。
- A ジョブ タスクを処理するために実行され、その後終了します。
- A function は、HTTP リクエストによって呼び出され、応答を生成した後に終了するステートレス コード スニペットです。 さらに、ジョブは通常、関数 (「バッチ処理」) よりも大幅に長く実行されます。
もっとたくさんあります アプリやジョブを区別するのに役立つ特徴 そして機能。 つまり、REST API を作成する場合、またはバックエンド/フロントエンド機能を備えた Web アプリケーションをデプロイする場合、アプリは最適です。 HTTP サーバーとそのリソースを完全に制御できます。
一方、ジョブは長時間実行されるプロセスであり、ユーザーの介入を必要としません。 それらは、典型的なバッチ アクティビティ、分析処理、さらには AI モデルのトレーニングである可能性があります。
最後に、関数は受信 HTTP リクエストに非常に迅速に反応できます。 チャットボットの統合や Webhook など、低遅延のユースケースに適しています。 アプリとは異なり、HTTP サーバーを定義および構成することはできません。
Cloud Functions を使用した場合、多くの機能があることを経験したことがあるかもしれません。 Cloud Functions でサポートされるユースケース。 同様に、関数には、場合に応じて重要な異なる属性が含まれる場合があります。
- 呼び出し時間または起動時間 (コールド スタート) が重要になる可能性があり、全体的な応答時間が短くなります。
- コスト (請求) が競争要因となった場合もあります。
- DevSecOps プロセスにおける開発および展開の単位としての機能によってもたらされるシンプルさと俊敏性により、一部のプロジェクトは機能を選択します。
多くの場合、上記の組み合わせにより、他のランタイム オプションやコンピューティング オプションよりも関数 (FaaS) が好まれるようになります。
クラウド関数からコードエンジンまで
Cloud Functions から Code Engine に移行する場合、アプリ、ジョブ、またはコード エンジン関数を決定する際に、次の関数の特性を考慮する必要があります。
- コードを呼び出すには http エンドポイントが必要ですか?
- 処理はイベントによってトリガーされますか?
- 既存の関数にはどのようなプログラミング言語が使用されていますか?また、必要なライブラリのサイズはどれくらいですか?
- 処理にはどのくらい時間がかかりますか、どのようなコンピューティング リソースが必要ですか、並列処理が必要ですか?
ガイド IBM Cloud Functions のコード・エンジンへの移行 コード エンジン アプリ、ジョブ、機能の特性に関する詳細な概要が記載されています。 これらは、既存のワークロードに最適なエンティティを選択するのに役立ちます。 さらに、現在の コードエンジン機能の制限事項 そして一般的な コード エンジンの制限とクォータ 考慮する必要があります。 セクション IBM Cloud Functions アクションのコード エンジン関数への移行に関するよくある質問 移行方法を決めるのに役立つかもしれません。
コード エンジン関数のヒントとテクニック
以下のヒントとコツは、既存のコードを Cloud Functions から Code Engine 関数に移行した私の経験に基づいています。 これらは、最初にローカル テストを利用して、コード エンジンの機能とジョブを組み合わせて同様の機能を実装し、コード エンジンのシステム変数を利用して統合 API を設計することで、デプロイ サイクルの短縮に役立ちます。
機能のローカルテスト
アプリは通常の Web アプリケーション、ジョブはスクリプトのようなもので、どちらもいくつかの方法でローカルでテストできます。 関数はコードの断片であるため、関数をプログラムに変換するには何らかのラッパーが必要です。 これまでのところ、次のアプローチが役に立ちました。
サブディレクトリ「func」内の関数コードでは、以下に示す Python または Node.js ラッパー コードを利用して、親ディレクトリに配置します。 そこでは、テスト構成を含むファイルも JSON オブジェクトとして管理します。 呼び出し時にコード エンジンによって関数に渡されるものと同様。 テストのために、構成ファイルをパラメータとしてラッパーを実行します。 Python と Node.js のラッパーを以下に示します。
# syntax: python wrapper.py params.json
# import the Code Engine function: func/__main__.py
from func.__main__ import main
import sys, json
if __name__ == "__main__":
# open file, read JSON config
with open(str(sys.argv[1])) as confFile:
params=json.load(confFile)
# invoke the CE function and print the result
print(main(params))
// syntax: node wrapper.js params.json
// require the Code Engine function: func/main.js
var func=require('./func/main.js')
// read the file with function parameters
const fs = require("fs");
const data = fs.readFileSync(process.argv[2]);
// invoke the CE function and log the result
console.log(func.main(JSON.parse(data)));
仕事に似た機能
場合によっては、関数の HTTP エンドポイントが必要になり、ジョブの実行時間が長くなる可能性があります。 その場合は、関数とジョブの両方を作成します。 次に、 ジョブ実行を作成するためのコード エンジン API 関数内から。 このハイブリッド アプローチでは、関数は HTTP エンドポイント経由で呼び出すことができ、ジョブの実行が開始された後に終了します。 ジョブは最大 24 時間実行でき、次の利点が得られます。 コード エンジンの並列ジョブ処理機能。 このパターンのサンプル実装は、次の場所にあります。 コード エンジンのコード例.
環境変数とAPIの設計
API と関数の名前空間を設計するには、次のものを利用できます。 コード エンジンによって挿入された環境変数 ような __ce_path
& __ce_method
。 前者は「/object」などのリクエストされた URL のパス要素を保持し、後者は GET や POST などの HTTP メソッドを保持します。 これらの変数に指定された値をオンにすると、同じコード エンジン関数から複数の API 関数を提供できます。 利点は、ベース URL が XNUMX つだけであることです。
プロジェクトとコードの管理によっては、上記のラッパー アプローチと同様に、このアプローチと各 API 関数の実装を独自のファイルに分離することを組み合わせることもできます。
結論
IBMクラウド機能 多くのユースケースとプロパティがあるため、特定のコード エンジン エンティティ (つまり、アプリ、ジョブ、または関数) への直接的なマッピングはありません。 既存の (Cloud Functions) 関数の属性をコード エンジン エンティティの属性と比較することで、最適なものを選択できます。 多くの場合、コード エンジン関数が適切な選択となる可能性があります。 このような場合のために、コード エンジンを使用した Functions-as-a-Service プロジェクトに使用できるヒントとテクニックを共有しました。
開始するには、次の IBM Cloud Code Engine ドキュメントを使用してください。
この投稿に関するフィードバック、提案、質問がある場合は、Twitter (@data_henrik)、 マストドン (@data_henrik@mastodon.social)または LinkedIn.
クラウドの詳細
IBM ニュースレター
最新の思想的リーダーシップと新たなトレンドに関する洞察を提供するニュースレターとトピックの最新情報を入手してください。
今すぐ会員登録します。
その他のニュースレター
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- PlatoData.Network 垂直生成 Ai。 自分自身に力を与えましょう。 こちらからアクセスしてください。
- プラトアイストリーム。 Web3 インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- プラトンESG。 カーボン、 クリーンテック、 エネルギー、 環境、 太陽、 廃棄物管理。 こちらからアクセスしてください。
- プラトンヘルス。 バイオテクノロジーと臨床試験のインテリジェンス。 こちらからアクセスしてください。
- 情報源: https://www.ibm.com/blog/how-to-move-from-ibm-cloud-functions-to-ibm-code-engine/