イベントトリガーのサーバーレス・アプリケーションのデプロイ
Oracle Functionsは、Oracle Cloud Infrastructure上に構築され、Fn Projectオープン・ソース・エンジンを搭載した、サーバーレスで拡張性の高い完全管理型のプラットフォームです。開発者はこれを使用して、基礎となるインフラストラクチャのプロビジョニングや管理を心配せずにビジネス価値を提供するコードを記述およびデプロイできます。Oracle Functionsは、Dockerコンテナ・イメージとしてパッケージ化されたファンクションを含むコンテナ・ネイティブです。
アーキテクチャ
次の図は、このリファレンス・アーキテクチャを示しています。
![serverless-oci.pngの説明が続きます serverless-oci.pngの説明が続きます](img/serverless-oci.png)
図serverless-oci.pngの説明
Oracle Functionsアーキテクチャには次のコンポーネントがあります。
- リージョン
Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立し、広大な距離(国または大陸間)を分離できます。
- 可用性ドメイン
可用性ドメインは、リージョン内のスタンドアロンの独立したデータ・センターです。各可用性ドメインの物理リソースは、フォルト・トレランスを提供する他の可用性ドメインのリソースから分離されます。可用性ドメインでは、電源や冷却、内部の可用性ドメイン・ネットワークなどのインフラストラクチャは共有されません。そのため、ある可用性ドメインでの障害が、リージョン内の他の可用性ドメインに影響することはほとんどありません。
- 仮想クラウド・ネットワーク(VCN)とサブネット
VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。VCNは、従来のデータ・センター・ネットワークと同様に、ネットワーク環境を完全に制御できます。VCNには複数の重複しないCIDRブロックを含めることができ、VCNの作成後に変更できます。VCNをサブネットに分割できます。サブネットは、リージョンまたは可用性ドメインにスコープ指定できます。各サブネットは、VCN内の他のサブネットと重複しない連続したアドレスの範囲で構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックまたはプライベートにできます。
このリファレンス・アーキテクチャの機能は、パブリックのリージョナル・サブネットにデプロイされます。
- Oracle Functions
Oracle Functionsでは、コードのデプロイ、直接コールまたはイベントに応じてトリガーできます。Oracle Functionsは、イベント・サービスが起動してイメージを処理し、メタデータをオブジェクト・ストレージに格納するとトリガーされます。Oracle Functionsでは、Oracle Cloud Infrastructure RegistryでホストされているDockerコンテナが使用されます。
- イベント
Oracle Cloud Infrastructureサービスでは、イベント(リソースの変更を示す構造化メッセージ)を発行します。イベントには、作成、読取り、更新または削除(CRUD)操作、リソース・ライフサイクル状態の変更、およびリソースに影響するシステム・イベントが含まれます。バックアップが終了または失敗した場合や、オブジェクト・ストレージ・バケット内のファイルが追加、更新または削除されると、イベントが発行されます。
- オブジェクト・ストレージ
Oracle Cloud Infrastructure Object Storageは、信頼性およびコスト効率の高いデータ耐久性を実現するインターネット規模のハイパフォーマンス・ストレージ・プラットフォームです。Object Storageは、分析データ、およびイメージやビデオなどのリッチ・コンテンツを含む、あらゆるコンテンツ・タイプの非構造化データを無制限に格納できます。2つの異なるストレージ層は、アクセス頻度の高い「ホット」ストレージ(標準)と、アクセス頻度の低い「コールド」ストレージ(アーカイブ)のニーズに対応します。Standard Object Storageは、迅速かつ即時に、頻繁にアクセスする必要があるデータ用です。Archive Storageは、ごく稀にしかアクセスしないが長期間保存する必要があるデータ用です。
推奨
お客様の要件は、ここで説明するアーキテクチャとは異なる場合があります。開始点として次の推奨事項を使用します。
- VCN
VCNを作成する際、VCNのサブネットにアタッチする予定のリソース数に基づいて、必要なCIDRブロックの数および各ブロックのサイズを決定します。標準プライベートIPアドレス領域内にあるCIDRブロックを使用します。
VCNを作成した後、そのCIDRブロックを変更、追加および削除できます。
このアーキテクチャは、パブリックVCNを使用してファンクションをデプロイします。この関数は、VCNのパブリック・リージョナル・サブネットでホストされます。プライベートVCNを使用することもできます。その場合は、NATゲートウェイを使用してインターネットにアクセスする必要があります。
- Oracle Functions
このアーキテクチャでは、Javaプログラミングを使用して関数を開発しました。Fn Projectでは複数のプログラミング言語がサポートされているため、選択した言語を使用して関数を開発し、デプロイできます。
- オブジェクト・ストレージ
このアーキテクチャは、標準オブジェクト・ストレージを使用してイメージをアップロードし、格納するため、オブジェクトの作成時にイベント・サービスを取得できます。Object Storageは、Functionsプロセスの後にオブジェクトに関するメタデータを格納します。
- イベント
このアーキテクチャでは、Oracle Cloud Infrastructure Eventsサービスは、オブジェクト・ストレージの作成の変更をリスニングするように構成されています。サービスは、オブジェクトがObject Storageにアップロードされた後、処理のためにファンクションをコールします。
注意事項
- 可用性
Events Serviceは、Government Cloudレルム内のリージョンでは使用できません。
- 管理性
このアーキテクチャでは、サンプルJavaアプリケーションを使用してファンクションを記述します。ただし、選択したプログラミング言語を使用できます。
- セキュリティ
ポリシーを使用して、会社が所有するOracle Cloud Infrastructureリソースに誰がアクセスできるか、およびその方法を制限します。
Object Storageの場合、暗号化はデフォルトで有効になり、無効にできません。
Oracle Functionsにデプロイされたファンクションへのすべてのアクセスは、Oracle Cloud Infrastructure Identity and Access Management (IAM)を介して制御されます。IAMでは、ファンクション管理とファンクション起動権限の両方を特定のユーザーおよびユーザー・グループに割り当てることができます。
- コスト
ファンクションの実行中に使用されたリソースに対してのみ支払います。
デプロイ
このリファレンス・アーキテクチャのTerraformコードはGitHubで入手できます。コードを1回のクリックでOracle Cloud Infrastructure Resource Managerにプルし、スタックを作成してデプロイできます。または、GitHubからコンピュータにコードをダウンロードし、コードをカスタマイズして、Terraformコマンドライン・インタフェース(CLI)を使用してアーキテクチャをデプロイできます。
- Oracle Cloud Infrastructure Resource Managerを使用してデプロイ:
をクリックします
まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。
- 契約条件をレビューして受け入れます。
- スタックをデプロイするリージョンを選択します。
- 画面に表示されるプロンプトと指示に従ってスタックを作成します。
- スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
- ジョブが完了するまで待機してから、プランを確認します。
変更を行うには、「スタック詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「計画」処理を再実行します。
- これ以上変更が必要ない場合は、「スタックの詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
- GitHubでTerraformコードを使用してデプロイ:
- GitHubに移動します。
- ローカル・コンピュータにリポジトリをクローニングまたはダウンロードします。
README
ドキュメントの指示に従います。
変更ログ
このログには重大な変更のみが表示されます。
2021年10月27日 |
|
2021年8月23日 | 関数の特定のサービス制限に関する情報を削除しました。現在の制限については、サービス制限のドキュメントを参照してください。 |