Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Copyright © 2016 TIS Inc. All rights reserved.
Akkaで実現するステートフルでスケー
ラブルなアーキテクチャ
2016.10.8 Scala関西Summit
前出祐吾
杉本貴史
with デモ
Copyright © 2016 TIS Inc. All rights reserved. 2
自己紹介
TIS株式会社
リアクティブシステム コンサルティングサービス
前出祐吾
@yugolf
杉本貴史
@tksugimoto
https:...
Copyright © 2016 TIS Inc. All rights reserved. 3
今日の話
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
with ...
Copyright © 2016 TIS Inc. All rights reserved. 4
スケールアップ vs スケールアウト
ステートレス vs ステートフル
ワークロード増加の備えは万全?
Copyright © 2016 TIS Inc. All rights reserved.
スケーラブル、かつ、ステートフルにするには
5
状態を共有する
or
毎回同じノードに振り分ける
Copyright © 2016 TIS Inc. All rights reserved.
war
war
6
Load	Balancer
毎回同じノードに振り分ける
Sticky Session
状態を共有する
Session Replic...
Copyright © 2016 TIS Inc. All rights reserved.
Akkaの場合
7
毎回同じノードに振り分ける
状態を共有する
or
Copyright © 2016 TIS Inc. All rights reserved.
必要な知識
8
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
Copyright © 2016 TIS Inc. All rights reserved.
アクターモデル
9
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
参加...
Copyright © 2016 TIS Inc. All rights reserved. 10
フロントエンドとバックエンド
front-end back-end
Akka Actor
Akka Cluster
Akka Cluster S...
Copyright © 2016 TIS Inc. All rights reserved.
Cluster
node2
node1
ワークロードに応じてスケール
11
Akka Actor
Akka Cluster
Akka Cluster ...
Copyright © 2016 TIS Inc. All rights reserved.
Cluster
node2
node1
12
Alice
Bob
John
Nina
Actor(Entity)が状態を保つ場合
状
毎回同じノードに...
Copyright © 2016 TIS Inc. All rights reserved.
Cluster
13
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence A...
Copyright © 2016 TIS Inc. All rights reserved. 14
Alice
George
Sunny
John
状
ノードが増えるとリバランシングされる
Akka Actor
Akka Cluster
Akk...
Copyright © 2016 TIS Inc. All rights reserved. 15
障害が起こるとどうなる?
Copyright © 2016 TIS Inc. All rights reserved. 16
Alice
状態が失われる?
George
Sunny
John
状
ノードがダウンすると
front-end
Copyright © 2016 TIS Inc. All rights reserved. 17
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
Alice
状態を...
Copyright © 2016 TIS Inc. All rights reserved. 18
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
Alice
永続化...
Copyright © 2016 TIS Inc. All rights reserved. 19
Akka Actor
Akka Cluster
Akka Cluster Sharding
Akka Persistence
Alice
リバラ...
Copyright © 2016 TIS Inc. All rights reserved. 20
デモ
Copyright © 2016 TIS Inc. All rights reserved.
Cluster
21
Alice
John
3
5
Shard
Coordinator
じゃんけん!!
ShardRegion
ShardRegion...
Copyright © 2016 TIS Inc. All rights reserved.
何が起こったか?
22
• 4ノードのうち1つのノードをダウン
• ダウンしたノードの代わりに別のノードでActorを復元
• ダウンしてから復元され...
Copyright © 2016 TIS Inc. All rights reserved.
レジリエント
23
部分的な障害が発生したときも、
動かし続けることができ、
元の状態に回復する
http://www.reactivemanifes...
Copyright © 2016 TIS Inc. All rights reserved.
必ずメッセージを届けたい
24
At least once
勝った!
オッケー
勝った!ってば
❌
Copyright © 2016 TIS Inc. All rights reserved.
まとめ
25
で実現するステートフルでスケーラブルなシステムは
レジリエンスも実現できる
ただし、スケーラビリティやレジリエンスは
レスポンスタイムと...
Copyright © 2016 TIS Inc. All rights reserved.
• ダウンしてから復元されるまでに起こったこと
• サーバダウンしたユーザの勝数カウントが

ストップしたが、復旧後に正しくカウントされた
レジリエン...
Copyright © 2016 TIS Inc. All rights reserved.
TISリアクティブシステム コンサルティングサービス
27
• PoC支援
• 設計レビュー
• コードレビュー
      etc
リアクティブ T...
THANK YOU
Upcoming SlideShare
Loading in …5
×

Akkaで実現するステートフルでスケーラブルなアーキテクチャ

1,634 views

Published on

Scala関西Summit2016の資料です。

Published in: Technology
  • Be the first to comment

