よくある質問 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

よくある質問

このセクションでは、マイクロサービスにおけるデータ永続化の実現について、一般的に提起される質問に対する回答を提供します。

モダナイゼーションの一環として、モノリシックデータベースをいつモダナイズできますか?

モノリシックアプリケーションをマイクロサービスに分解し始めたら、モノリシックデータベースのモダナイゼーションに集中すべきです。データベースをアプリケーションに合わせた複数の小さなデータベースに分割する戦略を必ず作成します。

レガシーなモノリシック・データベースを複数のマイクロサービス用に維持できますか?

複数のマイクロサービスでモノリシックデータベースを共有すると密結合が生じます。つまり、マイクロサービスに変更を個別にデプロイすることはできず、スキーマの変更はすべてマイクロサービス間で調整する必要があります。リレーショナルデータストアをモノリシックデータベースとして使用することもできますが、一部のマイクロサービスには NoSQL データベースの方が適している場合があります。

マイクロサービスアーキテクチャ用のデータベースを設計する際、何を考慮すべきですか?

アプリケーションの機能に合ったドメインに基づいてアプリケーションを設計する必要があります。アプリケーションの機能を評価し、リレーショナルデータベーススキーマが必要かどうかを必ず判断します。要件に合う場合は、NoSQL データベースの使用も検討すべきです。

異なるマイクロサービス間でデータ整合性を維持するための一般的なパターンは何ですか?

最も一般的なパターンは、イベント駆動型アーキテクチャ を使うことです。

トランザクションの自動化を維持するにはどうすれば良いですか?

マイクロサービスアーキテクチャでは、トランザクションは、異なるマイクロサービスによって処理される複数のローカルトランザクションから構成されます。ローカルトランザクションが失敗した場合、以前に完了した正常なトランザクションをロールバックする必要があります。これを避けるために Saga パターン を使うことができます。

マイクロサービスごとに別々のデータベースを使用する必要がありますか?

マイクロサービスアーキテクチャの主な利点は疎結合です。各マイクロサービスの永続データは非公開にしておき、マイクロサービスの API を通じてのみアクセスできるようにする必要があります。マイクロサービスが同じデータベースを共有している場合は、データスキーマの変更を慎重に評価する必要があります。

マイクロサービスが単一のデータベースを共有する場合、マイクロサービスの永続的なデータを非公開にするにはどうすればいいでしょうか?

マイクロサービスがリレーショナルデータベースを共有する場合は、マイクロサービスごとにプライベートテーブルを用意します。また、個々のマイクロサービス専用のスキーマを個別に作成することもできます。