サトル:「モダンなアプリ開発って? これまでとはどう違うの?」
クラフ:「モダンなアプリ開発に対して、従来の開発アーキテクチャは『モノリシック』と言われているんだ」
サトル、ディア:「モノリシックって何?」
モノリシックとは、単一のシステム内に各サービスが構築されている状態を表しているんだ。1つの箱の中で密接につながっている状態とも言えるね。簡単に説明すると、仮想マシン(VM)上にミドルウェアやデータベースなどの各アプリをひとまとめに作るイメージだね。
たとえば、アフリカ大陸の中にゾウやキリンなどの様々な動物が共存しているイメージを想像してみて。ある動物が病気にかかると、他の動物にもうつってしまうことになるよね。また、草食動物が減ってしまうと、それに伴い肉食動物も減少してしまうことも考えられる。
モノリシックなアーキテクチャでは、単一のモジュールに複数のアプリケーションが乗る状態なんだ。だから、どこかのアプリケーションにトラブルが起きると、他のアプリケーションにも影響してしまうことがあるんだ。
1つのシステムに各サービスが構築されている
サトル:「マイクロサービスについて理解できたよ。だけど、それがコンテナとどう結びつくんだろう?」
クラフ:「機能ごとにモジュール化して個別開発できるマイクロサービスは、コンテナと非常に相性がいいんだ! 具体的には、マイクロサービスアーキテクチャによるアプリ開発をコンテナ環境で実施すると、開発のスピードをより上げることができるようになるよ」
ディア:「マイクロサービスの基盤技術として、コンテナが活用されているってこと?」
クラフ:「そうだね。企業が市場に対して素早くサービスを提供できたり、お客様もより早くサービスを利用することにもつながるんだ。その流れが最終的に企業の収益を生むという構図を作ることができるよ」
サトル:「なるほど。コンテナとマイクロサービスを組み合わせることで、開発効率の相乗効果を得ることができるということか。それこそが、モダンなアプリ開発ということなんだね!」
開発速度・デリバリー速度の低下
クラフ:「おっしゃる通り!そうしたモノリシックの課題を解決できるのが、マイクロサービスなんだ」