SlideShare a Scribd company logo
1 of 18
Copyright © 2016 TIS Inc. All rights reserved.
Akkaを使った
スケーラブルなLINE BOT
TIS 株式会社
生産技術R&D室
杉本 貴史
Copyright © 2016 TIS Inc. All rights reserved. 2
http://bit.ly/reactive-bot
自己紹介
 TIS 株式会社
• 生産技術R&D室
 杉本 貴史(すぎもと たかし)
 仕事
• Lightbend Reactive Platformの活用検証
今日は出てきません
Copyright © 2016 TIS Inc. All rights reserved. 3
http://bit.ly/reactive-bot
LINE BOTとは
 4/7 トライアルAPI提供開始
LINE
アプリ
BOT
Server
通知
POST
LINE
Server
処
理
送信
受信
Copyright © 2016 TIS Inc. All rights reserved. 4
http://bit.ly/reactive-bot
お伝えしたいこと
枠組み(どうやって提供するか)
中身(BOTで何を提供するか)
スケール可能なLINE BOTを作成可能
Akka Cluster Sharding
Copyright © 2016 TIS Inc. All rights reserved. 5
http://bit.ly/reactive-bot
作ったもの
 電卓機能
 スケーリング可能
前回の答え
を使うなら
省略可
作成したBOT
Copyright © 2016 TIS Inc. All rights reserved. 6
http://bit.ly/reactive-bot
BOTの実現方法
 状態の保持
• Akka Actor
• Akka Persistence
 スケーラビリティ
• Akka Cluster Sharding
前回の答えを使うため
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
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
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
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
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
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
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
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
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
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の作成が可能
Copyright © 2016 TIS Inc. All rights reserved. 17
http://bit.ly/reactive-bot
デモ
 http://bit.ly/reactive-bot
※ 予告なく機能を変更・削除する可能性があります
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/

More Related Content

Viewers also liked

Scala戦士を増やせ
Scala戦士を増やせScala戦士を増やせ
Scala戦士を増やせYuto Suzuki
 
Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析Tanaka Yuichi
 
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだScalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだyoshiaki iwanaga
 
Scalaのコンパイルを3倍速くした話
Scalaのコンパイルを3倍速くした話Scalaのコンパイルを3倍速くした話
Scalaのコンパイルを3倍速くした話tod esking
 
GCPでCI環境を構築する
GCPでCI環境を構築するGCPでCI環境を構築する
GCPでCI環境を構築するToshihumi Anan
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jstakezoe
 
Spark MLlibでリコメンドエンジンを作った話
Spark MLlibでリコメンドエンジンを作った話Spark MLlibでリコメンドエンジンを作った話
Spark MLlibでリコメンドエンジンを作った話Koki Shibata
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at FlickrJohn Allspaw
 

Viewers also liked (10)

Scala戦士を増やせ
Scala戦士を増やせScala戦士を増やせ
Scala戦士を増やせ
 
Power of Scala
Power of ScalaPower of Scala
Power of Scala
 
Macros in nemerle
Macros in nemerleMacros in nemerle
Macros in nemerle
 
Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析
 
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだScalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
 
Scalaのコンパイルを3倍速くした話
Scalaのコンパイルを3倍速くした話Scalaのコンパイルを3倍速くした話
Scalaのコンパイルを3倍速くした話
 
GCPでCI環境を構築する
GCPでCI環境を構築するGCPでCI環境を構築する
GCPでCI環境を構築する
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
 
Spark MLlibでリコメンドエンジンを作った話
Spark MLlibでリコメンドエンジンを作った話Spark MLlibでリコメンドエンジンを作った話
Spark MLlibでリコメンドエンジンを作った話
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
 

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

【博多TECH塾】自分ごのみのチャットボットをつくるハンズオン
【博多TECH塾】自分ごのみのチャットボットをつくるハンズオン【博多TECH塾】自分ごのみのチャットボットをつくるハンズオン
【博多TECH塾】自分ごのみのチャットボットをつくるハンズオンKoji Teraoka
 
PEP x LINE WORKS Introduction
PEP x LINE WORKS IntroductionPEP x LINE WORKS Introduction
PEP x LINE WORKS IntroductionYuIkarashi
 
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuriバッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuriKazuki Negoro
 
Azure App Service Overview LT
Azure App Service Overview LTAzure App Service Overview LT
Azure App Service Overview LTKeiji Kamebuchi
 
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦Sho Yoshida
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotNobuyuki Matsui
 
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Nozomi Kurihara
 
ROSの紹介とPepperでの活用例
ROSの紹介とPepperでの活用例ROSの紹介とPepperでの活用例
ROSの紹介とPepperでの活用例Yuta Koga
 
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介Daisuke Ikeda
 
First server to_buid_trusted_sites
First server to_buid_trusted_sitesFirst server to_buid_trusted_sites
First server to_buid_trusted_siteskrf_ueki
 
「人々が支え合える街を創る」サービスを支えるログ基盤
「人々が支え合える街を創る」サービスを支えるログ基盤「人々が支え合える街を創る」サービスを支えるログ基盤
「人々が支え合える街を創る」サービスを支えるログ基盤Takashi OKUSAWA
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア leverages_event
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニアヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニアIsamu Suzuki
 
