はじめに
今回は、6/19(金)に開催されたイベントで、以下のソフトウェアアーキテクチャの基礎_第2版のABD輪読会に参加してきた。
だいぶ前のものを公開してなかったのでポチっておきます。
ABDということで、かなり短時間で、第1部の8章までをすべて読むということに挑戦しました。
わたしの担当は、8章の「コンポーネントベース思考」でした。
第1版購入は2022年の春ごろ
たしか、当時所属していたJavaオブジェクト指向分析設計のコミュニティで扱っていた書籍で、最初呼んだ時には、「さっぱりわからない」といった感じでした。
👆に一応、第1版の島田さんが登壇されているイベント動画を貼っておきます。
第2版は何が違うのか?
第1版と、基本的な構成は一緒に感じますが、クラウド特有の非機能要件の説明や、チームトポロジーの説明があるのが印象的です。
アーキテクトである以上、組織のコミュニケーションパス、組織構造は切っても切り離せない観点です。
数年ぶりに読んでみて
まずは、数年ぶりに、この本を再版されたタイミングで読んでみて思ったことを書きます。
最初に1版を読んだ時には、たしかに設計原則やモデリングの勉強をしていたし、コミュニティ内で、現役の人にモデリングを教え合ったりなどもしてはいたものの、かなり苦労して読んでいました。
しかしながら実際に自分が、クリーンアーキテクチャやらを実践でも使ってみたり、DX案件にてアーキテクトやPMOの振る舞いをしてみた後に、再度読んでみるとかなりサクサクと読めている印象です。
まだ、第1部という前半だからってのもあると思う。
アーキテクト未経験だと初回は厳しい
未経験者にこの本をいきなり読ませたら、「???わからん💦」ってなること間違いないとは思いますし、「基礎」というタイトルから、さぞかし簡単なのかと思ってしまうかと思いますが、全然そんなことはないです。
ただし、基礎というものは決して「簡単」て意味ではなく、習得するまでには何度も反復と、時間がかかるものです。
寄り道が必要
この手の本でよくあることですが、他の本で深堀されていることの理解が実はサクサク読むために必要です。
その具体なリストを記載しておきます。
設計原則
クリーンアーキテクチャ本などに載っている、設計原則(SOLIDおよびコンポーネントの6つの原則)を理解した後で、再度戻ってくるといった工夫も必要。
SOLIDは理解している人をよく見かけますが、コンポーネント原則を6つすべて体系的に理解している人は少ない気がします。
是非とも、以下の本で常識にしておいた方がいいです。
その方が、3章の「モジュール性」は一瞬で読み終えられると感じます。
チームトポロジー
コンウェイの法則の話は、アーキテクチャにおいて、必ず考慮すべき点です。
是非とも原著である以下を、マイクロサービス系の本やDDD本と同時並行で読んでみてください。(欲を言えば、ダイナミックリチーミングも読んだ方がbetter)
適応度関数
アーキテクチャの非機能水準をチェックするための関数で、CI/CDに組み込むものとして、「適応度関数」というものがあります。
これは、たとえばある1つの品質副特性レベルの非機能水準を満たせているか?をチェックするだけでなく、
トレードオフ関係にある、2つ以上の品質副特性を共に満たすか?
というチェックにも用いられます。
この適応度関数について、深堀されている書籍は、私の知る限り、以下のアーキテクチャメトリクス。
ここに、どのような順番で適応度関数を組み込んだら、もっとも無駄なコストがかからずに済むか?といったメカニズムが説明されています。
アーキテクトになり、定量的・定性的データを常に観測して、データ駆動でアーキテクチャを改善する必要に迫られる人は、必読書になります。
データの所有権の割り当て
分散アーキテクチャを考える際に、分散トランザクションの設計の話はちょいちょい語られる印象ですが、
「その業務トランザクションデータを、どのサービスに割り当てるか?」
という、データ所有権の割り当ての設計は、ほぼ耳にしません。
この割り当てを適当にやってしまうと、マイクロサービス化は成功しません。
私の知る限りでは、以下の「ソフトウェアアーキテクチャ・ハードパーツ」本くらいしか、その割り当てのパターン集は見つかっていません。
その他
アーキテクチャ特性とやらを「どのタイミングで」「どのように」考えられているのか?
を3名ほどで議論していました。
