天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

『ソフトウェアアーキテクチャ・ハードパーツ』読書会に参加してきた(1-4章)

yasashii-agile.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

タイトルの通りソフトウェアアーキテクチャ・ハードパーツの読書会です。

1週間で100Pペースで進めるという、一般的な読書会と比べるとややハードな部分が特徴です。

会の様子

会で話したことをテーマ別にまとめていきます。

分析データとメトリクス

本書で言われている分析データがアジャイルメトリクスに出てきたようなデータに近いイメージを持てそうだという話をしていきました。

モジュラーモノリスモノリスの違い

DBが密結合*1なのか疎結合*2なのかというモジュラーモノリスモノリスの違いについて話をしていきました。

色々と調べたものの微妙に解釈が違っていそうだったのですが、密結合か疎結合かはモジュラーモノリスかどうかにあまり影響しなさそうだという解釈にその場では落ち着きました。

新規プロダクト開発のアーキテクチャ

本書は基本はトレードオフをコンセプトとしているもののマイクロサービスアーキテクチャ推しの部分がややあるように4章までは感じたのですが、新規プロダクト開発ではマイクロサービスアーキテクチャをいきなり採用するということはないよね、という話をしていきました。

基本的にはPMF後に採用を検討するようなアーキテクチャだと思っているという話や、GitHubや会の参加者の会社がマイクロサービスアーキテクチャで失敗した事例の話をディスカッションしていきました。

関連して、マイクロサービスアーキテクチャの採用は組織レベルでの体制変更が必要になる場合も往々にしてあるので、なかなか採用のハードルは高いよね、という話もしていきました。

ADR

ADRって実運用しているの?という話をしていきました。

本書で言われているようなトレードオフの部分*3まではあまり書けていなかったけれど基本的には書くようにしていたという話から、実際にどのように運用をしていたのか?(リファクタリングのときは書かない、何かしらアーキテクチャの見直しをしたい時にADRをもとに過去の意思決定をふりかえる...)の話が出ていました。

また、ADR上でコード改修にかかる費用を詳細に書いているという話から派生して、SonarQubeを活用したDebtの可視化でROIを判断する話をしていきました。

プロセス間通信と耐障害性

プロセス間通信で同期通信を多く行うと耐障害性が下がるという本の記載の解釈について話をしていきました。

その場では、プロセスA, プロセスBがあってプロセスAに障害が起きた時に、プロセスAと通信しているプロセスBがプロセスAに引っ張られる形で障害が発生してしまうリスクがより高い点が、耐障害性が下がるといえる理由だという話になりました。

会全体を通した感想

議論の深さよりも本をなるべく速いペースで読み切ることを第一目標にしているということもあって、各トピックや疑問点を軽くさらうような形になりましたが、議論が活発で積極的に参加をするメンバーでの読書会だったので、色々突っ込んだ議論ができて楽しかったです。

次回からは更にペースを上げていく予定なので、これまたどうなるか楽しみです。

*1:例えば、1つのDBを全サービスが見る

*2:例えば、1つのDBが1つのサービスに割り当てられている

*3:技術を採用したときの懸念点