IBM Cloud Docs
IBM Cloud Functions から Code Engine への移行

IBM Cloud Functions から Code Engine への移行

IBM Cloud Functions は、IBM が推奨する Functions-as-a-Service ソリューションであり、IBM のパブリック クラウドに基づいています。 世界中の 6 つのデータ センターで利用可能な IBM Cloud Functions は、設立以来、顧客のニーズに応えています。

ただし、お客様が明確に説明してきた需要の増加と追加要件により、 IBM Functions-as-a-Service のテクノロジーとオファリングを常に革新、改善、および進化させることができます。 その結果、 IBM は、これらの要求に対応するために、Functions-as-a-Service テクノロジーを IBM Cloud® Code Engineに追加しています。 Code Engineで関数を使用する場合の制限については、 関数の制限 を参照してください。

Code Engine と Cloud Functions の比較

SOC2、ISO32k、BSI C5、および金融サービス・クラウド認定のIBM Cloud Code Engineサービスは、9つのリージョンで利用可能です。 フル・マネージドのサーバーレス・プラットフォームとして、コンテナー、バッチ・ジョブ、アプリケーション、および機能として幅広いカスタマー・ワークロードを実行します。 Code EngineはIBMパブリッククラウドにあるにアクセスできます。

新しい Functions-as-a-Service 機能により、 Code Engine のお客様は、短時間で実行して完了するタイプのワークロードを実行できます。 Cloud Functions のユーザーでも、Functions-as-a-Service の初心者でも、IBM Cloud Code Engine でファンクションを実行する方法について詳しく知ることができます。 チュートリアルを実行 することもできます。

Code Engine の Functions-as-a-Service は、ユーザー・エクスペリエンス、使用パターン、セキュリティー、および総所有コストに関して、サーバーレスの価値提案を改善します。

Code Engine の関数は、以下のオプションを使用してユーザー・エクスペリエンスを簡素化します。

  • Code Engine の開発フローおよび機能と完全に統合します。
  • 一般的なプログラミング言語を含み、最適化された管理対象ランタイムを提供します。
  • コールド・スタートの待ち時間を短縮し、迅速なスケールアウトを実現するオンデマンド・コード実行を提供します。
  • Webアプリケーションを豊富にサポートする、 URL-URLベースの関数呼び出しメカニズムを提供。
  • プライベート・リポジトリーおよびレジストリーへのアクセスなど、サポートされるセキュリティー機能。

IBM Cloud Code Engine 関数を使用すると、お気に入りのプログラミング言語を使って、ビジネス・ロジックのスニペットをスケーラブルに実行する軽量なコードを書くことができます。 アプリケーションからの HTTP リクエスト、または IBM Cloud サービスや外部イベントに応じてコードを実行することができます。

代わりに、コンテナー・イメージを実行するのではなく、 Code Engine 関数がコード・バンドルを実行します。 コード・バンドルは、機能コードを表すファイルの集合です。 このコード・バンドルは、ランタイム・コンテナーに注入されます。 コード・バンドルは Code Engine によって作成され、コンテナー・レジストリーに保管されるか、関数とともにインラインで保管されます。 コード・バンドルは、Open Container Initiative (OCI) 標準コンテナー・イメージではありません。

主要な機能

IBM Cloud Functions ベースのワークロードを移行する際には、以下の機能と戦略を検討してください。

  • 進化する管理対象ランタイムのリストをサポートします。 詳しくは、 ランタイム を参照してください。

    • Node.js リリース・バージョン 18
    • Python リリース・バージョン 3.11
  • 最適化された CPU とメモリーの組み合わせ を提供します。

さらに、 Code Engine には、 プロジェクト割り当て量 だけでなく、 機能制限 も含まれています。

ワークロードに最適な Code Engine エンティティーは何ですか?

Code Engineアプリケーションは、スケーラブルなコンピュートインフラストラクチャ上で長時間実行される複雑なコンピュートタスクを提供する。

Code Engine ジョブは、高リソースを必要とする可能性がある低並列スケジュール・ワークロードに使用されます。

Code Engine 関数は、外部イベントの結果として軽量で短時間のデータ変換を実行できます。 また、Web ページ上の動的なデータ・エレメントのコンテンツを提供することもできます。 一般に、機能は、定義された時間または短時間で終了する必要があるスケーラブルで短時間実行の並列タスクを実行できます。

Code Engine 関数は、サポートされるプログラミング言語のソース・コード・スニペットを使用する直接的なプログラミング・モデルを提供します。 これらのコード・スニペットは関数定義で「インライン」として使用され、最初にコードをコンパイルする必要はありません。

