社内システムのマイクロサービス化について考えてみた

  •  
 
MAXIMUM に投稿

1. はじめに

最近、マイクロサービスという言葉をよく見かけます。

マイクロサービスとは、従来だと単一でシステム化していた業務を区分ごとに小さなサービスに分割する考え方の枠組みです。

社内システムのアーキテクチャに組み込んで再設計してみても面白いと思ったので調べてみました。

2. モノリスとマイクロサービス

従来型の複数機能を単一アプリケーションにまとめた構成を『モノリス』と呼びます。

例えば、ファイルを共有するシステムがあるとします。

このシステムには下記のような機能があります。

  • ファイル一覧管理
  • メール通知
  • ユーザー管理
  • 期限切れファイルの削除

マイクロサービスでは、これらを役割ごとに独立したサービスへ分割します。

例えば、

  • ファイル管理サービス
  • 通知サービス
  • ユーザー管理サービス

といった具合です。

各サービスはAPIなどを使って連携するようです。

3. ファイルを共有するシステムで考えてみる

処理を簡単に説明すると、

ファイル情報を登録

ファイルを保存

メールを送信

受信者がダウンロード

という流れになります。

これを分割すると、

ファイル管理サービス → ファイル情報やファイルの保存を管理
通知サービス → メールを送信
ユーザー管理サービス → ユーザー情報を管理

といった構成が考えられます。

単にファイルの保存先を分けたり、メール送信を非同期化したりするだけではマイクロサービスになるわけではないようで、役割ごとに独立したサービスとして分けることが重要です。

4. メリットと課題

マイクロサービス化すると、サービスごとに分割して修正やデプロイを行いやすくなります。

また、よく言われるのは一部のサービスで障害が発生しても、他の機能への影響を抑えやすくなります。

一方でデメリットとしては、下記のような考慮事項が開発段階で増えて工数圧迫になります。

  • APIの設計
  • 通信失敗時の処理
  • データの整合性(DB論理破壊パターンは握り潰すとか)
  • ログや監視

5. 感想

今回調べてみて、マイクロサービス化は単に処理を分けるのではなく、役割ごとにサービスを独立させる考え方だと分かりました。

既存システムを分割する際は、どの程度の粒度で別サービスとして切り出すかがお洒落ポイントかなと思いました。

因みにですがモノリスの語感がテトリスに似ているので、語源を調べてみると、モノリスはギリシャ語系でmono(1つ)+ lithos(石)ということだそうです。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。
画像
マイクロサービス化