F 請求書管理 領収書 機能 A’ 機能 C 機能 E’ 機能 B 領収書管理 請求書(発行) 機能 D 機能 F 機能 A 請求書管理 テナント管理 機能 E’’’ 機能 F 契約管理 機能 B 機能 D - マイクロサービスアーキテクチャを採用している - 機能領域ごとに一定 重複機能を許容することで、アジリティを確保していた - 機能が増えていく中で機能ごとに微妙な差異が発生していた - 共通であることが明らかな機能 プロダクト 初期開発時点で独立していた ユーザー管理 機能 E’’ 機能 A 機能 C
F 請求書管理 領収書 機能 A’ 機能 C 機能 E’ 機能 B 領収書管理 請求書(発行) 機能 D 機能 F 機能 A 請求書管理 テナント管理 機能 E’’’ 機能 F 契約管理 機能 B 機能 D ユーザー管理 機能 E’’ 移植 過程で過去 反省を 活かしてリアーキテクチャされた 特定 領域にしかないが他 領域でも使いたい 同一 機能が散在している (あるい 共通化されているが移行されていない) 同じ機能が独自 発展をしている 機能 A 機能 C
F 請求書管理 領収書 機能 A’ 機能 C 機能 E’ 機能 B 領収書管理 請求書(発行) 機能 D 機能 F 機能 A 請求書管理 テナント管理 機能 E’’’ 機能 F 契約管理 機能 B 機能 D ユーザー管理 機能 E’’ 移植 過程で過去 反省を 活かしてリアーキテクチャされた 機能 A 機能 C
F 請求書管理 領収書 機能 A’ 機能 C 機能 E’ 機能 B 領収書管理 請求書(発行) 機能 D 機能 F 機能 A 請求書管理 テナント管理 機能 E’’’ 機能 F 契約管理 機能 B 機能 D ユーザー管理 機能 E’’ 同一 機能が散在している (あるい 共通化されているが移行されていない) 機能 A 機能 C
機能 A'’ 機能 B 機能 C 機能 D 機能 E 機能 F 契約管理 ユーザー管理 テナント管理 - 各マイクロサービスが適切な粒度と抽象度で独立している - 共通機能を利用する機能 開発が効率化されている - 機能 保守コストが下がっている 共通機能が Service Platform として、ユーザーへ 価値提供まで 時間を加速できている
A API サービス B API テナント管理サー ビス API 解約可能なことを通知する 通知を購読してサービス ごと 解約処理を実行する サービス A サービス B テナント管理サー ビス API Pub/Sub テナント管理サービス すべて サービスで 解約処理が完了したことを保証する責務を持つ テナント管理サービス 確実に解約対象を 通知することを責務とし、サービスにおける処理 責務 それぞれ サービスが持つ