マイクロサービス | 熱脳しゃちょのブログ

熱脳しゃちょのブログ

おせっかい焼SE兼プログラマ兼……の辛い日々と、思う事なぞ

と「割れたモノリシック」は、デプロイ対象が複数ある点だけは共通だが、中身は全く異なる。

AppBaseみたいな、domainレベルでなく「implementationを参照する」レベルの、全アプリケーション共通の共有ライブラリがあるのが「割れたモノリシック」だ。

domainレベル、implementationレベルの些細な変更でAppBaseが変更され、それを参照して作られるほぼ全てのアプリケーションに影響がおよぶ、という外形だけで「おかしい」と感じない技術者は「おかしい」。

マイクロサービスは、極力各アプリケーション間の依存を排除して、一つ一つのサービスを独立に変更し、デプロイすることで運用の負荷を下げることを目的としている。

割れたモノリシックでは、毎回ほぼ全サービスをデプロイしなくてはならない。

「今回、影響しないから」とデプロイをサボることもできるが、その判断を「理解している人間に」委ねるとか、DevOpsって何?

 

「割れたモノリシック」のお守りはもう嫌だ。

#そして、新しいサービスもバッキバキの割れたモノリシックになってしまった。

 

オブジェクト指向でまとめる方向だけで突き詰めて、システムが複雑になりすぎた時に「どうすればいいのか?」ででてきた対応が、

1.DependencyInjection

2.MicroService

つまり、複雑な部分を押入れに突っ込んで目に入らないようにする(本当の使い方はそうじゃないけど)か、管理可能な単位に分割するか、だ。

 

MicroServiceで依存関係を絞り込んだってのに、AppBase参照してDI使う変更をかけるとかいう本末転倒に、ため息しか出ない。