Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ScalarDBを用いたマイクロサービスにおけるデータ管理 (Database Enginee...

ScalarDBを用いたマイクロサービスにおけるデータ管理 (Database Engineering Meetup #2)

Database Engineering Meetup (DBEM) #2 「マイクロサービスにおけるデータ管理」における発表スライドです。

ScalarDBについて
- https://github.com/scalar-labs/scalardb
- https://scalardb.scalar-labs.com/docs/

Scalar, Inc.

April 04, 2024
Tweet

More Decks by Scalar, Inc.

Other Decks in Programming

Transcript

  1. 自己紹介 • 鈴木 俊裕 (すずき としひろ) • Scalar, Inc. ◦

    アーキテクト ◦ ScalarDBの開発 • Apache HBase Commiter ◦ https://hbase.apache.org/ • 著書「HBase徹底入門」 •   (Twitter): @brfrn169
  2. マイクロサービスのトランザクション管理のソリューション • Saga ◦ Pros:スループットが高い、スケーラブル ◦ Cons:実装コストが高い (補償トランザクションの実装、Isolationを担保するためのロジッ クをアプリケーションで実装する必要がある等 )

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

    • TCC (Try-Confirm/Cancel) ◦ Pros:2PCよりはスループットが高い ◦ Cons:実装コストがやや高い (補償トランザクションの実装、Isolationを担保するための ロジックをアプリケーションで実装する必要がある等 ) • Two-phase commit (2PC) ◦ Pros:実装コストが低い、ACIDを保証できる ◦ Cons:マイクロサービスにはあまり向いてない? => あとで議論 ScalarDBでマイクロサービスのトランザクション管理を解決!
  4. 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
  5. 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
  6. 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
  7. 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
  8. ScalarDBを用いたマイクロサービストランザクション DB for Microservice A DB for Microservice B Coordinator

    Microservice A Microservice B API Gateway Transaction state Commit Records (asynchronously)
  9. 2PCはマイクロサービスには向いてない? • 可用性が低い? ▪ Transaction Coordinatorが単一障害点になる場合がある (ブロッキング問題)? • ScalarDBではCoordinatorにPaxosベースのDBを使うことで、Paxos Commitのような形態も可

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