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.

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

1,718 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

×