第1回 Software Architecture: The Hard Parts 読書会@リモート
第1回 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] を読んでます
- 前回は
+ch01-2: Architecture Fitness Functions
まで- 進化的アーキテクチャで推されている適応度関数の話だった
- 今回は
+ch01-3: Architecture versus Design: Keeping Definitions Simple
から - 次回は 12/11(土)です。
- 次回は
+Chapter 3. Architectural Modularity
から - 第2回 Software Architecture: The Hard Parts 読書会 - connpass
- 次回は
- 参加者トピック
- ディスカッション
- Architecture versus Design: Keeping Definitions Simple
- Part I. Pulling Things Apart
- ch02-0: Wednesday, November 3, 13:00
- ch02-1: Architecture (Quantum | Quanta)
- ch02-2: Independently Deployable
- High Functional Cohesion
- High Static Coupling
- Dynamic Quantum Coupling
- Sysops Squad Saga: Understanding Quanta
- 参考情報
参加者トピック
- 2014年モデルからついに M1 Max な MacBook Pro にジャンプアップした
- CKA の更新が思ったより大変そう
- 実践ソフトウェアエンジニアリング(第9版) | Ohmsha が出ます
- B版、548ページ、1.2kg
- 2021/12/01から購入可能です
- Kindle版もあるよ
- 他の参加者の方に紹介されてきました
- 対向システムが間違ったインターフェイスを実装してたりするので結合試験は大変
- 都知事杯オープンデータ・ハッカソンに参加するつもり
ディスカッション
Architecture versus Design: Keeping Definitions Simple
- 「レポート」は大事な要素だと思うんだけどほとんど説明されてないのは気になる
- ER図にもテーブル一覧にもない
- 「チケット」の状態が顧客から観測できない感じだけど大丈夫なのか
- みなさんは「ステータス」管理どうしてる?
- (いろんな情報を集めた結果として)導出する場合もあるし、カラムにする場合もある
Part I. Pulling Things Apart
ch02-0: Wednesday, November 3, 13:00
- アーキテクチャの候補が複数あるときに議論することはありますか?
- どっちもいい、みたいになってくると提案者の思い入れが重要な気がする
- 結合度ばかりにフォーカスしているけど凝集度も大事だよね
- 凝集→類似する機能の集まり具合、結合→変化の波及する度合い、かなぁ
- サービスが、境界付けられたコンテキストに基づいて分割されている、という前提があるとしたら、凝集度は適切になっているはずで、サービス同士の結合度が問題になるのかな(話題になるのかな)という理解
ch02-1: Architecture (Quantum | Quanta)
- 既存のシステムを分析するとして・・・
- OSやフレームワークやライブラリなどを解析した結果が静的結合
- 呼び出している、呼び出されている別のサービスとの関係が動的結合
今回話題にした"アーキテクチャ量子" は同じ著者による"fundamentals-of-software-architecture"では次のように定義されています。
高度な機能的凝集性と同期的なコナーセンスを持つ、独立してデプロイ可能なアーティファクト
同期的なコナーセンスについて再度補足すると、サービスごとにもしもスケーラビリティの要求度(例えばAサービスからBサービスを呼び出す際にリクエスト増加時にAサービスはレプリカの展開が即終わるけどBサービスはレプリカの展開に5分かかります、みたいなことが発生するとタイムアウトが生じるわけでAサービスとBサービスのスケーラビリティ要求は揃えないといけないよねってことらしいです。
ってつらつら話しましたが要するにこの本だと、同じアーキテクチャ要件を持つサービスをまとめてアーキテクチャ量子って言ってるそうです。
FYI: 自分もアーキテクチャ量子の語源を調べてたのですが、同じ著者Neal Fordの Evolutionary Architecture (https://www.thoughtworks.com/books/building-evolutionary-architectures) で定義され始めた用語みたいですね。
Architectural quantum, as defined by Evolutionary Architecture, is the smallest unit of architecture that can be independently deployed with high functional cohesion, and includes all the structural elements required for its function.
高い機能的なまとまりを持って独立してデプロイできるアーキテクチャの最小単位であり、その機能に必要なすべての構造要素を含んでいます。 https://martinfowler.com/articles/data-mesh-principles.html#LogicalArchitecturedataProductTheArchitecturalQuantum
https://www.infoq.com/jp/news/2021/02/data-mesh-architecture/
ch02-2: Independently Deployable
- 「独立してデプロイできる」とは「独立してリリースできる」という説明のほうが適切なのでは?
- 「チームとして担当するアプリをリリースする」のだから、「リリース」のほうを強調するほうがよい、という考え
High Functional Cohesion
- 凝集性とは
- サービスの相互作用ではない
- どのように独立しているか、どのように結合しているか
High Static Coupling
- モジュラーモノリスって何ですか
- 抜き差し可能な機能をまとめ上げたモノリス
- What Is a Modular Monolith? | JRebel & XRebel by Perforce
- パッケージ構造による雑な説明
Dynamic Quantum Coupling
Sysops Squad Saga: Understanding Quanta
- ブローカーが静的結合の対象になってるのはなんで?
- サービスが動き出すときに必要な依存関係だから
- 実行時に必要な依存関係ならそれは動的結合になる
参考情報
- 「○○語ってどうやってキーボード入力するんだろう?」と時々思うけど、それは世界中の人が日本語に対して思ってるよという話! - Togetter
- Amazon.co.jp: SF映画で学ぶインタフェースデザイン eBook : Nathan Shedroff, Christopher Noessel, 安藤幸央: 本
- db tech showcase 2021 / ONLINE | db tech showcase
- 凝集度と結合度
- マイクロサービスごとにドメイン モデルの境界を識別する | Microsoft Docs
- James Lewis/Martin Fowlerの"Microservices"日本語訳 - 自由課題