[ac05]...

39

Upload: decode-2017

Post on 21-Jan-2018

1.382 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 2: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

というと聞こえはいいですが、まあ調整役です

Page 3: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 4: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

※本資料および講演内容は、講演者個人の見解であり、所属する組織の戦略ないし見解を必ずしも反映するものではありません。

Page 5: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

https://www.flickr.com/photos/celesteh/5947099533

Page 6: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

UIServer-

Side DB

参考:martinfowler.com

Page 7: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

参考:martinfowler.com

Page 8: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

参考:martinfowler.com

Page 9: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

そこでマイクロサービスですよ

Page 10: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

参考:martinfowler.com

Page 11: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

Logic

Logic

Page 12: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 13: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 14: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

過ぎたるは及ばざるがごとしpublic class FizzStrategy implements IsEvenlyDivisibleStrategy {

public boolean isEvenlyDivisible(final int theInteger) {

if

(NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,

FizzStrategyConstants.FIZZ_INTEGER_CONSTANT_VALUE)) {

return true;

} else {

return false;

}

}

}

FizzStrategy.java - https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

Page 15: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

参考:martinfowler.com

Page 16: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 17: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 18: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

・レイヤ化アーキテクチャによるドメイン層の確保・オブジェクト指向を駆使したモデルの実装

・「境界づけられたコンテキスト」同士の関係性・「コンテキストマップ」による表現

Page 19: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

出典:http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html by Trygve M. H. Reenskaug

ユーザーの世界観

Page 20: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

オブジェクト

オブジェクト

Search

Small Pop-Up

Pop-Up Menu

Small Combo

Combo BoxBits

BobsThings

Stuff

OKCancel

Label

Ends

Odds

Help Tag

Explanotext

A Very Nice Window Indeed

SIDEBAR

Search

Odds

Ends

UIデータベース

リポジトリクライアント

オブジェクト

ドメイン層

モデルの表現

Page 21: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

<script

var a=

var xl

if(xls

SQL

SQLテンプレート

パラメタ

結果セット

Search

Small Pop-Up

Pop-Up Menu

Small Combo

Combo BoxBits

BobsThings

Stuff

OKCancel

Label

Ends

Odds

Help Tag

Explanotext

A Very Nice Window Indeed

SIDEBAR

Search

Odds

Ends

UI

<script

var a=

var xl

if(xls

入力チェック

<script

var a=

var xl

if(xls

編集ロジック

データベース

DBアクセス

手続き

Page 22: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

『エリックエヴァンスのドメイン駆動設計』 p.336

大規模なシステムについては...

Page 23: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

経路選択サービス

ネットワーク走査サービス

予約-運送ネットワーク変換サービス

“経路”

“ノード”と

“アーク”

Page 24: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 25: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

マスタ

データマートBI

マスタ

Page 26: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

意思決定支援

業務

潜在能力

経路選択サービス

経路仕様 輸送日程

顧客 運送工程

Page 27: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

参考:Enterprise Integration Patterns

同期 or 非同期?

データ量?

連携頻度?

Page 28: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 29: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 30: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

受発注在庫管理

会計

WMS

マスタ

レポーティング

業務

潜在能力/ポリシー

意思決定支援

Before After

package

scratch

package

Page 31: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

受発注在庫管理

WMS

ヒト モノ

Page 32: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 33: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

受発注在庫管理

WMS

吸収層

Page 34: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 35: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

• 分割/統合方針重要• ヒトの動きと責務のレイヤを考慮しよう

• 特性を考えた統合方式を選択しよう

• なにより業務重要• システムの動きだけでは解決できないことを忘れずに

• ビジネスにとって大切なエンドツーエンドを考えよう

• ご利用は計画的に• アップフロントに精緻な計画を立てておこう

まとめ

技術より業務

Page 36: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 37: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
Page 38: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

セッションアンケートにご協力ください

➢ 専用アプリからご回答いただけます。

decode 2017

➢ スケジュールビルダーで受講セッションを登録後、アンケート画面からご回答ください。

➢ アンケートの回答時間はたったの 15 秒です!

Page 39: [AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計

Ask the Speaker のご案内

本セッションの詳細は『Ask the Speaker Room』各コーナーカウンタにて

ご説明させていただきます。是非、お立ち寄りください。