勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

「要件最適アーキテクチャ戦略」の後半も読んだ。まずは正しくモノリスを作るDDDの本だ

読むのがホネな(積みがちな)技術書やビジネス書を取り上げて2週間の読書期限を課して読んでアウトプットする仮想読書会「デッドライン読書会」の第54回。常時、けっこうな量の積読があるのだけれども、知り合いと読書期日を約束することによって消化が捗るという仕組み。過去5回分のログはこんな感じ。

さて、今回取り上げるのは前回に引続き「要件最適アーキテクチャ戦略」だ。ちょっと長いので前半と後半に分けて読んでいる。今回は後半の「Part3 イベントファーストアーキテクチャ」「Part4 目的を持ったアーキテクチャの2つの道」を取り扱う。

日本語タイトルは若干わかりにくい気がする。原題は「Strategic Monoliths And Microservices: Driving Innovation Using Purposeful Architecture」、ストレートに直訳すると「戦略的なモノリスとマイクロサービス: 目的別アーキテクチャによるイノベーションの推進」というタイトルの本となる。

まずは目的を持ったモノリスを作る(大きな泥だんごではなく)

このような形で紹介されているわけではないけど、本書を読むとシステムの進化の段階は以下の3レベルと定義されていることがわかる。

  1. 大きな泥だんご/レガシーシステム
  2. 無駄な部分や妥協点のないモノリスシステム
  3. マイクロサービス適用システム

ゼロから、もしくは大きな泥だんごから一足飛びにマイクロサービスに向かうことを筆者は推奨していない(不可能ではないが、「もっとも険しい道のり」と言っている)。また、全てのシステムがマイクロサービスの適用を目指すべきではないとも。

モノシリックアーキテクチャを構築することを、責任逃れの三流の選択のように感じる必要はない。つまり、筆者が勧めているように、十分にモジュール化された、ちゃんとしたモノリスを構築するのであれば、そうはならない。
要件最適アーキテクチャ戦略 第10章 モノリスを目的どおりに構築する

そして筆者の言う「十分にモジュール化されたモノリス」ならば、必要に応じたマイクロサービスへの移行も難しくない(第11章 モノリスからマイクロサービスへの悠然たる移行)のだ。

うーん、言うのは簡単だけれども、実践は難しそう。
一応数年以内に出版される予定の続編で、さらにこのあたりは詳しく語られるようだ。

後半を読んだ感想

  • 前半の感想にも書いたのだけれども難解。そして例題がわかりにくいのは引続き。
  • 難しいのだがそれでも「第10章 モノリスを目的どおりに構築する」は興味深かった。大きな泥だんごシステムを例にとって、どのような形で正しいモノリスへリアーキテクティングしていくか、という話だからである。どう分解していくべきかという話は非常に面白い。
  • またあくまで戦略としてはリライトではなく、リアーキテクティング推しである。

筆者には、建設業界で経験を積んでいる友人がいる。その友人が言うには、建物をきちんとした方法で解体するのにかかる時間は、その建物の建設にかかった時間の10 分の1 以下で済むそうだ。単に建物を壊すだけではなく、重要なパーツをすべて再利用することも目的に含まれている。ソフトウェアの構築は建築業界とはあまり似ていないが、友人の主張は、コードの有意義な再利用を意図した、大規模なシステムのコードベースの秩序あるリファクタリングと再構築の手がかりになるだろう。
要件最適アーキテクチャ戦略 第10章 モノリスを目的どおりに構築する

うーむ、私の周りにもゴロゴロとした大きな泥だんごがあるのだが、誰か一緒に本書を読みながら戦ってくれる人はいないか、と思う今日この頃であった。