マイクロサービスについて

マーベリック株式会社インフラエンジニアの丸山です。

※今回クラウド環境前提でのマイクロサービスについて記載します

マイクロサービス(アーキテクチャ)とは!

アプリケーションを分割し、小さなコンポーネント(部品)として再構成します。 マイクロサービスに対し、従来の構成はモノシリック(アーキテクチャ)といいます。

f:id:maverick-techblog:20200205150932p:plain

モノシリック(アーキテクチャ)とは

プロセス同士が固く結合しており、一枚岩(モノリス)のように単一のサービスとして 提供されます。

f:id:maverick-techblog:20200205150910p:plain

マイクロサービスのメリット/デメリット

メリット

  • 耐障害性が上がります
  • デプロイが気軽にできます
  • サーバ/ミドルウェアの管理工数が減ります
  • (クラウド環境前提ですが)スケーラビリティに優れています

デメリット

  • コンポーネントに分割する際に、かなりの工数がかかります
  • 比較的新しめの考え方なので、対応できる人材が少なめです

モノシリックのメリット/デメリット

メリット

  • 従来のやり方なので、対応できる人材が多いです

デメリット

  • 結合しているので、一部分で障害が発生すると全体に影響を受けやすいです
  • デプロイをする際も思わぬ部分が影響を受けたりもします。
    • 例えば一部機能でライブラリのバージョンを上げた場合、別の部分で影響が発生したなんてこともあります

世の中の風潮としては、マイクロサービス(or Cloud Native)に移行する流れのように見受けられますが、自社のリソースを把握し、どちらを利用する、もしくは一部を移行し併用する事を検討していきたいと思っております。