More Related Content
PDF
PDF
PDF
PPTX
OWASP meets KOBE - コピペで作るシステムの終焉とシフトレフト - PPTX
20160615 知能犯もシャットアウト!アイドルが教えるAmazonInspector♡ PDF
20201209 fin-jaws lt_re_invent PDF
Apstra AOSによるEVPN-VXLANの自動化 PDF
IoT Security を実現する3つの視点とShift Left Viewers also liked
PDF
Preparing for distributed system failures using akka #ScalaMatsuri PDF
PDF
PPTX
Developing an Akka Edge1-3 PDF
PDF
PDF
Typesafe Reactive Platformで作るReactive System入門 PDF
Typesafe Reactive Platformで作るReactive System PDF
エンタープライズへのアジャイル開発の導入事例 PDF
Twitterのリアルタイム分散処理システム「Storm」入門 PDF
Device Simulator with Akka PDF
Similar to Akkaで実現するステートフルでスケーラブルなアーキテクチャ
PDF
PDF
PDF
Starting Reactive Systems with Lerna #reactive_shinjuku PDF
PPTX
PPTX
Azure Service Fabric Actor PDF
Akka-Streams in Production PPTX
CQRS+ESをAkka Persistenceを使って実装してみる。 PPTX
PPTX
Amazon EKS によるスマホゲームのバックエンド運用事例 PDF
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~ PDF
PDF
PDF
Distributed data stores in Hadoop ecosystem PPTX
Azure Service Fabric Cluster の作成 PDF
Akka Stream x Kinesis at Shinjuku reactive meetup vol2 PPTX
Elasticsearch as a Distributed System PDF
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi PDF
More from TIS Inc.
PDF
AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現 PDF
Reactive Systems that focus on High Availability with Lerna PDF
EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜 PDF
PDF
Akka in Action workshop #ScalaMatsuri 2018 PDF
PDF
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri) Akkaで実現するステートフルでスケーラブルなアーキテクチャ
- 1.
Copyright © 2016TIS Inc. All rights reserved.
Akkaで実現するステートフルでスケー
ラブルなアーキテクチャ
2016.10.8 Scala関西Summit
前出祐吾
杉本貴史
with デモ
- 2.
Copyright © 2016TIS Inc. All rights reserved. 2
自己紹介
TIS株式会社
リアクティブシステム コンサルティングサービス
前出祐吾
@yugolf
杉本貴史
@tksugimoto
https://twitter.com/okapies/status/781439220330164225
- 3.
Copyright © 2016TIS Inc. All rights reserved. 3
今日の話
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
with デモ
知ってる人は、
デモで遊んでいてください。
- 4.
Copyright © 2016TIS Inc. All rights reserved. 4
スケールアップ vs スケールアウト
ステートレス vs ステートフル
ワークロード増加の備えは万全?
- 5.
Copyright © 2016TIS Inc. All rights reserved.
スケーラブル、かつ、ステートフルにするには
5
状態を共有する
or
毎回同じノードに振り分ける
- 6.
Copyright © 2016TIS Inc. All rights reserved.
war
war
6
Load Balancer
毎回同じノードに振り分ける
Sticky Session
状態を共有する
Session Replication
スケーラブル、かつ、ステートフルにするには
- 7.
Copyright © 2016TIS Inc. All rights reserved.
Akkaの場合
7
毎回同じノードに振り分ける
状態を共有する
or
- 8.
Copyright © 2016TIS Inc. All rights reserved.
必要な知識
8
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
- 9.
Copyright © 2016TIS Inc. All rights reserved.
アクターモデル
9
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
参加者
状
Actorはメッセージを到着順に処理するだけ
なのでシンプルに非同期処理を実装できる
¥3,000
yugolf
幹事さん
tksugimoto
negoro
- 10.
Copyright © 2016TIS Inc. All rights reserved. 10
フロントエンドとバックエンド
front-end back-end
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
- 11.
Copyright © 2016TIS Inc. All rights reserved.
Cluster
node2
node1
ワークロードに応じてスケール
11
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
front-end
- 12.
Copyright © 2016TIS Inc. All rights reserved.
Cluster
node2
node1
12
Alice
Bob
John
Nina
Actor(Entity)が状態を保つ場合
状
毎回同じノードに
振り分けたい!
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
注)イメージ図
front-end
- 13.
Copyright © 2016TIS Inc. All rights reserved.
Cluster
13
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence Alice
John
状
Shard
Coordinator
Shardの所在は
Coordinatorに尋ねる
Shardとして扱う
ShardRegion
ShardRegion
shard
George
Sunny
node1
node2
- 14.
Copyright © 2016TIS Inc. All rights reserved. 14
Alice
George
Sunny
John
状
ノードが増えるとリバランシングされる
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
サーバの負荷を
できるだけ均等に
node1
node2
node3
shard
- 15.
- 16.
Copyright © 2016TIS Inc. All rights reserved. 16
Alice
状態が失われる?
George
Sunny
John
状
ノードがダウンすると
front-end
- 17.
Copyright © 2016TIS Inc. All rights reserved. 17
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
Alice
状態を永続化しておく
George
Sunny
John
状
ノードのダウンに備えて
- 18.
Copyright © 2016TIS Inc. All rights reserved. 18
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
Alice
永続化した情報から
Entityを復元
George
Sunny
John
状
ノードがダウンすると
- 19.
Copyright © 2016TIS Inc. All rights reserved. 19
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
Alice
リバランスされる
John
状
次のダウンに備えて、ノードを追加
George
Sunny
- 20.
- 21.
Copyright © 2016TIS Inc. All rights reserved.
Cluster
21
Alice
John
3
5
Shard
Coordinator
じゃんけん!!
ShardRegion
ShardRegion
shard
Win!!
-Ranking-
1.John 5
2.Alice 3
3.Nina 2
Ranking
4
cassandra
- 22.
Copyright © 2016TIS Inc. All rights reserved.
何が起こったか?
22
• 4ノードのうち1つのノードをダウン
• ダウンしたノードの代わりに別のノードでActorを復元
• ダウンしてから復元されるまでに起こったこと
• ダウンしたノードの勝数カウントがストップ
したが、復旧後に正しくカウントされた
じゃんけん ランキング
運のいい人
(node1,2,3)
○
△(一部更新さ
れない)運の悪い人
(node4)
△(結果が不明)
- 23.
Copyright © 2016TIS Inc. All rights reserved.
レジリエント
23
部分的な障害が発生したときも、
動かし続けることができ、
元の状態に回復する
http://www.reactivemanifesto.org/
- 24.
Copyright © 2016TIS Inc. All rights reserved.
必ずメッセージを届けたい
24
At least once
勝った!
オッケー
勝った!ってば
❌
- 25.
Copyright © 2016TIS Inc. All rights reserved.
まとめ
25
で実現するステートフルでスケーラブルなシステムは
レジリエンスも実現できる
ただし、スケーラビリティやレジリエンスは
レスポンスタイムとのトレードオフ
実現したい性能要件に合わせた設計をしましょう
メッセージの信頼性もね
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
- 26.
Copyright © 2016TIS Inc. All rights reserved.
• ダウンしてから復元されるまでに起こったこと
• サーバダウンしたユーザの勝数カウントが
ストップしたが、復旧後に正しくカウントされた
レジリエンス設計
26
じゃんけん ランキング
運のいい人
(node1,2,3)
○
△(一部更新さ
れない)運の悪い人
(node4)
△(結果が不明)
重要
もっと
重要
- 27.
Copyright © 2016TIS Inc. All rights reserved.
TISリアクティブシステム コンサルティングサービス
27
• PoC支援
• 設計レビュー
• コードレビュー
etc
リアクティブ TIS
- 28.