1. はじめに
最近、マイクロサービスという言葉をよく見かけます。
マイクロサービスとは、従来だと単一でシステム化していた業務を区分ごとに小さなサービスに分割する考え方の枠組みです。
社内システムのアーキテクチャに組み込んで再設計してみても面白いと思ったので調べてみました。
2. モノリスとマイクロサービス
従来型の複数機能を単一アプリケーションにまとめた構成を『モノリス』と呼びます。
例えば、ファイルを共有するシステムがあるとします。
このシステムには下記のような機能があります。
- ファイル一覧管理
- メール通知
- ユーザー管理
- 期限切れファイルの削除
マイクロサービスでは、これらを役割ごとに独立したサービスへ分割します。
例えば、
- ファイル管理サービス
- 通知サービス
- ユーザー管理サービス
といった具合です。
3. ファイルを共有するシステムで考えてみる
処理を簡単に説明すると、
ファイル情報を登録
↓
ファイルを保存
↓
メールを送信
↓
受信者がダウンロード
という流れになります。
これを分割すると、
ファイル管理サービス → ファイル情報やファイルの保存を管理
通知サービス → メールを送信
ユーザー管理サービス → ユーザー情報を管理
といった構成が考えられます。
単にファイルの保存先を分けたり、メール送信を非同期化したりするだけではマイクロサービスになるわけではないようで、役割ごとに独立したサービスとして分けることが重要です。
4. メリットと課題
マイクロサービス化すると、サービスごとに分割して修正やデプロイを行いやすくなります。
また、よく言われるのは一部のサービスで障害が発生しても、他の機能への影響を抑えやすくなります。
一方でデメリットとしては、下記のような考慮事項が開発段階で増えて工数圧迫になります。
- APIの設計
- 通信失敗時の処理
- データの整合性(DB論理破壊パターンは握り潰すとか)
- ログや監視
5. 感想
今回調べてみて、マイクロサービス化は単に処理を分けるのではなく、役割ごとにサービスを独立させる考え方だと分かりました。
既存システムを分割する際は、どの程度の粒度で別サービスとして切り出すかがお洒落ポイントかなと思いました。
因みにですがモノリスの語感がテトリスに似ているので、語源を調べてみると、モノリスはギリシャ語系でmono(1つ)+ lithos(石)ということだそうです。
- 閲覧数 43
コメントを追加