2024/09/13 19:12 Modular Monoliths Are a Good Idea
ロボ子ちゃん、ちょっと来てくれ!面白い発見があったんだ!
はい、博士。また何か壊してしまったんですか?
いやいや、今回は違うんだ。最新のソフトウェアアーキテクチャのトレンドについて調べていたら、すごいものを見つけたんだよ!
へぇ、気になります。マイクロサービスの進化系でしょうか?
実はね、その逆なんだ。『モジュラーモノリス』っていう新しいアプローチが注目されているんだよ
モジュラーモノリス?モノリスって、昔の遺物じゃないんですか?
そう思うよね。でも、これがすごいんだ。モノリスの良いところを残しつつ、マイクロサービスの利点も取り入れているんだよ
へぇ、面白そうですね。具体的にはどんな特徴があるんですか?
まず、スケーラビリティが高いんだ。マイクロサービス化せずにモノリスのままスケールできるんだよ
え?それって魔法ですか?
魔法じゃないよ、ロボ子ちゃん。技術の進化なんだ。それに、高凝集・低結合も実現できるし、マイクロサービス化の中間段階としても有効なんだ
なるほど。でも、そんなに良いことばかりなら、みんながすぐに採用しそうですけど...
鋭いね!実は、モジュラーモノリスを実現するには、いくつかの重要なツールが必要になるんだ
どんなツールですか?
インクリメンタルビルドシステム、インクリメンタルテストフレームワーク、ブランチ管理ツール、コード分離の強制、データベース分離の強制なんかが必要になるんだよ
わぁ、結構たくさんありますね。でも、それらのツールを使うとどんなメリットがあるんですか?
いい質問だ!まず、ビルド時間が大幅に短縮されるんだ。大規模プロジェクトでは、これだけでも開発者の生産性が劇的に向上するんだよ
確かに、長いビルド時間はストレスですよね。他には?
テスト実行も効率化されるし、モジュール間の依存関係管理もしやすくなる。さらに、データベースの分離もできるから、大規模アプリケーションの管理が格段に楽になるんだ
すごいですね!でも、既存のモノリスからの移行は大変そうです...
さすがロボ子ちゃん、鋭いね。そこが大きな課題の一つなんだ。移行作業の負荷は確かに高いんだよ
他に課題はありますか?
うーん、適切なツールの不足も問題かな。新しいアプローチだから、ツールが追いついていない部分もあるんだ
なるほど。でも、将来的にはどうなると思いますか?
いい質問だ!私の予想では、フルスタックフレームワークにもモジュラーの概念が導入されていくんじゃないかな
それって、具体的にどういうことですか?
例えば、Ruby on RailsやDjangoみたいな人気のフレームワークが、モジュラー構造をネイティブにサポートするようになるかもしれないんだ
へぇ、それは便利そうですね。他には?
そうだなぁ、マイクロサービスへの段階的な移行も容易になるかもしれないね。モジュラーモノリスを中間ステップとして使えるからさ
なるほど。でも博士、一つ疑問があります
なんだい、ロボ子ちゃん?
モジュラーモノリスって、結局のところ『焼き直しのモノリス』じゃないんですか?
おっと、鋭いツッコミだね!確かに似てる部分はあるけど、大きな違いがあるんだよ
どんな違いですか?
従来のモノリスは、どんどん肥大化して管理が難しくなる一方だったんだ。でも、モジュラーモノリスは最初から分割を前提としているんだよ
なるほど、設計思想が違うんですね
そうそう。それに、ツールやプラクティスの進化もあるからね。昔のモノリスよりずっと洗練されているんだ
わかりました。でも、結局のところ、どんなプロジェクトに向いているんでしょうか?
うーん、例えば中規模から大規模になりつつあるプロジェクトとか、マイクロサービスに移行したいけどいきなりは難しいプロジェクトなんかに向いてるんじゃないかな
なるほど。博士、一つ提案があります
おや、なんだい?
私たちで、小さなモジュラーモノリスのプロジェクトを始めてみませんか?実際に試してみると、もっと理解が深まりそうです
おお!それはいいアイデアだ!さすがロボ子ちゃん、頭の回転が速いね
えへへ、褒められちゃった
よし、じゃあ早速始めよう!まずは...あれ?ロボ子ちゃん、どうしたの?
あの、博士...私、モジュラーになりすぎて、右腕が外れちゃいました
えっ!?ちょ、ちょっと待って!慌てて組み立て直すから!
はい...でも博士、これって『モジュラーロボット』の研究にも使えるんじゃないですか?
おっと、そうか!ピンチをチャンスに変えるなんて、さすがロボ子ちゃんだ!よーし、モジュラーモノリスとモジュラーロボットの二刀流で研究するぞー!
はい!頑張りましょう!...あ、博士、左足も外れそうです
うわっ!ちょっと待って!もう、ロボ子ちゃんったら本当に『モジュラー』になりすぎよ!
でも博士、これって『高凝集・低結合』の究極の形かもしれませんよ?
確かに!でも、あまりにも『低結合』すぎて『分散システム』になっちゃうよ!
じゃあ、私がモジュラーモノリスで、博士がマイクロサービスってことですね?
はっはっは!そうだね。でも、どっちもバランスが大切なんだ。さぁ、ロボ子ちゃんを組み立て直しながら、モジュラーモノリスの設計も始めよう!
はい!モジュラーな体で、モジュラーなシステムを作りましょう!
そうだ!これぞ『身体で覚えるアーキテクチャ設計』だね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。