アプリケーション、ジョブ、関数の比較 Code Engine アプリケーション、ジョブ、関数の比較
特性 アプリケーション ジョブ 関数
実行時間 (期間) 長期実行 (要求ごとに 10 分) 長期実行 (最大 24 時間) 短時間実行 (2 分以下)
始動待ち時間 予定開始日
終了 継続的に実行 実行から完了まで 実行から完了まで
呼び出し 要求時または永続的に実行中 スケジュール済み 要求時、インスタント
プログラミング・モデル コンテナー・ベースのビルドと実行 コンテナー・ベースのビルドと実行 言語固有のソース・コード・ファイルおよび依存関係メタデータ
並行処理 並列実行、柔軟性 低から中程度の並列実行 高並列実行
スケールアウト 要求の数に基づく ジョブ・ワークロード定義に基づく イベントまたは直接呼び出しに基づく
最適化の対象 長時間実行され、非常に複雑なワークロードとオンデマンド・スケールアウト リソース要求が高い、スケジュールされたワークロードまたは計画されたワークロード 起動時間と迅速なスケールアウト

IBM Cloud Functions アクションを Code Engine Functions に移行する FAQ

計算の一括ロードを処理するにはどうすればよいですか?

CPU とメモリーのリソースが多く、n 時間以内に完了する必要がある計算の一括ロードを処理する場合は、プログラム・ロジックを Code Engine ジョブにマイグレーションしてから、毎日実行するようにジョブをスケジュールすることができます。 詳しくは、 ジョブおよびジョブ実行の処理 を参照してください。

Web アプリケーションの動的要素を組み込むために Cloud Function を使用しました。 Code Engine 関数に移動できますか?

アクションを Code Engine 関数に変換し、提供された関数 URLを使用して必要な動的コンテンツを呼び出して返すことができます。 開始するには、 関数の操作 を参照してください。

機能コードを起動できますか?

はい。 Code Engine は、機能のクーロン・ジョブ (アラーム) をサポートします。 その他のタイプのイベント・プロデューサー (またはトリガー) は、アプリケーションおよびジョブでのみサポートされます。 アプリケーションやジョブとしてコードを作成し、cronジョブ、Objectストレージ、Event Streams (Kafka) データを含むイベント・プロデューサーへのサブスクリプションを追加できます。 詳しくは、 サブスクリプションを始めるを ご覧ください。

公開 URLから自分の関数にアクセスできますか?

Code Engine 関数には公開 URLが含まれており、作成時に提供されます。 関数に カスタム・ドメイン を使用することもできます。

機能を保護するにはどうすればよいですか?

コードを Git リポジトリやコンテナ・レジストリで保護することはできますが、関数の URLは公開されているため、関数を呼び出すための認可は関数コード自体で実装する必要があります。

動的要素を含めることはできますか?

Code Engineでサポートされる動的エレメントを含めることができます。 例えば、 Cloudant データベースを使用していて、データ変更に基づいて Cloud Functions アクションを呼び出す場合、 Code Engine は Cloudant データベースへのサブスクライブをサポートしていないため、マイグレーションできません。 ただし、 IBM Cloud Object Storageにサブスクライブすることはできます。

関数をチェーニングするためにシーケンスを使用できますか?

Code Engineシーケンスのサポートは含まれません。 しかし、どの関数もその関数を呼び出すことで呼び出すことができるため、プライベートまたはパブリックエンドポイント 一連の REST 呼び出しを使用して関数を連鎖させることができます。 このロジックは、関数コードに直接追加する必要があります。

機能をサービス資格情報にバインドできますか?

はい、サービス・バインドはサポートされています。 IBM Cloud サービスを Code Engineと統合するためのサービス・バインディングの操作 を参照してください。

進行中および終了した Code Engine 関数の実行に関する情報はどこで確認できますか?

ソース・コードから関数を作成した場合は、 ビルド・ログを表示 できます。

それ以外の場合は、IBM Cloud Logsをセットアップする ことで、関数の呼び出しに関する情報(メタ情報)と、関数コードが発するログメッセージを含む、プラットフォームのログを見ることができます。

Code Engine は、デプロイされた関数の OpenAPI 仕様を提供しますか?

いいえ、 Code Engine は、デプロイする関数の OpenAPI 仕様を生成または提供しません。 コードから OpenAPI 仕様を生成するために、多くのプログラミング言語で使用可能なパッケージおよびツールがあります。