genesis-aka.net
CNDT2021、分散トランザクションを実装するScalar DBを開発元のエンジニアが解説
CNDT2021から、マイクロサービスにおける分散データベース、特にクリティカルなデータを扱う場合に必要なACID(不可分性、一貫性、独立性、永続性、Atomicity、Consistency、Isolation、Durability)を実現するために開発されたScalar DBというJavaのライブラリーに関するセッションを紹介する。「マイクロサービスにおける分散トランザクションライブラリ」というタイトルだが、株式会社Scalarというベンチャーが開発するScalar DBを解説するセッションだ。 動画:マイクロサービスにおける分散トランザクションライブラリ プレゼンターはアーキテクトの鈴木俊裕氏 セッションの前半はマイクロサービスのアーキテクチャー、その中のデータ整合性に関する考察、トランザクションを管理するメカニズムに関する解説、分散トランザクションマネージャー、Scalar DBの解説などとなっている。 セッションの内容 まずマイクロサービスについて、複数のプロセスが連携して稼働するシステムであることを踏まえた上で、データベースの持ち方について解説を行った。ここでは各プロセスにデータベースを保持するDatabase per Serviceについて解説を行っている。 データベースをプロセスごとに持つDatabase per Serviceを解説 ここではマイクロサービスの利点を活かすためにデータベースを共有せずに個別に持つことを推奨しているが、この方式ではデータの整合性を保つことが課題として浮き上がってくることを解説。 例を挙げて複数のデータベースの整合性を保つことの重要性を解説 この例ではユーザーがECサイトなどで購買を行う際に、オーダーを受け付けるサービスが顧客のクレジットカードが利用可能なのかをチェックする別のプロセス、カスタマーサービスにデータを送信する途中で処理が中断してしまった場合を想定して、それぞれのプロセスが持つデータベース間で整合性が取れなくなってしまうことを解説した。 複数のサービスで整合性を保つ方法を解説 ここから整合性を保つための方法を解説。Sagaパターンと2フェーズコミットによる分散トランザクションについて説明を行った。 Sagaパターンについて解説 Sagaパターンについてはマイクロソフトが公開している技術ドキュメントを参照して欲しい。 参考:saga 分散トランザクション パターン マイクロソフトのドキュメントではACIDを「原子性、一貫性、分離性、持続性」と翻訳していることに留意されたい。Continue reading
GeneAka