Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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
Nächste SlideShare
Wird geladen in …5
×

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

1.786 Aufrufe

Veröffentlicht am

Scala関西Summit2016の資料です。

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

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

×