サーバーレス関数を使用したAutonomous DatabaseへのIoTデータのストリーム

Internet of Things (IoT)デバイスを利用するワークロードは、リアルタイムで効率的にスケーリングする必要があります。さらに多くのデバイスおよびセンサーをデプロイすると、ストリーミングされたデータのボリュームおよび多様性が増します。Oracle Cloudでサーバーレス・ファンクションおよび自律型データベースを使用して、ストリーミングされたIoTデータの処理を自動化およびスケーリングします。

アーキテクチャ

このアーキテクチャでは、IoTデバイスからのデータはAPIゲートウェイを介してサーバーレス・ファンクションに流れ、サーバーレス・ファンクションはストリーミング・サービスを使用してOracle Cloudの自律型データベースにデータをアップロードします。クラウド外部のユーザーは、Oracle Cloud Infrastructure Computeインスタンスで実行されているフラグベースのWebサーバーを介してデータにアクセスできます。

次の図に、このアーキテクチャを示します。



oci-arch-iot-streaming-oracle.zip

アーキテクチャには、次のコンポーネントがあります。

  • リージョン

    Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。地域は他の地域から独立しており、広大な距離で(国または大陸間で)分離できます。

  • 仮想クラウド・ネットワーク(VCN)およびサブネット

    VCNは、Oracle Cloud Infrastructureリージョンで設定するカスタマイズ可能なソフトウェア定義ネットワークです。従来のデータ・センター・ネットワークと同様に、VCNを使用すると、ネットワーク環境を完全に制御できます。VCNには、VCNの作成後に変更できる複数の重複しないCIDRブロックを含めることができます。VCNは、リージョンまたは可用性ドメインにスコープ指定できるサブネットにセグメント化できます。各サブネットは、VCN内の他のサブネットと重複しない連続したアドレスの範囲で構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックまたはプライベートにできます。

    このアーキテクチャでは、自律型データベースおよびデータベースを設定する関数がプライベート・サブネットにアタッチされます。Webサーバーをホストするコンピュート・インスタンスおよびストリームを処理する関数は、パブリック・サブネットにデプロイされます。

  • ネットワーク・セキュリティ・グループ(NSG)

    NSGは、クラウド・リソースの仮想ファイアウォールとして機能します。Oracle Cloud Infrastructureのゼロ信頼セキュリティ・モデルでは、すべてのトラフィックが拒否され、VCN内のネットワーク・トラフィックを制御できます。NSGは、単一のVCN内の指定したVNICのセットにのみ適用されるイングレス・セキュリティ・ルールおよびエグレス・セキュリティ・ルールのセットで構成されます。

    このアーキテクチャのデータベースおよびWebサーバーへのアクセスは、別々のNSGを介して制御されます。

  • APIゲートウェイ

    Oracle API Gatewayでは、ネットワーク内からアクセス可能なプライベート・エンドポイントとともに、必要に応じてパブリック・インターネットに公開できるAPIを公開できます。エンドポイントは、API検証、リクエストとレスポンスの変換、ORS、認証と認可およびリクエスト制限をサポートします。

  • ストリーミング

    Oracle Cloud Infrastructure Streamingは、リアルタイムで消費および処理できる連続した大量のデータを収集するための、完全に管理されたスケーラブルで耐久性のあるストレージ・ソリューションを提供します。ストリーミングを使用して、アプリケーション・ログ、操作テレメトリ、Webクリックストリーム・データなどの大量のデータを収集したり、パブリッシュ・サブスクライブ・メッセージング・モデルでデータが連続的かつ順次生成および処理される他のユースケースに使用できます。

  • 関数

    Oracle Functionsは、完全に管理されたマルチテナントでスケーラビリティが高くオンデマンドのFunctions-as-a-Service (FaaS)プラットフォームです。Fn Projectのオープン・ソース・エンジンを利用します。関数を使用すると、コードをデプロイし、直接コールするか、イベントに応答してトリガーできます。Oracle Functionsは、Oracle Cloud Infrastructure RegistryでホストされているDockerコンテナを使用します。

  • Autonomous Database

    このアーキテクチャでは、プライベート・エンドポイントでAutonomous Database (Oracle Autonomous Data WarehouseまたはOracle Autonomous Transaction Processing)を使用します。

    Oracle Autonomous Data Warehouseは、データ・ウェアハウス・ワークロード用に最適化された、自己稼働の自己保護された自己修復データベース・サービスです。ハードウェアを構成または管理したり、ソフトウェアをインストールする必要はありません。Oracle Cloud Infrastructureは、データベースの作成と、データベースのバックアップ、パッチ適用、アップグレードおよびチューニングを処理します。

    Oracle Autonomous Transaction Processingは、トランザクション処理ワークロード用に最適化された、自己稼働の自己保護された自己修復データベース・サービスです。ハードウェアを構成または管理したり、ソフトウェアをインストールする必要はありません。Oracle Cloud Infrastructureは、データベースの作成と、データベースのバックアップ、パッチ適用、アップグレードおよびチューニングを処理します。

  • Webサーバー

    このアーキテクチャでは、Flaskマイクロフレームワーク・エンドポイントがコンピュート・インスタンスにデプロイされます。フラスコベースのアプリケーションでは、自律型データベースのデータを動的Webコンテンツとして公開できます。

