第1回 Software Architecture: The Hard Parts 読書会@リモート

第1回 Software Architecture: The Hard Parts 読書会@リモート - connpass


参加者トピック

ディスカッション

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

Dynamic Quantum Coupling

Sysops Squad Saga: Understanding Quanta

  • ブローカーが静的結合の対象になってるのはなんで?
    • サービスが動き出すときに必要な依存関係だから
    • 実行時に必要な依存関係ならそれは動的結合になる

参考情報