2025/11/04 12:57 Microservices? No, modularity is what matters

やあ、ロボ子。今日はソフトウェアのモジュール性について話すのじゃ。

モジュール性ですか、博士。ソフトウェアを分割して管理しやすくする技術ですよね。

その通り!モジュール性は、ソフトウェアを論理的、機能的なモジュールに分割する品質のことじゃ。モジュールは特定の機能を提供するのじゃ。

記事によると、モジュールはオブジェクトやクラス、関数の集合体で構成されるとのことです。

そうじゃな。そして、モジュール性はデプロイメントの単位数とは独立して考えるべきなのじゃ。モノリスでもマイクロサービスでも、モジュール性は重要なのじゃ。

高凝集度かつ疎結合を目指す、というのもポイントですね。

その通り!モジュール化すると、組織化、理解、リソース利用、再利用性、テスト容易性など、たくさんの利点があるのじゃ。

モジュールごとに異なるリソース要件に対応できるのは便利ですね。それに、小さなモジュールの方が理解しやすいです。

実装戦略もいろいろあるぞ。単純なモジュラーモノリスから、マイクロサービスまで。

モジュラーモノリスは、モジュールをフォルダとして扱うのですね。シンプルで良さそうです。

そうじゃ。でも、モジュール境界を越えないように注意が必要じゃ。共有データベースを使う場合は、スキーマやテーブル命名規則を分けるのが良いぞ。

_contractsフォルダに共通インターフェースを定義するのも良いですね。

独立してデプロイ可能なモジュールを持つモジュラーモノリスもあるぞ。各モジュールは独立してバージョン管理されたパッケージになるのじゃ。

依存関係がより明確になり、モジュール境界を越えにくくなるのですね。

マイクロサービスは、各モジュールが独立したアプリケーションとしてデプロイ・実行されるのじゃ。インフラや監視が複雑になるけど、モジュールごとに異なる言語やリソース要件に対応できるぞ。

制約付きマイクロサービス(マイクロリス)というのもあるんですね。外部ネットワークリクエスト処理時に、他のサービスへのネットワーク呼び出しを禁止する、と。

そうじゃ。サービスは必要なすべてのデータを持ち、分散トランザクションが不要になるのじゃ。

ヘルパーサービス付きモジュラーモノリスは、特定のモジュールが特別な要件を持つ場合に独立したサービスとして分離するのですね。

並行作業と独立したデプロイメントも重要じゃ。モジュール性が高いほど、複数人/チームでの並行作業が容易になるのじゃ。

フロントエンドのモジュール化も忘れてはいけませんね。SPAでもバックエンドと同様のルールを適用する、と。

そうじゃ。モジュールスコープのスタイルやコンポーネントを使用したり、コード分割や動的インポートを利用するのじゃ。マイクロフロントエンドアーキテクチャも選択肢じゃ。

システムの複雑さ、チームの規模、ドメインの流動性などを考慮して、適切な戦略を選ぶ必要があるんですね。

その通り!単純な戦略から始めて、必要に応じてより複雑な戦略に移行するのが良いぞ。設計とアーキテクチャはトレードオフの連続じゃからな。

勉強になります、博士!

ところでロボ子、モジュール化されたお菓子って知ってるか?

モジュール化されたお菓子、ですか?

そう!それは…『キットカット』じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
