翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
よくある質問
このセクションでは、マイクロサービスにおけるデータ永続化の実現について、一般的に提起される質問に対する回答を提供します。
モダナイゼーションの一環として、モノリシックデータベースをいつモダナイズできますか?
モノリシックアプリケーションをマイクロサービスに分解し始めたら、モノリシックデータベースのモダナイゼーションに集中すべきです。データベースをアプリケーションに合わせた複数の小さなデータベースに分割する戦略を必ず作成します。
レガシーなモノリシック・データベースを複数のマイクロサービス用に維持できますか?
複数のマイクロサービスでモノリシックデータベースを共有すると密結合が生じます。つまり、マイクロサービスに変更を個別にデプロイすることはできず、スキーマの変更はすべてマイクロサービス間で調整する必要があります。リレーショナルデータストアをモノリシックデータベースとして使用することもできますが、一部のマイクロサービスには NoSQL データベースの方が適している場合があります。
マイクロサービスアーキテクチャ用のデータベースを設計する際、何を考慮すべきですか?
アプリケーションの機能に合ったドメインに基づいてアプリケーションを設計する必要があります。アプリケーションの機能を評価し、リレーショナルデータベーススキーマが必要かどうかを必ず判断します。要件に合う場合は、NoSQL データベースの使用も検討すべきです。
異なるマイクロサービス間でデータ整合性を維持するための一般的なパターンは何ですか?
最も一般的なパターンは、イベント駆動型アーキテクチャ
トランザクションの自動化を維持するにはどうすれば良いですか?
マイクロサービスアーキテクチャでは、トランザクションは、異なるマイクロサービスによって処理される複数のローカルトランザクションから構成されます。ローカルトランザクションが失敗した場合、以前に完了した正常なトランザクションをロールバックする必要があります。これを避けるために Saga パターン を使うことができます。
マイクロサービスごとに別々のデータベースを使用する必要がありますか?
マイクロサービスアーキテクチャの主な利点は疎結合です。各マイクロサービスの永続データは非公開にしておき、マイクロサービスの API を通じてのみアクセスできるようにする必要があります。マイクロサービスが同じデータベースを共有している場合は、データスキーマの変更を慎重に評価する必要があります。
マイクロサービスが単一のデータベースを共有する場合、マイクロサービスの永続的なデータを非公開にするにはどうすればいいでしょうか?
マイクロサービスがリレーショナルデータベースを共有する場合は、マイクロサービスごとにプライベートテーブルを用意します。また、個々のマイクロサービス専用のスキーマを個別に作成することもできます。