推奨事項

開始点として次の推奨事項を使用します。実際の要件は異なる場合があります。

  • VCNのサイズ設定

    VCNを作成する場合、VCNのサブネットにアタッチする予定のリソースの数に基づいて、必要なCIDRブロックの数と各ブロックのサイズを決定します。標準のプライベートIPアドレス空間内にあるCIDRブロックを使用します。

    プライベート接続を設定する予定の他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ内)と重複しないCIDRブロックを選択します。

    VCNを作成した後、CIDRブロックを変更、追加および削除できます。

  • コンピュート・シェイプ

    このアーキテクチャでは、Oracle Linux 7-8イメージとVM.Standard2.1シェイプがFlashベースのWebサーバーに使用されます。アプリケーションのリソース・ニーズに適したシェイプを選択します。

  • APIゲートウェイ機能

    APIゲートウェイ・エンドポイントは、API検証、リクエストとレスポンスの変換、CORS、認証と認可およびリクエスト制限をサポートしています。ビジネスおよびITのニーズに適した機能を選択します。

  • ストリーム・パーティション化

    ストリーミング・サービスでは、パーティション化されたメッセージの追加専用ログ(ストリーム)が提供されます。パーティションはストリームのセクションです。パーティションを使用すると、複数のノードにメッセージを分割することでストリームを分散できます。各パーティションを別々のマシンに配置すると、複数のコンシューマがストリームから並行して読み取ることができます。大規模でコンピューティング集中型のワークロードの場合は、パーティション数を増やすことを検討してください。

  • Autonomous Databaseのバージョン

    自律型データベースに使用可能な最新バージョンを使用します。

注意事項

