はじめに
みどりがめ
今回は従来のモノリスなアプリケーションと昨今話題のマイクロサービスを比較して、
それぞれのメリット、デメリットや課題を考えてみるよ!
モノリスとは?
モノリスとは、モノリシック(巨大な、一枚岩な)なアプリケーションを指します。
必要なコンポーネント、パッケージが全て一つのアプリケーションとしてまとまっているアーキテクチャです。
モノリスのメリットには以下のようなものがあります。
いずれも一つのアプリケーションでまとまっている故のメリットです。
- 実装しやすい
- 大きな変更も加えやすい
- テストもしやすい
- デプロイがしやすい
- 障害調査がしやすい
逆にモノリスのデメリットはサービスが大きくなり肥大化した時に顕著に現れてきます。
- 改修の影響範囲が分かりにくい
- コンパイル、ビルド、デプロイの時間が長い
- 信頼性が低い(一つの機能が落ちると全体に影響がある)
- メモリやCPUなどリソース効率が悪い
- 技術スタックが更新が大変
マイクロサービスとは?
マイクロサービスとは、アプリケーションを独立したサービス群へ分割し、各サービスを連携させることで一つのアプリケーションとして成り立たせるアーキテクチャを指します。
マイクロサービスのメリットには以下のようなものがあります。
- 修正範囲が限定される
- 素早くリリースされる
- 障害の影響範囲を分けやすい
- サービス毎に必要なリソース(メモリやCPU)を調整できる
- 新しい技術を取り入れやすい
逆にマイクロサービスのデメリットについて見ていきます。
- サービスの責務(境界)を見極めることが難しい
- アプリケーションの設計が複雑になる
- 他のサービスとの連携やアプリケーション全体のテスト時には、調整が必要
モノリスとマイクロサービスの比較
開発サイクル
- モノリス
いわゆるウォーターフォール。プロジェクト終了毎に大きなリリースを行う。
一通り、サービスが出来上がると運用保守に入り、必要に応じて不定期にリリースする。
- マイクロサービス
開発と保守・運用が並列で動いている。必然的にリリース回数が多くなり、各リリースの規模は小さくなる。
開発体制
- モノリス
チームはフロントエンド、サーバーサイド、インフラなど専門技術毎に分けられることが多い。
1チームは5~20名。規模によってはそれ以上の体制となる。
- マイクロサービス
チームはサービス単位で分けられる。一つのチームの中でフロントエンド、サーバーサイド、インフラ全てを担当する。1チームの規模は10名以下であることが多い。
終わりに
本記事はここまでとなります。
ご覧いただきありがとうございました。ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです!🐢
コメント