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を使った スケーラブルなLINE BOT

2,401 views

Published on

Akka Cluster Shardingを使ってLINE BOTを作ってみた

2016/04/26(火)
市ヶ谷Geek★Night「Scala大名の平成維新〜殿中でScala!〜」
LT

Published in: Software
  • Be the first to comment

Akkaを使った スケーラブルなLINE BOT

  1. 1. Copyright © 2016 TIS Inc. All rights reserved. Akkaを使った スケーラブルなLINE BOT TIS 株式会社 生産技術R&D室 杉本 貴史
  2. 2. Copyright © 2016 TIS Inc. All rights reserved. 2 http://bit.ly/reactive-bot 自己紹介  TIS 株式会社 • 生産技術R&D室  杉本 貴史(すぎもと たかし)  仕事 • Lightbend Reactive Platformの活用検証 今日は出てきません
  3. 3. Copyright © 2016 TIS Inc. All rights reserved. 3 http://bit.ly/reactive-bot LINE BOTとは  4/7 トライアルAPI提供開始 LINE アプリ BOT Server 通知 POST LINE Server 処 理 送信 受信
  4. 4. Copyright © 2016 TIS Inc. All rights reserved. 4 http://bit.ly/reactive-bot お伝えしたいこと 枠組み(どうやって提供するか) 中身(BOTで何を提供するか) スケール可能なLINE BOTを作成可能 Akka Cluster Sharding
  5. 5. Copyright © 2016 TIS Inc. All rights reserved. 5 http://bit.ly/reactive-bot 作ったもの  電卓機能  スケーリング可能 前回の答え を使うなら 省略可 作成したBOT
  6. 6. Copyright © 2016 TIS Inc. All rights reserved. 6 http://bit.ly/reactive-bot BOTの実現方法  状態の保持 • Akka Actor • Akka Persistence  スケーラビリティ • Akka Cluster Sharding 前回の答えを使うため
  7. 7. Copyright © 2016 TIS Inc. All rights reserved. 7 http://bit.ly/reactive-bot Akka Actorを使ったBOT  Userごとに状態を保持可能 • 例: 前回の計算結果 • メリット:オンメモリなので高速  スケールさせたい • 1Nodeではいつか限界が来る Node 1 2 3 4 …5 6 7 Actor
  8. 8. Copyright © 2016 TIS Inc. All rights reserved. 8 http://bit.ly/reactive-bot Akka Actorのスケール  NodeとActorを対応させて管理するのは大変 Node 1 1 2 3 Node 2 4 5 6 User 3 ? ? Actor Actor
  9. 9. Copyright © 2016 TIS Inc. All rights reserved. 9 http://bit.ly/reactive-bot Actor (User) Shard Cluster Shardingとは  Actorを複数のNodeで分散管理 • Shardというグループ単位で管理 Node 1 Node 2 1 2 3 654 EDCBA
  10. 10. Copyright © 2016 TIS Inc. All rights reserved. 10 http://bit.ly/reactive-bot  自動ルーティング • どのNodeから送っても対応するActorへ届く Actor (User) Shard Cluster Shardingのメッセージング Node 1 Node 2 1 2 3 654 EDCBA User 3
  11. 11. Copyright © 2016 TIS Inc. All rights reserved. 11 http://bit.ly/reactive-bot スケーリング  Nodeの負荷を平滑化 Node 1 Node 2 1 2 3 654 EDCBA Node 3
  12. 12. Copyright © 2016 TIS Inc. All rights reserved. 12 http://bit.ly/reactive-bot スケーリング  Nodeの負荷を平滑化 • 自動的にShard移動 Node 1 Node 2 1 2 3 654 EDCBA Node 3
  13. 13. Copyright © 2016 TIS Inc. All rights reserved. 13 http://bit.ly/reactive-bot Shard移動時の問題  状態が消失 Node 1 Node 2 1 2 654 EDBA Node 3 3 C
  14. 14. Copyright © 2016 TIS Inc. All rights reserved. 14 http://bit.ly/reactive-bot Akka Persistence  Actorの持つ状態を永続化する Node 1 Node 2 1 2 3 654 EDCBA DB
  15. 15. Copyright © 2016 TIS Inc. All rights reserved. 15 http://bit.ly/reactive-bot Cluster Sharding + Persistence  状態を保持したままスケールが可能 • Shard移動時に状態をDBから復元 Node 1 Node 2 1 2 654 EDBA Node 3 3 C DB
  16. 16. Copyright © 2016 TIS Inc. All rights reserved. 16 http://bit.ly/reactive-bot まとめ  Akka Cluster Sharding • Actorの分散管理が可能  Akka Persistence • 状態の永続化が可能  Akka Cluster Sharding + Akka Persistence • スケールラブルなBOTの作成が可能
  17. 17. Copyright © 2016 TIS Inc. All rights reserved. 17 http://bit.ly/reactive-bot デモ  http://bit.ly/reactive-bot ※ 予告なく機能を変更・削除する可能性があります
  18. 18. Copyright © 2016 TIS Inc. All rights reserved. 18 http://bit.ly/reactive-bot リアクティブ・システム コンサルティングサービス TISはLightbendの認定コンサルティングパートナーです 宣伝 「Lightbend Reactive Platform」を利用した システムの構築を私たちがサポートします。 http://www.tis.jp/service_solution/goreactive/

×