マイクロサービスアーキテクチャで各サービスが Cloud SQL インスタンスを別々に持っています。データベース間でトランザクションをまたいだ整合性が必要になりました。コード変更を最小限にした解決策として最も適切なものはどれですか?
- A. Saga パターンを実装してサービス間の整合性を管理する
- B. 各サービスの Cloud SQL を同一 VPC に配置してデータベースリンクを設定する
- C. すべてのサービスで 1 つの共有 Cloud SQL インスタンスを使用する
- D. Cloud Spanner に移行してグローバルトランザクションを使用する
解答と解説を見る
正解: D
Cloud Spanner は複数のデータベースをまたいだ分散トランザクションをネイティブにサポートしており、強整合性(外部整合性)を保証します。Cloud SQL から Cloud Spanner への移行はスキーマの変更は必要ですが、アプリのビジネスロジック(トランザクション処理コード)の大幅な変更なしに整合性を確保できます。共有 Cloud SQL インスタンスへの集約はスケーラビリティを損ない、マイクロサービスの独立性を破壊します。Saga パターンは補償トランザクションでの最終的整合性を実現しますが、実装が複雑でコードの大幅変更が必要です。Cloud SQL にはデータベースリンク機能がなく、クロスインスタンストランザクションはサポートしていません。
📚 関連サービスの解説: Cloud Spanner