このアーキテクチャを実装する場合は、次のパラメータの要件を考慮してください。

  • リクエスト・スロットル

    APIゲートウェイを作成して1つ以上のAPIをデプロイした後、フロントエンド・クライアントがバックエンド・サービスにリクエストを送信できる速度を制限できます。バックエンド・リソースが過剰なリクエストによって過負荷にさらされないように保護することで、高可用性および公平な使用を維持するための要件に基づいてリクエスト・レート制限を決定します。また、サービス拒否(DoS)攻撃を防止したり、リソース消費を制御および制約する必要がある場合もあります。最終的には、APIデプロイメント仕様のすべてのルートにレート制限をグローバルに適用します。

  • サービス制限

    アーキテクチャを設計する際は、ストリーミングおよびファンクション・サービスのサービス制限を考慮してください。「さらに探索」セクションにリストされているサービス制限のドキュメントを参照してください。

  • 拡張性
    • データベース

      データベースのCPUコア数は、いつでも手動でスケール・アップまたはスケール・ダウンできます。自律型データベースの自動スケーリング機能を使用すると、現在のCPUコアのベース数の最大3倍をいつでも使用できます。要求が増えると、自動スケーリングによって使用中のコア数が自動的に増加します。Autonomous Databaseを使用すると、可用性やパフォーマンスに影響を与えることなく、いつでもストレージ容量を拡張できます。

    • アプリケーション

      インスタンス・プールおよび自動スケーリング機能を使用して、Flaskアプリケーションをスケーリングできます。

      インスタンス・プールを使用すると、同じリージョン内の同じ構成に基づいて複数のコンピュート・インスタンスをプロビジョニングおよび作成できます。

      自動スケーリングを使用して、CPU使用率などのパフォーマンス・メトリックに基づいてインスタンス・プール内のコンピュート・インスタンスの数を自動的に調整します。自動スケーリングにより、需要が多い期間にユーザーに一貫したパフォーマンスを提供し、需要が小さいときにコストを削減することができます。

    • 関数

      Oracle Functionsは、リクエストの負荷に基づいてファンクション・コンテナを自動的に作成および削除します。支払は、関数が呼び出されたとき、およびそれらが実行された期間にのみ行います。

  • アプリケーションの可用性

    フォルト・ドメインは、可用性ドメイン内で最適なリジリエンスを提供します。可用性を高める必要がある場合は、可能なかぎり複数の可用性ドメインまたは複数のリージョンを使用することを検討してください。

  • バックアップ
    • データベース

      Oracle Cloud Infrastructureは、自律型データベースを自動的にバックアップし、バックアップを60日間保存します。保存期間中の任意の時点にデータベースをリストアおよびリカバリできます。手動バックアップを作成して、自動バックアップを補完することもできます。手動バックアップは、作成したOracle Cloud Infrastructure Object Storageバケットに格納され、60日間保持されます。

    • アプリケーション

      Oracle Cloud Infrastructure Block Volumesサービスを使用すると、ブロック・ボリューム上のデータのポイントインタイム・バックアップを作成できます。これらのバックアップは、いつでも新しいボリュームにリストアできます。

      このサービスを使用すると、アプリケーションの中断や停止時間を発生させることなく、ブート・ボリュームのポイントインタイムのクラッシュ一貫性バックアップを作成することもできます。ブート・ボリュームとブロック・ボリュームのバックアップ機能は同じです。

  • SECURITY
    • アクセス制御

      ポリシーを使用して、クラウド内のリソースにアクセスできるユーザーと、そのユーザーが実行できるアクションを制限します。

    • ネットワーク・セキュリティ

      ネットワーキング・サービスは、セキュリティ・ルールを使用してパケット・レベルでトラフィックを制御する2つの仮想ファイアウォール機能を提供します。セキュリティ・リストとネットワーク・セキュリティ・グループ(NSG)です。NSGは、単一のVCN内の選択したVNICのセットにのみ適用されるイングレス・セキュリティ・ルールとエグレス・セキュリティ・ルールのセットで構成されます。たとえば、VCNの複数層アプリケーションのWeb層でWebサーバーとして機能するすべてのコンピュート・インスタンスを選択できます。

      NSGセキュリティ・ルールはセキュリティ・リスト・ルールと同様に機能します。ただし、NSGセキュリティ・ルールのソースまたは宛先では、CIDRブロックのかわりにNSGを指定できます。したがって、セキュリティ・ルールを簡単に記述して、同じVCN内の複数のNSG間のトラフィックまたは単一のNSG内のトラフィックを制御できます。データベース・システムの作成時に、NSGを1つ以上指定できます。1つ以上のNSGを使用するように既存のデータベース・システムを更新することもできます。

デプロイ

この参照アーキテクチャのTerraformコードは、GitHubで使用できます。シングルクリックでコードをOracle Cloud Infrastructure Resource Managerにプルし、スタックを作成してデプロイできます。または、GitHubからコンピュータにコードをダウンロードし、Terraform CLIを使用してコードをカスタマイズし、アーキテクチャをデプロイします。

  • Oracle Cloud Infrastructure Resource Managerを使用してデプロイします。
    1. Oracle Cloudへのデプロイをクリックます。

      まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。

    2. 条件をレビューし、受け入れます。
    3. スタックをデプロイするリージョンを選択します。
    4. 画面に表示されるプロンプトと指示に従って、スタックを作成します。
    5. スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
    6. ジョブが完了するまで待機し、計画を確認します。

      変更を加えるには、「Stack Details」ページに戻り、「Edit Stack」をクリックして、必要な変更を行います。次に、プラン処理を再実行します。

    7. これ以上変更が必要ない場合は、「Stack Details」ページに戻り、「Terraform Actions」をクリックして「Apply」を選択します。
  • Terraform CLIを使用してデプロイします。
    1. GitHubに移動します。
    2. コードをローカル・コンピュータにダウンロードまたはクローニングします。
    3. READMEの指示に従います。

まとめの詳細

クラウドでのワークロードに対するサーバーレス機能の使用の詳細を参照してください。

変更ログ

このログには、重要な変更のみがリストされます。