ゼファーネットのロゴ

IBM Cloud Functions から IBM Code Engine に移行する方法 – IBM ブログ

日付:


田園地帯を流れる川

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 との Downer のデータ探索の強化

3 分読みます都市交通の分野では、精度が極めて重要です。 オーストラリアとニュージーランドの総合サービスの大手プロバイダーである Downer は、精緻な輸送マトリックスの守護者であると自負しており、業務効率の向上を継続的に追求しています。 200 を超える列車と多数のセンサーを備えたダウナーは、膨大な量のデータを蓄積しました。 Downer は自社のデータから実用的な洞察を定期的に明らかにしていますが、IBM® Client Engineering とのパートナーシップは、この膨大なデータセットのさらなる可能性を探ることを目的としていました。




IBM Cloud と Satellite 全体にわたるハイブリッド・クラウド・バンキング・アプリケーションの安全かつ準拠したデプロイメントのベスト・プラクティス

10 分読みます金融サービスの顧客は、アプリケーションを最新化することをますます求めています。 これには、アジャイル技術と DevSecOps を使用した、コード開発とメンテナンスの最新化 (不足しているスキルを支援し、エンド ユーザーが必要とする革新と新しいテクノロジを可能にする)、展開と運用の改善が含まれます。 モダナイゼーションの一環として、クライアントはアプリケーションの「目的に最適な」導入場所を柔軟に決定できることを望んでいます。 これは、ハイブリッドが機能するいずれかの環境に存在する可能性があります。




スキーマを使用して Kafka アプリケーションをレベルアップする

4 分読みますApache Kafka は、オープンソースのイベント ストアおよびストリーム処理プラットフォームとしてよく知られており、データ ストリーミングの事実上の標準にまで成長しました。 この記事では、開発者の Michael Burgess が、フルマネージド Kafka サービスである IBM Event Streams on IBM Cloud® 上のイベント駆動型アプリケーションに価値を追加する方法として、スキーマとスキーマ管理の概念についての洞察を提供します。 スキーマとは何ですか? スキーマはデータの構造を記述します。 例: 単純な Java クラス…




SSD と NVMe: 違いは何ですか?

7 分読みますデータ ストレージの最近の技術進歩により、企業や消費者は従来のハードディスク ドライブ (HDD) から、より高速で遅延の少ないソリッド ステート ドライブ (SSD) テクノロジーへの移行を促しています。 この記事では、この新しいテクノロジと、それをコンピュータのマザーボードに接続するために利用できる最も高速で最も一般的なプロトコルである Non-Volatile Memory Express (NVMe) について説明します。 SSD と NVMe という用語は、XNUMX つの異なるタイプのドライブを説明するためによく使用されますが、実際には異なるデータ ストレージです。

IBM ニュースレター

最新の思想的リーダーシップと新たなトレンドに関する洞察を提供するニュースレターとトピックの最新情報を入手してください。

今すぐ会員登録します。

その他のニュースレター

スポット画像

最新のインテリジェンス

スポット画像