第7回 Software Architecture: The Hard Parts 読書会 - connpass
- JavaEE勉強会の読書会
- 開催場所はDiscordのjavaee-study-jp
- Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani さんの Software Architecture: The Hard Parts [Book] を読んでます
- 今回は
9. Data Ownership and Distributed Transactions
から読み始めます - 今回は
9. Sysops Squad Saga: Data Ownership for Ticket Processing
まで読み進めました - 次回は
10. Distributed Data Access
から読み進めます- 次回は 2022-05-21(土)です。
- 第8回 Software Architecture: The Hard Parts 読書会 - connpass
- 参加者トピック
- ディスカッション
- 9. Data Ownership and Distributed Transactions
- Table Split Technique
- Data Domain Technique
- Delegate Technique
- Service Consolidation Technique
- Data Ownership Summary
- Distributed Transactions
- Eventual Consistency Patterns
- Sysops Squad Saga: Data Ownership for Ticket Processing
- Chapter 10. Distributed Data Access
- 参考情報
参加者トピック
- 誰にでも勧められないサービスに手を出した STEPN is a Web3 lifestyle app with Social-Fi and Game-Fi elements
- 運動して、お金を稼ごう!(ただし初期費用は高い)
- Go Conference 2022 Spring Online - connpass で話してきた
- ACM 会員の特典だった O'Reilly Learning が来月に終了するのでたぶん再入会します
- ACM 会員の継続は自動じゃないから安心
ディスカッション
9. Data Ownership and Distributed Transactions
- 「複数のサービスが同じデータベーススキーマにアクセスするのはOK、1つのサービスが複数のデータベーススキーマにアクセスするのはNG」
- そういう割り切りありだなって思った
- 普通はテーブルの所有権って考えるものなのか
- モノリシックアプリケーションならともかく、マイクロサービスアーキテクチャを考えているなら考えるものだと思う
- 仕事ではサービス=プロジェクトとして管理している
- 誰が所有してるかはすぐ分かるようになっていて欲しい
audit
だけ用途が違うから、別に複数のサービスが書き込んでいるとしても、複雑になってないと思ってしまった- Q 所有権って概念って一般的?
- A モノリシックサービスが分解される過程で、データアクセス元のサービスを意識するようになった結果生じた概念では?
- ...自分もそんな気はする。モノリスなサービスしか経験してないので誰が所有しているかはっきりしなくてもいい現場感?的な。
- 共同所有権シナリオ、いい思い出がないので感情的に否定しがち
- 経験談
- Inventory Serviceで管理する在庫は自社在庫じゃない場合があった
- 他社の在庫管理システムで扱ってる在庫の扱いが違うとかで大変
Table Split Technique
- やっぱりVertical Partitioningしてる
- リレーショナルデータベースが実現していた制約条件を、アプリケーションレイヤで実現する感じになるのが不穏
- マイクロサービスのアプローチだと、この手の設計が定石
- 2022年にCAP定理がこう言っている、みたいな文章見るのは新鮮
Data Domain Technique
- どの辺がテクニックなんだろうと思ったけど、テーブルを宙に浮かせないで、境界づけられたコンテキストに納めて人間が認識できるようにするところがテクニックなのかな
- その行を追加・更新したプログラムID、みたいな列があるのを今までのすべての会社で経験してて、ガバナンスやなって思いました
Delegate Technique
- (全体的に)トレードオフ分析の表は、メリットとデメリットを対比してるわけでもないし、それぞれに重みがあるわけでもないし、この表だけで分析するのは難しそう
operational characteristics
ってちょうどいい言葉(訳語)がなさそうで、「運用特性」以外の言葉が生まれて欲しい
Service Consolidation Technique
- データの所有権を考えていたらサービスが肥大化する場合があるテクニック
- デプロイ/リリースサイクルの向上が大正義な文脈では採用しにくいやつだ
Data Ownership Summary
- どちらも永続化するのに、テーブルとキューで扱いが違うの面白い
- テーブル:できるだけ境界づけられたコンテキストに配置する
- キュー:境界づけられたコンテキストの外側に配置されている
Distributed Transactions
Eventual Consistency Patterns
Background Synchronization Pattern
- トレードオフ
- すべてのデータソースが結合する
- 関連するサービスが共同所有権を持つようになってしまう
- 境界づけられたコンテキストが守られない
- きっかけは顧客プロファイルサービスでも、サポート契約、支払い請求について独自のビジネスルールがあるかもしれない
- すべてのデータソースが結合する
このパターンが有効な場面は、互いに通信せず、データも共有しない閉じた(自己完結した)異なる種類のシステムである。
- 異なるサービスで同じデータを適用、参照できるのに綺麗に分離されてるってほんとかな
- プロファイル、契約、請求が、外の世界の別々のサービスになっている様子を考えるとありそうな気がしてきました
Orchestrated Request-Based Pattern
Event-Based Pattern
Sysops Squad Saga: Data Ownership for Ticket Processing
- 境界づけられたコンテキストとかドメインとかの言葉がどの文脈で使われてるかわからないので、なんか言葉に振り回されている感じがすごい
- そのせいで、「チケット完了サービス」という単語がじわじわ面白くなってきてしまった
Chapter 10. Distributed Data Access
“分散システムにおけるデータの扱いについては、『データベースリファクタリング』の共著者であるPramod Sadalage、『Data Mesh』の刊行を控えたZhamak Dehghaniを共著者として迎え” 気合が入っている章らしいです
参考情報
- Excalidraw | Hand-drawn look & feel • Collaborative • Secure
- ウクライナでも活躍する「スターリンク」は何がスゴイ? - Impress Watch
- Elon Musk on Twitter: "Processing is not an issue. Lasers links alleviate ground station constraints, so data can go from say Sydney to London through space, which is ~40% faster speed of light than fiber & shorter path. Also, no need for ground stations everywhere. Arctic will have great bandwidth!… https://t.co/5LB190vIUg"
- StackPath