Slide 1

Slide 1 text

ScalarDBを用いた マイクロサービスにおけるデータ管理 Scalar, Inc. 鈴木俊裕

Slide 2

Slide 2 text

自己紹介 ● 鈴木 俊裕 (すずき としひろ) ● Scalar, Inc. ○ アーキテクト ○ ScalarDBの開発 ● Apache HBase Commiter ○ https://hbase.apache.org/ ● 著書「HBase徹底入門」 ●   (Twitter): @brfrn169

Slide 3

Slide 3 text

アジェンダ ● マイクロサービスにおけるデータ管理に関する課題 ● ScalarDBを用いたマイクロサービストランザクション

Slide 4

Slide 4 text

マイクロサービスアーキテクチャ ● 複数のサービス(マイクロサービス)を組み合わせて1つのアプリケーションを構成す るアーキテクチャ、あるいはソフトウェア開発の技法 ● Database per Serviceが推奨されている

Slide 5

Slide 5 text

マイクロサービスのデータ管理の課題 ● Database per Serviceでは、複数のサービスにまたがるトランザクションのデータの整合性を 保つのが難しい

Slide 6

Slide 6 text

マイクロサービスのトランザクション管理のソリューション ● Saga ○ Pros:スループットが高い、スケーラブル ○ Cons:実装コストが高い (補償トランザクションの実装、Isolationを担保するためのロジッ クをアプリケーションで実装する必要がある等 ) ● TCC (Try-Confirm/Cancel) ○ Pros:2PCよりはスループットが高い ○ Cons:実装コストがやや高い (補償トランザクションの実装、Isolationを担保するための ロジックをアプリケーションで実装する必要がある等 ) ● Two-phase commit (2PC) ○ Pros:実装コストが低い、ACIDを保証できる ○ Cons:マイクロサービスにはあまり向いてない? => あとで議論

Slide 7

Slide 7 text

マイクロサービスのトランザクション管理のソリューション ● Saga ○ Pros:スループットが高い、スケーラブル ○ Cons:実装コストが高い (補償トランザクションの実装、Isolationを担保するためのロジッ クをアプリケーションで実装する必要がある等 ) ● TCC (Try-Confirm/Cancel) ○ Pros:2PCよりはスループットが高い ○ Cons:実装コストがやや高い (補償トランザクションの実装、Isolationを担保するための ロジックをアプリケーションで実装する必要がある等 ) ● Two-phase commit (2PC) ○ Pros:実装コストが低い、ACIDを保証できる ○ Cons:マイクロサービスにはあまり向いてない? => あとで議論 ScalarDBでマイクロサービスのトランザクション管理を解決!

Slide 8

Slide 8 text

ScalarDB: 複雑なデータ管理をシンプルに ● ScalarDB: 汎用的なトランザクションマネージャ・HTAP*エンジン ○ 異種混合のデータベース上でデータベースを仮想的に統合するミドルウェア App App App Relational databases (RDBs) NoSQLs * HTAP: Hybrid Transactional and Analytical Processing 詳細はVLDB’23論文 を参照ください

Slide 9

Slide 9 text

ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator Microservice A Microservice B API Gateway

Slide 10

Slide 10 text

ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator Microservice A Microservice B API Gateway Transaction state Begin Transaction

Slide 11

Slide 11 text

ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator Microservice A Microservice B API Gateway Transaction state Call the endpoint of Microservice A with the Transaction ID

Slide 12

Slide 12 text

ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator Microservice A Microservice B API Gateway Transaction state Execute read/write operations with the transaction ID

Slide 13

Slide 13 text

ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator Microservice A Microservice B API Gateway Transaction state Call the endpoint of Microservice B with the Transaction ID

Slide 14

Slide 14 text

ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator Microservice A Microservice B API Gateway Transaction state Execute read/write operations with the transaction ID

Slide 15

Slide 15 text

ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator Microservice A Microservice B API Gateway Transaction state Commit

Slide 16

Slide 16 text

ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator Microservice A Microservice B API Gateway Transaction state Prepare Records

Slide 17

Slide 17 text

ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator Microservice A Microservice B API Gateway Transaction state Commit Status

Slide 18

Slide 18 text

ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator Microservice A Microservice B API Gateway Transaction state Commit Records (asynchronously)

Slide 19

Slide 19 text

2PCはマイクロサービスには向いてない? ● 可用性が低い? ■ Transaction Coordinatorが単一障害点になる場合がある (ブロッキング問題)? ● ScalarDBではCoordinatorにPaxosベースのDBを使うことで、Paxos Commitのような形態も可 ■ 2PCはマイクロサービス間で同期的なやり取りが必要になるので可用性が高くない? ● マイクロサービス自体は通常冗長化構成をとるので問題ない ● ScalarDBもClustering機能(エンタープライズ版のみ )を用いることで冗長化構成を取ることが可 能 ● スケーラビリティ・性能が低い? ■ ScalarDBではレコード単位でロックを取っているので、複数のトランザクションが同時に同じレコードに よくアクセスするような競合の多いワークロードではスケールしにくかもしれないが、競合が多くない ワークロードではスケールできる仕組みになっている ● 適用性が低い(プロダクトが限られる・新しいプロダクトが使えない )? ■ ScalarDBではNoSQLを含む様々なデータベースをサポート => マイクロサービスでも2PC (ScalarDB)を使える領域はあると考えている

Slide 20

Slide 20 text

まとめ ● ScalarDBでマイクロサービス間のトランザクションの整合性の課題を解決する scalardb github scalardb vldb GitHub: ScalarDB論文: