10分で分かるリアクティブシステム
TRANSCRIPT
Copyright © 2015 TIS Inc. All rights reserved.
10分で分かる
リアクティブシステム2016.2.2
前出 祐吾 @yugolf
第2回Reactive System Meetup in 西新宿
Copyright © 2015 TIS Inc. All rights reserved. 2
Reactive Design Patterns
https://www.manning.com/books/reactive-design-patterns
Copyright © 2015 TIS Inc. All rights reserved. 3
Business Innovation
DigitalTransformation
IoT
AIFinTech
Robotics
AR/VR
Copyright © 2015 TIS Inc. All rights reserved. 4
New Model
Reactive
Asynchronous
scalability
high-availability
non-blocking
fault-tolerant loosely
coupledmicro
services
distributed
Copyright © 2015 TIS Inc. All rights reserved. 5
http://www.reactivemanifesto.org/ja
Reactive Systems
Copyright © 2015 TIS Inc. All rights reserved. 6
Reactive Systems
届けたい価値
手段
支える原理
高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
高レスポンスと、耐障害性と、伸縮性と、
メッセージ駆動とを備えたシステム
Copyright © 2015 TIS Inc. All rights reserved. ReactiveDesignPattern(http://manning.com/kuhn/) 7
Responsive
ユーザーの要求に迅速にレスポンスするシステム
高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
届けたい価値
手段
支える原理
Copyright © 2015 TIS Inc. All rights reserved. ReactiveDesignPattern(http://manning.com/kuhn/) 8
the How of Responsive
•並列処理•意味のあるタイムアウト設定•キューサイズの指定•サーキットブレーカー
Copyright © 2015 TIS Inc. All rights reserved. 9
Elastic通常の負荷時だけでなく、一時的な高負荷状況でも、変動するワークロードに応じて割り当てるリソースを増加・減少させることで応答時間を一定水準に保つ
高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
届けたい価値
手段
支える原理
ReactiveDesignPattern(http://manning.com/kuhn/)
Copyright © 2015 TIS Inc. All rights reserved. 10
the How of Elastic!•処理するストリームを分割可能に•リクエストする処理は分散可能でメッセージ駆動に•アクティブなインスタンスの数を変更可能に!!負荷状況を監視し必要なインスタンス数を調整
ReactiveDesignPattern(http://manning.com/kuhn/)
Copyright © 2015 TIS Inc. All rights reserved. 11
1つのActorですべての計算処理を行うApplicationCluster
Analyzer
AnalyzerMonitor
Mater
1
32
4
Worker
SolarFarmSimulator高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
Copyright © 2015 TIS Inc. All rights reserved. 12
ApplicationCluster
Analyzer
Analyzer
Analyzer
Analyzer
Monitor
Master1
3
2
4
複数のActorに処理を振り分けるWorker
SolarFarmSimulator高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
Copyright © 2015 TIS Inc. All rights reserved. 13
Little’s law
L =λ*WL:平均的な顧客数
λ:到着率
W:店内で過ごす平均時間
https://ja.wikipedia.org/wiki/リトルの法則
Copyright © 2015 TIS Inc. All rights reserved. 14
Little’s law
L =λ*WL:平均的な顧客数 インスタンス数
λ:到着率 リクエスト率
W:店内で過ごす平均時間 平均処理時間
Copyright © 2015 TIS Inc. All rights reserved. 15
Resilient部分的な障害が発生した時にもシステム全体を危険にさらすことなく回復させ、高レスポンスを維持する
高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
届けたい価値
手段
支える原理
ReactiveDesignPattern(http://manning.com/kuhn/)
Copyright © 2015 TIS Inc. All rights reserved. 16
the How of Resilience
部品化と分散!
•コンポーネント間に防水隔壁(water-tight)を構築•スーパーバイザーに障害制御を委譲
ReactiveDesignPattern(http://manning.com/kuhn/)
Copyright © 2015 TIS Inc. All rights reserved. 17
障害制御はスーパーバイザーに
スーパーバイザー
サブスーパーバイザー
Actor
Actor Actor 障害を外へ波及させない
子アクターの監視
高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
sender
Error
Failure
Copyright © 2015 TIS Inc. All rights reserved. 18
ApplicationCluster
Analyzer
AnalyzerMonitor
Master13
2
4
1つのWorkerがダウンするとWorker
AnalyzerAnalyzer
SolarFarmSimulator高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
Copyright © 2015 TIS Inc. All rights reserved.
ApplicationCluster
Analyzer
Analyzer
Analyzer
Analyzer
Monitor
Master1 3
2
4
Worker
残りのWorkerでやりくりする
SolarFarmSimulator高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
Copyright © 2015 TIS Inc. All rights reserved. 20
ApplicationCluster
Analyzer
Analyzer
Analyzer
Analyzer
Monitor
Master1
3
2
4
MasterがダウンするとWorker
SolarFarmSimulator高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
Copyright © 2015 TIS Inc. All rights reserved. 21
ApplicationCluster
Analyzer
Analyzer
AnalyzerMonitor
1
3
24
Analyzer
Master
WorkerのひとつがMasterになるWorker
SolarFarmSimulator高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
Copyright © 2015 TIS Inc. All rights reserved. 22
ApplicationCluster
Analyzer
AnalyzerMonitor
1
3
2
4
Analyzer
Master
ダウンしたAnalyzerを起動するとWorkerとなって働く
Worker
Analyzer
SolarFarmSimulator高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
Copyright © 2015 TIS Inc. All rights reserved. 23
Message Drivenメッセージパッシングにより、コンポーネント間を疎結合にする
高レスポンス Responsive
伸縮性 Elastic
耐障害性 Resilient
メッセージ駆動 Message-driven
届けたい価値
手段
支える原理
ReactiveDesignPattern(http://manning.com/kuhn/)
Copyright © 2015 TIS Inc. All rights reserved. 24
Message Drivenのベネフィット
ReactiveDesignPattern(http://manning.com/kuhn/)
•コンポーネントのやり取りを疎結合に•コンポーネントはメッセージを到着まで非アクティブ•「Sharenothing」がスケーラビリティの上限を引き上げ
Copyright © 2015 TIS Inc. All rights reserved. 25※Wikipedia(https://ja.wikipedia.org/wiki/アムダールの法則)
スケーラビリティの上限
Copyright © 2015 TIS Inc. All rights reserved. 26※Wikipedia(https://ja.wikipedia.org/wiki/アムダールの法則)
スケーラビリティの上限
少⬅プロセッサ数➡多
遅⬅スピード➡速並列化可能な部分の割合
50%75%
90%
95%
Copyright © 2015 TIS Inc. All rights reserved. 27
コンサルティングサービスhttp://www.tis.jp/service_solution/goreactive/
ご興味を御持ち頂けましたら、是非ご連絡下さい。[email protected]