bitbankフロントエンド開発について
bitbankフロントエンド開発についてbitbankフロントエンド開発について
bitbankフロントエンド開発についてKou Matsumoto
 
バッチソリューションAzarea cluster 2016
バッチソリューションAzarea cluster 2016バッチソリューションAzarea cluster 2016
バッチソリューションAzarea cluster 2016AzareaCluster
 
Pepperで翻訳ソフトを作ってみた
Pepperで翻訳ソフトを作ってみたPepperで翻訳ソフトを作ってみた
Pepperで翻訳ソフトを作ってみたForex Robotics Co., Ltd.
 

Similar to Akkaを使った スケーラブルなLINE BOT (20)

【博多TECH塾】自分ごのみのチャットボットをつくるハンズオン
【博多TECH塾】自分ごのみのチャットボットをつくるハンズオン【博多TECH塾】自分ごのみのチャットボットをつくるハンズオン
【博多TECH塾】自分ごのみのチャットボットをつくるハンズオン
 
Enterpriseapi20160210
Enterpriseapi20160210Enterpriseapi20160210
Enterpriseapi20160210
 
Bitbucket Pipelinesについて
Bitbucket PipelinesについてBitbucket Pipelinesについて
Bitbucket Pipelinesについて
 
PEP x LINE WORKS Introduction
PEP x LINE WORKS IntroductionPEP x LINE WORKS Introduction
PEP x LINE WORKS Introduction
 
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuriバッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
 
Azure App Service Overview LT
Azure App Service Overview LTAzure App Service Overview LT
Azure App Service Overview LT
 
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
 
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
 
ROSの紹介とPepperでの活用例
ROSの紹介とPepperでの活用例ROSの紹介とPepperでの活用例
ROSの紹介とPepperでの活用例
 
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
 
First server to_buid_trusted_sites
First server to_buid_trusted_sitesFirst server to_buid_trusted_sites
First server to_buid_trusted_sites
 
「人々が支え合える街を創る」サービスを支えるログ基盤
「人々が支え合える街を創る」サービスを支えるログ基盤「人々が支え合える街を創る」サービスを支えるログ基盤
「人々が支え合える街を創る」サービスを支えるログ基盤
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニアヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
 
Tibco mashery資料
Tibco mashery資料Tibco mashery資料
Tibco mashery資料
 
bitbankフロントエンド開発について
bitbankフロントエンド開発についてbitbankフロントエンド開発について
bitbankフロントエンド開発について
 
PepperとWatson音声関連API
PepperとWatson音声関連APIPepperとWatson音声関連API
PepperとWatson音声関連API
 
バッチソリューションAzarea cluster 2016
バッチソリューションAzarea cluster 2016バッチソリューションAzarea cluster 2016
バッチソリューションAzarea cluster 2016
 
Pepperで翻訳ソフトを作ってみた
Pepperで翻訳ソフトを作ってみたPepperで翻訳ソフトを作ってみた
Pepperで翻訳ソフトを作ってみた
 

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

  • 1. Copyright © 2016 TIS Inc. All rights reserved. Akkaを使った スケーラブルなLINE BOT TIS 株式会社 生産技術R&D室 杉本 貴史
  • 2. Copyright © 2016 TIS Inc. All rights reserved. 2 http://bit.ly/reactive-bot 自己紹介  TIS 株式会社 • 生産技術R&D室  杉本 貴史(すぎもと たかし)  仕事 • Lightbend Reactive Platformの活用検証 今日は出てきません
  • 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. Copyright © 2016 TIS Inc. All rights reserved. 4 http://bit.ly/reactive-bot お伝えしたいこと 枠組み(どうやって提供するか) 中身(BOTで何を提供するか) スケール可能なLINE BOTを作成可能 Akka Cluster Sharding
  • 5. Copyright © 2016 TIS Inc. All rights reserved. 5 http://bit.ly/reactive-bot 作ったもの  電卓機能  スケーリング可能 前回の答え を使うなら 省略可 作成したBOT
  • 6. Copyright © 2016 TIS Inc. All rights reserved. 6 http://bit.ly/reactive-bot BOTの実現方法  状態の保持 • Akka Actor • Akka Persistence  スケーラビリティ • Akka Cluster Sharding 前回の答えを使うため
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Copyright © 2016 TIS Inc. All rights reserved. 17 http://bit.ly/reactive-bot デモ  http://bit.ly/reactive-bot ※ 予告なく機能を変更・削除する可能性があります
  • 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/

Editor's Notes

  1. なぜこの要件にしたか? 状態を持つことができればできることの幅が広がるから。
  2. どのUserActorがどのShard, Nodeにいるかの検索はCluster Shardingがやってくれる
  3. どのUserActorがどのShard, Nodeにいるかの検索はCluster Shardingがやってくれる
  4. どのUserActorがどのShard, Nodeにいるかの検索はCluster Shardingがやってくれる
  5. どのUserActorがどのShard, Nodeにいるかの検索はCluster Shardingがやってくれる
  6. どのUserActorがどのShard, Nodeにいるかの検索はCluster Shardingがやってくれる
  7. BOTの基盤にはCluster Shardingを!