第5回 Software Architecture: The Hard Parts 読書会@リモート
第5回 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] を読んでます
- 今回は
7. Service Granularity
まで読み進めました - 次回は
Part II. Putting Things Back Together
から読み進めます- 次回は 2022-04-16(土)です。
- 第6回 Software Architecture: The Hard Parts 読書会 - connpass
- 参加者トピック
- ディスカッション
- Chapter 6: Selecting a Database Type
- Chapter 6: Sysops Squad Saga: Polyglot Databases
- Chapter 7: Service Granularity
- Chapter 7: Granularity Disintegrators
- Chapter 7: Granularity Integrators
- Chapter 7: Finding the Right Balance
- Chapter 7: Sysops Squad Saga: Ticket Assignment Granularity
- Chapter 7: Sysops Squad Saga: Customer Registration Granularity
- 参考情報
参加者トピック
- M1 Ultra 出ましたね 2つのM1 Maxをウルトラフュージョンした最上位チップ「M1 Ultra」が登場、最大128GBのユニファイドメモリ搭載でメモリ帯域は800GB/sに到達 - GIGAZINE
- 一番使われてる PyTorch の M1 最適化が進んでない
- 開発元が Apple と仲悪い
- ビジネス英語の知識が新しくなった
- parking lot
- ミーティングのアジェンダにない話題のこと
- bandwidth
- 自分のキャパシティ(時間とか)のこと
- parking lot
- 時季外れの休暇を取っていた
- 仕事で使っているWeb APIのフレームワーク(OSS)の代替先を探してる
- 最近出た Sony のイヤホン LinkBuds、ケースが微妙
- リングフィットアドベンチャーのRTAとても楽しい Twitch
- Full Stack Testing [Book]読んでた
ディスカッション
Chapter 6: Selecting a Database Type
- 適切な選択のための基準
- GCP全然出てこない
- NewSQLの評価厳しすぎない?
- 悪いところがないのがいいところ、という見方ができそう
- TiDBとか使い勝手が違うんですか?
- 一見するとRDBなんだけど、分散してるのでクエリの実行特性が変わってくる
- AWS Neptune は Neo4J の機能限定版みたいな感じ
- 簡単なクエリですら複雑で手に負えなくなってる
- 例えば Fully Managed Graph Database Service | Neo4j AuraDB に切り替えるとか
Chapter 6: Sysops Squad Saga: Polyglot Databases
- 何が大変なのかわからなかったので納得しにくい
- 例えば DynamoDB は後からインデックスを変更できない(再作成になる)制限があったりするので、自由度が下がる場合もある
Chapter 7: Service Granularity
- サービスの粒度を正しくするための鍵は、意見や直感を除いて、グラニュラリティディスインテグレータやインテグレータを使ってトレードオフを客観的に分析して、サービスを分解するかどうかの確かな正当性を形づくること
- モジュール性
- 標準化された単位や寸法、いろいろな使い方ができる
- この本では:システムを個別のパーツに分割することに関係する
- 粒度
- 大きな単位を形成する粒子の1つ
- この本では:個別のパーツの大きさ
- 粒度はサービスが何を行うかによって定義される
- 粒度を決めるメトリクス
- サービスの適切な粒度レベルを達成する秘訣は、この2つの対立する力の間で均衡を保つことです。
Chapter 7: Granularity Disintegrators
- スコープと機能
- 結合度
- 規模
- 変更可能性(Code Volatility)
- 変更頻度
- スケーラビリティとスループット
- (主に)スループット
- 耐障害性
- 平均故障時間(MTTF)
- 平均起動時間(MTTS)
- セキュリティ
- 権限最小の原則
拡張性(Extensibility)
- 機能やバリエーションの追加予定とか
単一責任の原則は、スコープがクラスからモジュールやサービスへ拡張されている
Chapter 7: Granularity Integrators
- データベーストランザクション
- 一貫性
- オーケストレーション(ワークフローとコレオグラフィ)
- フォールトトレランス
- 性能(レイテンシ)
- 信頼性
- ソースコードの共有
- Specific shared domain functionality
- 基盤機能とは異なる、ドメインの共通機能
- Frequent shared code changes
- Defects that cannot be versioned
- Specific shared domain functionality
データの依存関係
性能を上げるために統合しましょう、というのは現実的にあることなのか
- 統合とは別の方針を探ることのほうが多いと思う
Chapter 7: Finding the Right Balance
- who is プロジェクトスポンサー
- 役員とか?
The project sponsor is a person or group who owns the project and provides resources and support for the project, program or portfolio in order to enable its success.
- プロジェクトの予算を管理してる人のはず
Chapter 7: Sysops Squad Saga: Ticket Assignment Granularity
Chapter 7: Sysops Squad Saga: Customer Registration Granularity
参考情報
- Shokz (旧AfterShokz) OpenRun Pro ハイエンドモデル 骨伝導イヤホン – ShokzJP
- NoSQL Distilled | Thoughtworks
- NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence [Book]
- Seven Databases in Seven Weeks
- Card Mode - CNCF Cloud Native Interactive Landscape
- 日本独自の「コンビニ決済」。決済大手Stripeが積極対応した理由 - Impress Watch
- https://www.projectmanager.com/blog/what-is-a-project-sponsor