発表者:土岐 孝平
1
土岐孝平(とき こうへい)
Springをよく使っている
書籍「Spring3入門」の共著
業務システムの開発に携わっている
マイクロサービスの考えを取り入れたい
2
良いと思います
システム(サービス)を小分けにする
独立した仕組み
▪ プログラミング言語、フレームワーク、データベース
個別に開発、デプロイ
メリット
▪ 改修しやすい、新しい技術に対応しやすい、システムを
入替やすい
サイロ化しないか?
全体最適を考慮した上で小分けにしましょう
3
Database per serviceパターン
By Chris Richardson
メリット
システムに適した製品を選択できる
▪ RDB、NoSQL、検索エンジン・・・
スキーマの変更が他のシステムに影響しない
デメリット
システムを跨るトランザクション
システムを跨るデータの結合
4
何を切り口にして分けるか?
データ?
機能?
5
データデータデータデータB
データデータデータデータCデータデータデータデータD
データデータデータデータA
機能機能機能機能X
機能機能機能機能Y
機能機能機能機能Z
6
出荷出荷出荷出荷
入荷入荷入荷入荷
在庫在庫在庫在庫商品商品商品商品発注発注発注発注
受注受注受注受注 仕入元仕入元仕入元仕入元
得意先得意先得意先得意先
・きれいに分けることができない
7
販売管理販売管理販売管理販売管理 物流管理物流管理物流管理物流管理マスタ管理マスタ管理マスタ管理マスタ管理
商品商品商品商品
管理管理管理管理
得意先得意先得意先得意先
管理管理管理管理
仕入元仕入元仕入元仕入元
管理管理管理管理
発注発注発注発注
管理管理管理管理
受注受注受注受注
管理管理管理管理
入荷入荷入荷入荷
管理管理管理管理
出荷出荷出荷出荷
管理管理管理管理
・きれいに分けることができる
※ ただし、他のシステムのデータを参照する必要がある
方法
リモートプロシージャコール(RESTなど)&アプリ側で結合
マテリアライズドビュー(実体を持ったビュー)として同期
8
物流管理物流管理物流管理物流管理マスタ管理マスタ管理マスタ管理マスタ管理
入荷入荷入荷入荷商品商品商品商品
入荷した商品の情報を入荷した商品の情報を入荷した商品の情報を入荷した商品の情報を
画面に表示したい画面に表示したい画面に表示したい画面に表示したい
入荷入荷入荷入荷 商品商品商品商品
9
物流管理物流管理物流管理物流管理マスタ管理マスタ管理マスタ管理マスタ管理
入荷入荷入荷入荷商品商品商品商品
商品商品商品商品
入荷入荷入荷入荷 商品商品商品商品
【メリット】
・参照する側でデータを持た
なくてよい
・データの重複がない
【デメリット】
・パフォーマンス
・APIの設計が大変そう
・依存が強くなる
-- マスタ管理が停止すると物流管理が動かない
-- 開発時にマスタ管理のスタブが必要
10
物流管理物流管理物流管理物流管理マスタ管理マスタ管理マスタ管理マスタ管理
入荷入荷入荷入荷商品商品商品商品 商品商品商品商品同期同期同期同期
【デメリット】
・仕組みが大変そう
ファイル?メッセージング?DBのマテ
ビュー?
リアリタイム性、データの齟齬
【メリット】
・柔軟に検索できる
・依存が弱くなる
-- マスタ管理が停止しても
物流管理は動く
-- 開発時は商品のスキーマを
用意するだけ
入荷入荷入荷入荷 商品商品商品商品
ケースバイケース?
指針を明確にするのが難しい
2つの方法が無秩序に乱立しそう
マテリアライズドビューとして同期した方が潰し
が効く
マテリアライズドビューの方が柔軟な検索ができる
▪ 検索エンジンを利用してもよい
マテリアライズドビューで一本化したほうがよい
気がする
ただし、同期の仕組みの作り込みは必要
11
機能を切り口にしてシステムを分ける
開発が大変そうにならない程度の細かさ(細かくし過ぎない)
パッケージやSaaSで切り売りしてるくらいの粒度
マテリアライズドビューとして参照データを同期
同期の仕組みは要検討
12
販売管理販売管理販売管理販売管理 物流管理物流管理物流管理物流管理
マスタ管理マスタ管理マスタ管理マスタ管理
商品商品商品商品
同期の仕組み同期の仕組み同期の仕組み同期の仕組み
商品商品商品商品 商品商品商品商品
13

業務システムとマイクロサービス