Akkaで実現するステートフルでスケーラブルなアーキテクチャ

  1. 1. Copyright © 2016 TIS Inc. All rights reserved. Akkaで実現するステートフルでスケー ラブルなアーキテクチャ 2016.10.8 Scala関西Summit 前出祐吾 杉本貴史 with デモ
  2. 2. Copyright © 2016 TIS Inc. All rights reserved. 2 自己紹介 TIS株式会社 リアクティブシステム コンサルティングサービス 前出祐吾 @yugolf 杉本貴史 @tksugimoto https://twitter.com/okapies/status/781439220330164225
  3. 3. Copyright © 2016 TIS Inc. All rights reserved. 3 今日の話 Akka Actor Akka Cluster Akka Cluster Sharding Akka Persistence with デモ 知ってる人は、 デモで遊んでいてください。
  4. 4. Copyright © 2016 TIS Inc. All rights reserved. 4 スケールアップ vs スケールアウト ステートレス vs ステートフル ワークロード増加の備えは万全?
  5. 5. Copyright © 2016 TIS Inc. All rights reserved. スケーラブル、かつ、ステートフルにするには 5 状態を共有する or 毎回同じノードに振り分ける
  6. 6. Copyright © 2016 TIS Inc. All rights reserved. war war 6 Load Balancer 毎回同じノードに振り分ける Sticky Session 状態を共有する Session Replication スケーラブル、かつ、ステートフルにするには
  7. 7. Copyright © 2016 TIS Inc. All rights reserved. Akkaの場合 7 毎回同じノードに振り分ける 状態を共有する or
  8. 8. Copyright © 2016 TIS Inc. All rights reserved. 必要な知識 8 Akka Actor Akka Cluster Akka Cluster Sharding Akka Persistence
  9. 9. Copyright © 2016 TIS Inc. All rights reserved. アクターモデル 9 Akka Actor Akka Cluster Akka Cluster Sharding Akka Persistence 参加者 状 Actorはメッセージを到着順に処理するだけ なのでシンプルに非同期処理を実装できる ¥3,000 yugolf 幹事さん tksugimoto negoro
  10. 10. Copyright © 2016 TIS Inc. All rights reserved. 10 フロントエンドとバックエンド front-end back-end Akka Actor Akka Cluster Akka Cluster Sharding Akka Persistence
  11. 11. Copyright © 2016 TIS Inc. All rights reserved. Cluster node2 node1 ワークロードに応じてスケール 11 Akka Actor Akka Cluster Akka Cluster Sharding Akka Persistence front-end
  12. 12. Copyright © 2016 TIS 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. 13. Copyright © 2016 TIS 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. 14. Copyright © 2016 TIS Inc. All rights reserved. 14 Alice George Sunny John 状 ノードが増えるとリバランシングされる Akka Actor Akka Cluster Akka Cluster Sharding Akka Persistence サーバの負荷を できるだけ均等に node1 node2 node3 shard
  15. 15. Copyright © 2016 TIS Inc. All rights reserved. 15 障害が起こるとどうなる?
  16. 16. Copyright © 2016 TIS Inc. All rights reserved. 16 Alice 状態が失われる? George Sunny John 状 ノードがダウンすると front-end
  17. 17. Copyright © 2016 TIS Inc. All rights reserved. 17 Akka Actor Akka Cluster Akka Cluster Sharding Akka Persistence Alice 状態を永続化しておく George Sunny John 状 ノードのダウンに備えて
  18. 18. Copyright © 2016 TIS Inc. All rights reserved. 18 Akka Actor Akka Cluster Akka Cluster Sharding Akka Persistence Alice 永続化した情報から Entityを復元 George Sunny John 状 ノードがダウンすると
  19. 19. Copyright © 2016 TIS Inc. All rights reserved. 19 Akka Actor Akka Cluster Akka Cluster Sharding Akka Persistence Alice リバランスされる John 状 次のダウンに備えて、ノードを追加 George Sunny
  20. 20. Copyright © 2016 TIS Inc. All rights reserved. 20 デモ
  21. 21. Copyright © 2016 TIS 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. 22. Copyright © 2016 TIS Inc. All rights reserved. 何が起こったか? 22 • 4ノードのうち1つのノードをダウン • ダウンしたノードの代わりに別のノードでActorを復元 • ダウンしてから復元されるまでに起こったこと • ダウンしたノードの勝数カウントがストップ
 したが、復旧後に正しくカウントされた じゃんけん ランキング 運のいい人 (node1,2,3) ○ △(一部更新さ れない)運の悪い人 (node4) △(結果が不明)
  23. 23. Copyright © 2016 TIS Inc. All rights reserved. レジリエント 23 部分的な障害が発生したときも、 動かし続けることができ、 元の状態に回復する http://www.reactivemanifesto.org/
  24. 24. Copyright © 2016 TIS Inc. All rights reserved. 必ずメッセージを届けたい 24 At least once 勝った! オッケー 勝った!ってば ❌
  25. 25. Copyright © 2016 TIS Inc. All rights reserved. まとめ 25 で実現するステートフルでスケーラブルなシステムは レジリエンスも実現できる ただし、スケーラビリティやレジリエンスは レスポンスタイムとのトレードオフ 実現したい性能要件に合わせた設計をしましょう メッセージの信頼性もね Akka Actor Akka Cluster Akka Cluster Sharding Akka Persistence
  26. 26. Copyright © 2016 TIS Inc. All rights reserved. • ダウンしてから復元されるまでに起こったこと • サーバダウンしたユーザの勝数カウントが
 ストップしたが、復旧後に正しくカウントされた レジリエンス設計 26 じゃんけん ランキング 運のいい人 (node1,2,3) ○ △(一部更新さ れない)運の悪い人 (node4) △(結果が不明) 重要 もっと 重要
  27. 27. Copyright © 2016 TIS Inc. All rights reserved. TISリアクティブシステム コンサルティングサービス 27 • PoC支援 • 設計レビュー • コードレビュー       etc リアクティブ TIS
  28. 28. THANK YOU

×