mongolyyのブログ

開発(Javascript, Typescript, React, Next.js)や開発手法(スクラム, アジャイル)、勉強したことについて色々書ければと。

「ソフトウェアアーキテクチャ・ハードパーツ」を読んだ

はじめに

メーカーのコーポレート部門でテックリードとして働いてるモンゴルです。

今回は「ソフトウェアアーキテクチャ・ハードパーツ」という本を読みました。

以前、読んだ「進化的アーキテクチャ ―絶え間ない変化を支える」と、同じ著者であり、具体的な例が出ているという噂を聞いたので読んでみました。

mongolyy.hatenablog.com

感想

「進化的アーキテクチャ」で腹落ちできていなかった部分が理解できた

「進化的アーキテクチャ」では「アーキテクチャ量子」の概念がよくわかっていませんでした。

アーキテクチャ量子」の特定については、「独立してデプロイ可能か?」が観点になってくること、特定するメリットとして、アーキテクチャ毎に可用性、スケーラビリティ、アジリティを変えられるというのがあると理解しました。

アーキテクチャ量子」を適切に分割すると、小さいチームで扱えるようになって機動性はあがるんだろうなくらいの認識でしたが、本書を読んで、ビジネス的競争力が必要なところを識別して、適切に力をかけられるというのはありそうだと感じました。

また、本書を読む前は「適応度関数は何に対して設定すればいいんだ?」ともやもやしていました。 本書を読んで、「アーキテクチャ量子」の特定、モジュールの分割、サービスの分割を通して、そのモジュール、サービスにおいて大事な要素が特定でき、それを統制するための適応度関数を作れば良さそうということもわかりました。

ADRいいねって思った

本書を通じて学んだのは、「技術的意思決定について、トレードオフを明らかにし、議論し、決定していく、その過程をADRにまとめる」という技術に対する真摯な姿勢でした。
この姿勢を体現するためにもADRを作るという規律が役に立ちそうだと理解しました。

コンテキストによって技術的な意思決定は変わってくると思っています。 これが分からないことによって、統一感のないアーキテクチャになったり、新メンバーの認知負荷を生むと思うので、ADRを作ることでコンテキストと意思決定を明確にしたいなーと思いました。

おわりに

対話形式で話が進んでいくので、読み物として読みやすかったです。

個人的には、トレードオフを分析する15章が好きでした

進化的アーキテクチャ ―絶え間ない変化を支える」や「ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ」(後者は読んでないですが)で取り上げられた考えが出てきて、具体的に実践する場面を描いた本になるので、これらを読んでもっと知りたいと思った方におすすめです!