Amazon Web Services ブログ
AWS 上の MongoDB のビルディングブロックを使用して車両のデジタルツインの課題を解決する方法
最初のブログ「AWSとMongoDBを使った車両のデジタルツインデータミドルウェア」では、デジタルツインの課題がビジネスに与える影響と、MongoDB と AWS がそれらをどのように解決できるかについて説明しました。
このブログでは、デジタルツインの課題を解決するための技術的側面について詳しく説明します。つまり、図 1 に示すように、MongoDB と AWS が、モバイルデバイス、データベース、クラウド、車両を効率的に双方向に統合するためのビルディングブロックをどのように提供しているかを説明します。
図1: 概要
コネクテッドカーのプラットフォーム環境
2025年までに、推定4億台のコネクテッドカーが道路を走ると予想されています。
コネクテッドカーの統合を通じて顧客に新しく革新的な体験を提供するためには、車両、モバイルアプリケーション、クラウドサービス間のシームレスな通信と情報の同期が必要です。これは重要な要素ですが、開発や改善も困難です。
MongoDB Atlas を AWS エコシステムで使用すると、この課題を解決し、パーソナライズされた新しい顧客体験を簡単に構築できます。図 2 に示すように、コネクテッドカー環境の構築に役立つように、各ステップを順を追って説明します。
ステップ1: MongoDB アトラスクラウドバックエンドのセットアップ
ステップ2: AWS エコシステムへの統合のセットアップ
図2: コネクテッドカー環境のハイレベルアーキテクチャ
次に、最初に必要なビルディング・ブロックである MongoDB Atlas クラウド・バックエンドのセットアップを見てみましょう。
MongoDB Atlas のクラウドバックエンドのセットアップ
図3: MongoDB Atlas バックエンド
MongoDB Atlas は開発者データプラットフォームであり、次世代のコネクテッドカープラットフォームの構築を検討している開発者に最適です。グローバルに分散されたクラスター、Atlas Triggers、Device Sync、認証、GraphQL API エンドポイントなどの機能を含む、AWS を利用した堅牢なクラウドインフラストラクチャにより、コネクテッドカー環境の作成をすぐに開始できます。
MongoDB Atlas デジタルツインバックエンドのセットアップ方法を学ぶことができる実践的な詳細については、デジタルツイン GitHub リポジトリのパート 1 を参照してください。
それでは、これから使用する Atlas の機能について見ていきましょう。
Atlas Data Services – MongoDB データベースクラスター
MongoDB Atlas アカウントを設定すると、数回クリックするだけで MongoDB データベースクラスターを起動できます。これは、同期されたすべての車両データの永続化レイヤーとして機能します。MongoDB データベースは、データモデルとしてドキュメントモデル (JSON 構造) を使用します。ドキュメントモデルは他のすべてのデータモデルのスーパーセットモデルであり、コード内のオブジェクトに直接マッピングされるため、ソフトウェア開発者にとって違和感がないモデルです。また、その柔軟性により、デジタルツインのコンテキスト情報からアラートやテレメトリデータまで、さまざまなデータを効率的に保存および処理できます。これらはすべて、MongoDB クエリ言語である「MQL」を使用する単一の API で処理できます。
世界中で何百万台ものコネクテッドカーが道路を走っているため、自動車 OEM は規制要件に対応するために、スケーラビリティを確保し、データの配信を管理し続ける必要があります。MongoDB データベースクラスターは、分散アーキテクチャと水平スケーラビリティにより、大量のデータを簡単に処理できます。
図4: MongoDB のデータベースアーキテクチャ
図4に示すように、レプリカセットは1つのプライマリノードと最大50のセカンダリノードで構成されているため、読み取り/分析ワークロードの高可用性とスケールアウトが保証されます。書き込みをスケーリングしてデータの局所性要件に対応するために、データセットを複数のシャードに分割して、各ドキュメントの保存場所を完全に制御できます。シャードクラスタでは、クエリを個別のノードにターゲティングするには、「mongos」と呼ばれるクエリルーターが必要です。ノードとシャードの追加は、アプリケーションに透過的に実行でき、クラスターを稼働させたまま拡大/縮小することができます。
Atlas App Services – サーバーレスバックエンドサービス
MongoDB データベースクラスターについて説明したので、次は、車両、モバイルアプリ、クラウドバックエンド間のデータミドルウェアの作成について説明します。このシームレスなデータレイヤーにより、車両の状態、テレメトリ、車両設定などの情報を要件に基づいて効率的に共有できます。そのために、データドリブンなアプリの構築、サービスの統合、イノベーションの迅速化に役立つフルマネージドのサーバーレスバックエンドである Atlas App Services のさまざまな機能を活用します。
Device Sync、Trigger、GraphQL、Data API などのサーバーレスサービスや、Realm SDK を使用すると、さまざまなデバイス、アプリケーション、マイクロサービスを簡単に構築して MongoDB Atlas に接続できます。
Atlas App Services を使用すると、開発者はそれぞれ独自の設定と構成を持つ複数のアプリケーションを作成できます。これらのアプリケーションは、CLI または GitHub との直接的な統合を通じて管理できます。独自のアプリケーションをゼロから作成する(ここから始めます)ことも、事前に設定されたデジタルツインバックエンドアプリケーションを直接インポートすることもできます。
次に、これらの各コンポーネントがデジタルツインデータミドルウェアの構築にどのように役立つかを見てみましょう。
Atlas App Services – 認証と認可
最初に紹介するサービスは、認証と認可です。コネクテッドカー内の多くのデータは機密性が高く、非常にプライベートなものです。そのため、誰がどの情報にアクセスできるかをフィールドレベルまで制御できる適切な制御メカニズムを用意する必要があります。Atlas App Services では、Google、Apple、Facebook などの一般的な認証プロバイダをシームレスに活用したり、Amazon Cognito などの ID プロバイダと統合したりできるため、これを簡単に実現できます。
サンプルシナリオでは、MongoDB Atlas 内でユーザ名とパスワードを直接管理できる Email/Password 認証プロバイダを利用することにしました。ユーザが認証されたら、適切な権限セットを適用する必要があります。Atlas App Services では、認証プロバイダから直接提供された特定のユーザー属性や、カスタムユーザデータの一部として保存された特定のユーザ属性に応じて、フィールドレベルまでのアクセスルールを作成できます。
図5: アクセスルールの例
Atlas App Services – Realm SDK/Device Sync
デジタルツインのユースケースでは、2つの異なる Realm SDK を活用して2つの別々のアプリケーションを構築しました。車両シミュレーターは JavaScript/TypeScript 用 SDK を使用し、車両コントローラーのモバイルアプリは Swift 用 SDK を使用しています。Realm SDK には、非常に人気の高い Realm 組み込みデータベースが含まれています。これにより、ORM などの追加のフレームワークを必要とせずに、オブジェクトをファイルシステムに直接永続化するための高度なオブジェクト指向APIが提供されます。そのため、接続が利用できない場合でも、オフラインファーストのパラダイムに従って、車両設定やユーザープロファイルを車両内またはモバイルデバイスに保存できます。これは、テレメトリデータを収集して保存し、後でクラウドバックエンドに送信したり、車内で直接処理したりすることに使用されます。
図6: End-to-End の概要
Realm SDK は Atlas Device Sync を通じて、クラウドバックエンドを経由して Realm SDK を利用している他のアプリケーションとデータを共有します。双方向のデータ同期はミリ秒以内に行われるため、たとえば車両の状態をリアルタイムで同期してモバイルアプリと簡単に共有できます。
遠隔地にある無線ネットワークは、帯域幅が狭かったり、ローミングコストが高かったりすると、信頼性できない場合もあります。Atlas Device Sync は、ネットワーク経由でデータを送信する前に、変更差分のみを同期し、透過的に圧縮を適用することで、転送されるデータ量を可能な限り減らします。ソフトウェア開発者の作業をさらに楽にするために、デバイスがオフラインの間にデータに複数の変更が加えられ再びマージする必要がある場合に備えて、同期プロトコルには決定論的な競合解決機能が組み込まれています。
この 2 つのアプリのビルド方法の詳細な手順については、GitHub リポジトリのパート 2 とパート 3 を参照してください。
AWS エコシステムへの統合のセットアップ
Atlas App Services – Triggers / AWS エコシステムへの統合
革新的な顧客体験を実現するには、車両のバッテリー残量の低下など、変化するデータにリアルタイムで対応する必要があります。デモアプリケーションでは、バッテリー状態の測定値を収集して20個のバケットにグループ化してから、クラウドバックエンドに送信して分析します。これにより、測定値データの圧縮率が向上し、オーバーヘッドが少なくなるため、伝送効率が向上します。
データが MongoDB Atlas データベースに届いたら、分析を行います。MongoDB Atlasは、インテリジェントなアプリケーションを作成するために、AI/MLシステムと組み合わされることがよくあります。MongoDB に保存されたライブデータや履歴データは、あらかじめ用意された一連のコネクタと API を使用して ML プラットフォームにモデルトレーニング、推論、オブザーバビリティを提供するために使われます。このシナリオでは、データを Amazon SageMaker に転送して分析したいと考えています。Atlas Triggers と Amazon EventBridge とのシームレスな統合がそれを可能にします。
図7: End-to-End の概要
Atlas Triggers の設定は非常に簡単で分かりやすいです。必要なのは「Insert/Update」などの実行トリガーを定義するか、タイムベースの実行スケジュールを作成するだけです。トリガー内で、実行する JavaScript 関数を指定することも、デモアプリケーションで使用しているように Amazon EventBridge とのシームレスな統合を使用して、追加の機能を必要とせずに直接公開することもできます。これにより、強力な AWS エコシステムとの統合が非常に簡単になり、最小限のコーディングで Amazon SageMaker にデータを取り込むことができ、さらには Amazon SNS と統合してプッシュ通知を行うこともできます。
このようなインテグレーションの設定方法を確認するには、デモアプリケーション Amazon SageMaker Integration をご覧ください。
Amazon SageMaker がデータを処理すると、推論結果は EventBridge に返され、そこから AWS Lambda 関数を使用して個別の MongoDB コレクションに書き戻されます。同期されたデータセットを直接更新することは明示的に行わないため、推論結果をよりユーザーフレンドリーでローカライズされたテキストやアクションで強化するなどの前処理が可能になります。
SageMakerの結果が登録されるのを待ってから Atlas Triggerを実行し、同期された車両モデルを車両またはモバイルアプリケーションのユーザーに適した情報で更新する、というのが Atlas Triggers の最適な使い方と言えます。
Atlas App Services – GraphQL API
大事なことを言い忘れましたが、MongoDB と GraphQL では、恐ろしい SQL Joinを削除できます。Atlas App Servicesは、前述の認証プロバイダとの統合やフィールドレベルまでのロールベースの権限など、フルマネージド型の Atlas GraphQL API を提供します。GraphQL の優れた点は、ドキュメントモデルとの相性が良く、複数の MongoDB コレクションにわたって階層型データを効率的に、しかもオーバーフェッチせずにシームレスにクエリできることです。GraphQL に必要なスキーマは、権限やさまざまな SDK のクラス定義に使用される JSON スキーマと自動的に同期されるため、ソフトウェア開発プロセス全体が効率的で摩擦のないものになります。
Digital Twin デモアプリケーションをデプロイしている場合は、Atlas の Vehicle スキーマをクリックして、車両とその部品に定義されている JSON スキーマを調べるか、下の図 8 を見てください。さまざまなコレクション内のオブジェクト間の関係を定義する方法も確認できます。
MongoDB Atlas App Services には、データベースに対して直接 GraphQL クエリを実行およびテストするためのシンプルなユーザーインターフェイスも用意されています。
図9: GraphQLでのデータのクエリ
GraphQL は階層データセットのクエリには最適ですが、GraphQL によるデータの書き込みと更新は非常に難しく、不要な開発工数がかかる場合があります。そこで、MongoDB ドライバーと同じように簡単に REST API を使用してデータを操作できるように、Atlas Data API が提供されています。
GraphQL API と同様に、ワンクリックでデータ API を有効にできます。設定した認証プロバイダによって割り当てられたロールに基づいて、MongoDB クラスター内のデータにアクセスするための https エンドポイントが提供されます。必要なのは、「MQL」クエリまたは集約パイプラインを認証して発行し、結果を取得することだけです。
結論
このブログでは、MongoDB と AWS とのシームレスで双方向な統合を実現するというデジタルツインの課題を解決するための技術的側面について詳しく説明しました。ただし、新しい技術や概念を学ぶには実践するのが一番なので、GitHub リポジトリをステップバイステップで徹底的に手順を確認してデモ環境を実行することをお勧めします。
MongoDB を使用して次世代のカスタマーエクスペリエンスを推進し、デジタルツインの課題をシームレスに解決する方法について詳しく知りたい場合は、industry.solutions@mongodb.com までお気軽にお問い合わせください。
この投稿は「How to solve the digital twin challenge using building blocks from MongoDB on AWS」をAWS Japan SAの岩根 義忠が翻訳しました。