SlideShare a Scribd company logo
Copyright © 2015 TIS Inc. All rights reserved.
Scala関西Summit2015
Typesafe  Reactive  Platformで作る
Reactive  System
2015.8.1
前出 祐吾
Copyright © 2015 TIS Inc. All rights reserved. 2
自己紹介
■ @yugolf  
■ 甲賀  ▶ 京都   ▶ 東京  
!
■ TIS株式会社  
■ 生産革新本部 生産革新部 生産技術R&D室  
■ 社内向けエンジニアリング基盤の整備 ▶▶
Copyright © 2015 TIS Inc. All rights reserved. 3
TIS、リアクティブコンサルはじめました
http://www.tis.jp/service_solution/goreactive/
Copyright © 2015 TIS Inc. All rights reserved. 4
Agenda
1. 	
  Reactive	
  Systemとは	
  
2. 	
  Reactive	
  Systemのための技術	
  
3. 	
  プチReactive体験
Copyright © 2015 TIS Inc. All rights reserved. 5
1.    Reactive	
  Systemとは
Copyright © 2015 TIS Inc. All rights reserved. 6
本日の話
http://www.reactivemanifesto.org/
Reactive	
  Programming:	
  
データの流れ(ストリーム)とデータの値の変化の伝播にフォーカス
したプログラムの設計モデル。	
  
・・・ の話ではない。
Reactive	
  System:
Copyright © 2015 TIS Inc. All rights reserved. 7
Reactive  manifesto
絵	
  
!
即応性	
  
弾力性	
  
耐障害性	
  
メッセージ駆動
http://www.reactivemanifesto.org/ja
Copyright © 2015 TIS Inc. All rights reserved. 8
アプリケーションへの高まる要求
50台のサーバで動かしていたけど、クラウド上で
1000コアの環境を作りたいんだ。
レスポンスを得るのに3秒かかるけど、
500ミリ秒くらいにしたいのよ。	
  
それと、年1回の2時間のメンテナンス
なんとかならないかしら。
最初は100ギガくらいだったけど、そ
ろそろペタ行くんじゃないかな。
Copyright © 2015 TIS Inc. All rights reserved. 9
Reactive  Systemとは
即応性と、耐障害性と、弾力性と、メッセージ駆動とを備えたシステム
http://www.reactivemanifesto.org/ja
Copyright © 2015 TIS Inc. All rights reserved. 10
Reactive  Systemの価値
届けたい価値
手段
支える原理
高レスポンス  
Responsive
伸縮性  
Elastic
耐障害性  
Resilient
メッセージ駆動  
Message-driven
Copyright © 2015 TIS Inc. All rights reserved. 11
Responsive
ユーザーの要求に迅速にレスポンスするシステム
高レスポンス  
Responsive
伸縮性  
Elastic
耐障害性  
Resilient
メッセージ駆動  
Message-driven
届けたい価値
手段
支える原理
Copyright © 2015 TIS Inc. All rights reserved. 12
Elastic
通常の負荷時だけでなく、一時的な高負荷状況でも、変動するワークロードに応
じて割り当てるリソースを増加・減少させることで応答時間を一定水準に保つ	
  
高レスポンス  
Responsive
伸縮性  
Elastic
耐障害性  
Resilient
メッセージ駆動  
Message-driven
届けたい価値
手段
支える原理
Copyright © 2015 TIS Inc. All rights reserved. 13
Resilient
部分的な障害が発生した時にもシステム全体を危険にさらすことなく回復さ
せる高レスポンスを維持する
高レスポンス  
Responsive
伸縮性  
Elastic
耐障害性  
Resilient
メッセージ駆動  
Message-driven
届けたい価値
手段
支える原理
Copyright © 2015 TIS Inc. All rights reserved. 14
Message  Driven
メッセージパッシングにより、コンポーネント間を疎結合にする
高レスポンス  
Responsive
伸縮性  
Elastic
耐障害性  
Resilient
メッセージ駆動  
Message-driven
届けたい価値
手段
支える原理
Copyright © 2015 TIS Inc. All rights reserved. 15
2.  Reactive	
  Systemのための技術
Copyright © 2015 TIS Inc. All rights reserved. 16
Typesafe  Reactive  Platform
JavaVM
アプリケーション
	
  AkkaPlay	
  Framework
Scala Java
Slick
高レスポンス  
Responsive
伸縮性  
Elastic
耐障害性  
Resilient
メッセージ駆動  
Message-driven
Copyright © 2015 TIS Inc. All rights reserved. 17
Play  Framework
• 非同期/ノンブロッキング	
  
• WebSocketサポート	
  
• Railsのような使いやすさ
Copyright © 2015 TIS Inc. All rights reserved. 18
これまで
def index = Action { implicit request =>

Ok(views.html.index())

}
クライアント サーバ
高レスポンス  
Responsive
ブロッキ
ング
Copyright © 2015 TIS Inc. All rights reserved. 19
Blocking
コーヒーください。
コーヒー1つ∼
は∼い
できた∼
・・・
コーヒーどうぞ∼	
  
100円です。
コーヒーください。
コーヒー1つ∼
Block
Copyright © 2015 TIS Inc. All rights reserved. 20
Non-blocking
コーヒーください。
コーヒー1つ∼
は∼い
コーヒーどうぞ∼	
  
コーヒーください。
コーヒー1つ∼
100円です。
100円です。 は∼い
できた∼
コーヒーください。
Copyright © 2015 TIS Inc. All rights reserved. 21
Reactive:  迅速なレスポンス
def index = Action.async {

val customer: Future[Customer] = getCustomer()

customer.map(c => Ok("Customer: " + c))

}
クライアント サーバ サービス
高レスポンス  
Responsive
ノンブロッ
キング
ノンブロッ
キング
Copyright © 2015 TIS Inc. All rights reserved. 22
Reactive++  :サーバからのプッシュ
クライアント サーバ
def socket = WebSocket.using[String] { request =>



// Log events to the console

val in = Iteratee.foreach[String](println).map { _ =>

println("Disconnected")

}



// Send a single 'Hello!' message

val out = Enumerator("Hello!")



(in, out)

}
高レスポンス  
Responsive
ノンブロッ
キング
WebSocket
https://www.playframework.com/documentation/2.4.x/ScalaWebSockets
Copyright © 2015 TIS Inc. All rights reserved. 23
Akka
• 並行処理と分散処理をサポートするActor	
  System	
  
• Supervision	
  Model	
  
• 位置透過性
Copyright © 2015 TIS Inc. All rights reserved. 24
Actor  System
sender
Actor
メッセージ駆動  
Message-driven
Mailbox
Mailbox
Copyright © 2015 TIS Inc. All rights reserved. 25
Reactive+++:  Actor  Model
def socket = WebSocket.acceptWithActor[String, String] { request => out
=>

MyWebSocketActor.props(out)

}
object MyWebSocketActor {

def props(out: ActorRef) = Props(new MyWebSocketActor(out))

}



class MyWebSocketActor(out: ActorRef) extends Actor {

def receive = {

case msg: String =>

out ! ("I received your message: " + msg)

}

}
クライアント
コントローラ
Actor
伸縮性  
Elastic
耐障害性  
Resilient
ノンブロッ
キング
WebSocket
Actor
https://www.playframework.com/documentation/2.4.x/ScalaWebSockets
Copyright © 2015 TIS Inc. All rights reserved. 26
Supervision  Modelで障害に強いシステムに
override val supervisorStrategy: SupervisorStrategy =

AllForOneStrategy(maxNrOfRetries = 100, withinTimeRange = 1 minute) {

case _ => Restart

}
スーパー	
  
バイザー
サブスーパー	
  
バイザー
Actor
Actor Actor
運命共同体	
  
-­‐OneForOne	
  
-­‐AllForOne
障害を外へ波及させない
耐障害性  
Resilient
子アクターの監視役
Copyright © 2015 TIS Inc. All rights reserved. 27
let	
  it	
  crash
Copyright © 2015 TIS Inc. All rights reserved. 28
Distribute
https://conductr.typesafe.com/docs/1.0.x/DeployingApplication
Copyright © 2015 TIS Inc. All rights reserved. 29
Reactive++++:  Actorを増減させ容易にスケール
クライアント
コントローラ
Actor
Actor
Actor
ルーティングは様々	
  
• ランダム	
  
• ラウンドロビン	
  
• ブロードキャスト	
  
• 早いの採用
伸縮性  
Elastic
ノンブロッ
キング
WebSocket
Actor
Copyright © 2015 TIS Inc. All rights reserved. 30
Reactive  Slick
Slick3
• FRM(Functional	
  Relational	
  Mapping)ライブラリ	
  
• Scalaのコレクションを扱うかのようにデータベースにアクセス出来る	
  
• DB処理は非同期に実行される
Copyright © 2015 TIS Inc. All rights reserved. 31
Supported  Databases
• MySQL	
  
• PostgreSQL	
  
• H2	
  
• HSQLDB/HyperSQL	
  
• SQLite	
  
• Derby/JavaDB	
  
• Microsoft	
  Access
• DB2	
  
• Microsoft	
  SQL	
  Server	
  
• Oracle
Slick	
  Extensions
Copyright © 2015 TIS Inc. All rights reserved. 32
Reactive+++++:  端から端までReactive
def search = Action.async { implicit request =>
…

val f:Future[Seq[EventRow]] = db.run(Events.filter(form))
f.map {

case events if (events.length > 0) =>

Ok(views.html.sample.search(
form.bindFromRequest, events))

case _ =>

… 高レスポンス  
Responsive
クライアント
コントローラ
ノンブロッ
キング
WebSocket
Actor
ノンブロッ
キング
Actor
データベース
Copyright © 2015 TIS Inc. All rights reserved. 33
端から端までReactive
基本Asynchronous、	
  
どこでWaitするかをデザインする
Copyright © 2015 TIS Inc. All rights reserved. 34
Reactive++++++:  Reactive  Streams
def search = Action.async { implicit request =>
…

val q = for(e <- Event) yield e.eventNm
val publisher:DatabasePublisher[String] = db.stream(q.result)
publisher.foreach {e => println(e)}
…
高レスポンス  
Responsive
クライアント
コントローラ
ノンブロッ
キング
WebSocket
Actor
ノンブロッ
キング
データベース
Actor
Copyright © 2015 TIS Inc. All rights reserved. 35
3.  プチReactive体験
Copyright © 2015 TIS Inc. All rights reserved. 36
プチReactive体験
発電してますか?
Copyright © 2015 TIS Inc. All rights reserved. 37
Reactive Solar Farm Monitor Solar Farm
① 何らかの原因で!
発電力が下がる
③ 故障が検知された!
ソーラパネルの!
アラートを表示
ID:	
  45412
② 全ソーラーパネルの!
電力(W)から故障!
しているパネルを検知
ソーラーパネルがそれぞれ定期的に!
発電した電力(W)のデータを送信!
・毎秒送信!
・パネル数は1万∼10万枚を想定

ID:	
  45412
Reactive  Solar  Farm  Monitor
Icon	
  made	
  by	
  Freepik	
  from	
  www.flaticon.com	
  is	
  licensed	
  under	
  CC	
  BY	
  3.0
Copyright © 2015 TIS Inc. All rights reserved. 38
Architecture
Monitor Analyzer
Simulator
http!
&!
WebSocket
Subscriber
Publisher
Broker
Copyright © 2015 TIS Inc. All rights reserved. 39
Message  Passing
Sum	
  
Calculator
Sum	
  
Calculator InspectorInspector
Packet
Mean Alert
Snapshot
Packet
Inspection	
  
Channel
Buffer	
  
Channel
Socket
Buffer
Broker
Execute
Take

Snapshot
Collect

Ghosts
Partial	
  Sum
Inspection	
  
Manager
Sum	
  
Calculator
Execute
Inspector
Done
Sample Sample
AnalyzerProxy
Mean	
  
Calculator
Execute
Measurement
Measurement
SocketSocket
Copyright © 2015 TIS Inc. All rights reserved. 40
Supervision  Model
AllForOne

Strategy
OneForOne

Strategy
Analysis	
  
Supervisor
Calculation	
  
Supervisor
Inspection	
  
Manager
Inspector
Inspection	
  
Channel
BufferBuffer	
  
Channel
Sum	
  
Calculator
Mean	
  
Calculator
Inspection	
  
Supervisor
AllForOne

Strategy
User
Copyright © 2015 TIS Inc. All rights reserved. 41
プチReactive体験  -  Responsive
ユーザーの要求に可能な限り迅速にレスポンスするシステム
高レスポンス  
Responsive
伸縮性  
Elastic
耐障害性  
Resilient
メッセージ駆動  
Message-driven
Copyright © 2015 TIS Inc. All rights reserved. 42
プチReactive体験
支えているのはメッセージ駆動のアーキテクチャ
Copyright © 2015 TIS Inc. All rights reserved. 43
4.  Go  Reactive  ×  3
Copyright © 2015 TIS Inc. All rights reserved. 44
Go  Reactive  1/3
• アーキクチャの詳細	
  
• 時間の都合で出来なかったデモ
http://reactive-­‐shinjuku.connpass.com/event/17991/
Copyright © 2015 TIS Inc. All rights reserved. 45
Go  Reactive  2/3
http://www.tis.jp/service_solution/goreactive/
go-­‐reactive@tis.co.jpリアクティブに興味のある方はご連絡下さい。
Copyright © 2015 TIS Inc. All rights reserved. 46
Go  Reactive  3/3
ソースコードはGitHubで公開しています。
太陽光発電に興味のある方はご連絡下さい。
https://github.com/tech-­‐sketch/reactive-­‐solar-­‐farm-­‐monitor
go-­‐reactive@tis.co.jp
THANK YOU

More Related Content

PDF
再帰で脱Javaライク
TIS Inc.
 
PDF
10分で分かるリアクティブシステム
TIS Inc.
 
PDF
リアクティブシステムとAkka
TIS Inc.
 
PDF
可用性を突き詰めたリアクティブシステム
TIS Inc.
 
PDF
Starting Reactive Systems with Lerna #reactive_shinjuku
TIS Inc.
 
PPTX
Ansible・ServerspecベースのOSS開発のCIの成功・失敗談
光平 八代
 
PPTX
Ansible・Serverspecベースの自動化フレームワークSHIFT wareの紹介
光平 八代
 
PPTX
ニイヨンサンロクゴ
Yutaka Hiroyama
 
再帰で脱Javaライク
TIS Inc.
 
10分で分かるリアクティブシステム
TIS Inc.
 
リアクティブシステムとAkka
TIS Inc.
 
可用性を突き詰めたリアクティブシステム
TIS Inc.
 
Starting Reactive Systems with Lerna #reactive_shinjuku
TIS Inc.
 
Ansible・ServerspecベースのOSS開発のCIの成功・失敗談
光平 八代
 
Ansible・Serverspecベースの自動化フレームワークSHIFT wareの紹介
光平 八代
 
ニイヨンサンロクゴ
Yutaka Hiroyama
 

What's hot (20)

PPTX
Diskless Compute Nodeを使ったImmutable OpenStack
Yuki Yamashita
 
PDF
商用導入実績世界1位! ミランティスが提供するOpenStackとお客様の導入事例
Ataru Shimodaira
 
PDF
OpenStack東京サミットに向けて
shintaro mizuno
 
PDF
OSC.Cloud 2012 インフラエンジニアがOpenStackを学ぶべきたった一つの理由
irix_jp
 
PDF
ベンダーロックインフリーのビジネスクラウドの世界
ミランティスジャパン株式会社
 
PPTX
ベンダーロックインフリーのビジネスクラウドの世界
ミランティスジャパン株式会社
 
PDF
OpenStackに必要な技術スキルとは
ミランティスジャパン株式会社
 
PPTX
OpenStack summit report 2016 in barcelona
Yuki Yamashita
 
PDF
Azure サポート チームの現場からお届けする落ちないサービスのために
Teppei Ishii
 
PDF
デバイスパッケージを開発してみた @沖縄オープンラボ
Takao Setaka
 
PPTX
OSSのクラウド基盤 OpenStack / CloudStack
VirtualTech Japan Inc.
 
PPTX
Interop2016-openstack-user-group-mizuno
shintaro mizuno
 
PPTX
OpenStackを使用するメリット
ミランティスジャパン株式会社
 
PDF
Why SoftLayer? なぜ、EC/通販統合パッケージリーダーのエルテックスは、SoftLayerを選んだのか?
softlayerjp
 
PDF
OpenStack Days Tokyo 2016 HPE Presentation
Masanori Itoh
 
PDF
【Interop Tokyo 2015】 DC 3: Cisco ACI と OpenStack / Cisco UCS Director
シスコシステムズ合同会社
 
PDF
SIOS iQ:機械学習 I T O A VMware仮想環境の性能問題の原因分析 迅速な問題解決と未然防止を実現
softlayerjp
 
PDF
グローバルファイル転送のベストプラクティス
softlayerjp
 
PDF
OpenStackネットワーク実装の現状と運用 自動化開発の実際 第一部: OpenStackネットワーク実装の現状 – OpenStack最新情報セミナ...
VirtualTech Japan Inc.
 
PDF
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)
VirtualTech Japan Inc.
 
Diskless Compute Nodeを使ったImmutable OpenStack
Yuki Yamashita
 
商用導入実績世界1位! ミランティスが提供するOpenStackとお客様の導入事例
Ataru Shimodaira
 
OpenStack東京サミットに向けて
shintaro mizuno
 
OSC.Cloud 2012 インフラエンジニアがOpenStackを学ぶべきたった一つの理由
irix_jp
 
ベンダーロックインフリーのビジネスクラウドの世界
ミランティスジャパン株式会社
 
ベンダーロックインフリーのビジネスクラウドの世界
ミランティスジャパン株式会社
 
OpenStackに必要な技術スキルとは
ミランティスジャパン株式会社
 
OpenStack summit report 2016 in barcelona
Yuki Yamashita
 
Azure サポート チームの現場からお届けする落ちないサービスのために
Teppei Ishii
 
デバイスパッケージを開発してみた @沖縄オープンラボ
Takao Setaka
 
OSSのクラウド基盤 OpenStack / CloudStack
VirtualTech Japan Inc.
 
Interop2016-openstack-user-group-mizuno
shintaro mizuno
 
OpenStackを使用するメリット
ミランティスジャパン株式会社
 
Why SoftLayer? なぜ、EC/通販統合パッケージリーダーのエルテックスは、SoftLayerを選んだのか?
softlayerjp
 
OpenStack Days Tokyo 2016 HPE Presentation
Masanori Itoh
 
【Interop Tokyo 2015】 DC 3: Cisco ACI と OpenStack / Cisco UCS Director
シスコシステムズ合同会社
 
SIOS iQ:機械学習 I T O A VMware仮想環境の性能問題の原因分析 迅速な問題解決と未然防止を実現
softlayerjp
 
グローバルファイル転送のベストプラクティス
softlayerjp
 
OpenStackネットワーク実装の現状と運用 自動化開発の実際 第一部: OpenStackネットワーク実装の現状 – OpenStack最新情報セミナ...
VirtualTech Japan Inc.
 
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)
VirtualTech Japan Inc.
 
Ad

Viewers also liked (20)

PDF
20160128 jjug Nightセミナー_Git実践入門
Mizuki Ugajin
 
PDF
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
Yuta Okamoto
 
PDF
SIerもはじめる わたしたちのDevOps #jjug_ccc
Mizuki Ugajin
 
PDF
たとえ日本人同士でも必要な異文化理解力
Yoshitaka Kawashima
 
PDF
第三回マイクロサービスアーキテクチャ読書会(後半)
Mizuki Ugajin
 
PDF
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Yoshimura Soichiro
 
PPTX
CQRS+ESをAkka Persistenceを使って実装してみる。
Matsushita Satoshi
 
PDF
Msa読書会#3前半
健仁 天沼
 
PPTX
JIRA / Confluence の 必須プラグインはこれだ
Narichika Kajihara
 
PDF
僕のチームビルディングには、Confluenceが必要だった
Narichika Kajihara
 
PDF
Preparing for distributed system failures using akka #ScalaMatsuri
TIS Inc.
 
PDF
⼤企業で実現するイマドキの内製開発
NTT Communications Technology Development
 
PDF
甲賀流Jenkins活用術
TIS Inc.
 
PDF
Effective Akka読書会2
TIS Inc.
 
PDF
akka-doc-ja
TIS Inc.
 
PDF
Akkaで実現するステートフルでスケーラブルなアーキテクチャ
TIS Inc.
 
PDF
Typesafe Reactive Platformで作るReactive System入門
TIS Inc.
 
PDF
バッチではじめてAkkaを使ってみた (refined)
Koji Agawa
 
PDF
[豆ナイト]Java small object programming
Yuichi Hasegawa
 
PDF
自己紹介からはじめよう
boostuposaka
 
20160128 jjug Nightセミナー_Git実践入門
Mizuki Ugajin
 
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
Yuta Okamoto
 
SIerもはじめる わたしたちのDevOps #jjug_ccc
Mizuki Ugajin
 
たとえ日本人同士でも必要な異文化理解力
Yoshitaka Kawashima
 
第三回マイクロサービスアーキテクチャ読書会(後半)
Mizuki Ugajin
 
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Yoshimura Soichiro
 
CQRS+ESをAkka Persistenceを使って実装してみる。
Matsushita Satoshi
 
Msa読書会#3前半
健仁 天沼
 
JIRA / Confluence の 必須プラグインはこれだ
Narichika Kajihara
 
僕のチームビルディングには、Confluenceが必要だった
Narichika Kajihara
 
Preparing for distributed system failures using akka #ScalaMatsuri
TIS Inc.
 
⼤企業で実現するイマドキの内製開発
NTT Communications Technology Development
 
甲賀流Jenkins活用術
TIS Inc.
 
Effective Akka読書会2
TIS Inc.
 
akka-doc-ja
TIS Inc.
 
Akkaで実現するステートフルでスケーラブルなアーキテクチャ
TIS Inc.
 
Typesafe Reactive Platformで作るReactive System入門
TIS Inc.
 
バッチではじめてAkkaを使ってみた (refined)
Koji Agawa
 
[豆ナイト]Java small object programming
Yuichi Hasegawa
 
自己紹介からはじめよう
boostuposaka
 
Ad

Similar to Typesafe Reactive Platformで作るReactive System (20)

PPTX
Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
cloudconductor
 
PDF
AWSオンリーで実現するIoTクラウド基盤
Godai Nakamura
 
PDF
MySQL Technology Cafe #12 MDS HA検証 ~パラメータからパフォーマンスまで~
オラクルエンジニア通信
 
PDF
第8回oss運用管理勉強会 Zabbix入門&Zabbix3.0先取り紹介
Daisuke Ikeda
 
PPTX
Spring I/O 2015 報告
Takuya Iwatsuka
 
PDF
Zabbix監視運用業務の自動化事例
OSSラボ株式会社
 
PPTX
Reactor によるデータインジェスチョン
Akihiro Kitada
 
PDF
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
Hidemasa Togashi
 
PDF
Contiv
Shogo Katsurada
 
PDF
【HinemosWorld2015】B2-4_HinemosとConsulで実現する運用自動化のご提案
Hinemos
 
PDF
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコシステムズ合同会社
 
PDF
Internet of Toilet / Jaws festa 2016
Godai Nakamura
 
PDF
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
JPCERT Coordination Center
 
PDF
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
decode2016
 
PDF
スタートアップがAWSを使うべき3つの理由
Serverworks Co.,Ltd.
 
PDF
JavaからAkkaハンズオン
TIS Inc.
 
PDF
[db tech showcase Tokyo 2015] D35:高トランザクションを実現するスケーラブルRDBMS技術 by 日本電気株式会社 並木悠太
Insight Technology, Inc.
 
PDF
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
 
PDF
20190515 hccjp hybrid_strategy
Osamu Takazoe
 
PPTX
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
cloudconductor
 
Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
cloudconductor
 
AWSオンリーで実現するIoTクラウド基盤
Godai Nakamura
 
MySQL Technology Cafe #12 MDS HA検証 ~パラメータからパフォーマンスまで~
オラクルエンジニア通信
 
第8回oss運用管理勉強会 Zabbix入門&Zabbix3.0先取り紹介
Daisuke Ikeda
 
Spring I/O 2015 報告
Takuya Iwatsuka
 
Zabbix監視運用業務の自動化事例
OSSラボ株式会社
 
Reactor によるデータインジェスチョン
Akihiro Kitada
 
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
Hidemasa Togashi
 
【HinemosWorld2015】B2-4_HinemosとConsulで実現する運用自動化のご提案
Hinemos
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコシステムズ合同会社
 
Internet of Toilet / Jaws festa 2016
Godai Nakamura
 
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
JPCERT Coordination Center
 
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
decode2016
 
スタートアップがAWSを使うべき3つの理由
Serverworks Co.,Ltd.
 
JavaからAkkaハンズオン
TIS Inc.
 
[db tech showcase Tokyo 2015] D35:高トランザクションを実現するスケーラブルRDBMS技術 by 日本電気株式会社 並木悠太
Insight Technology, Inc.
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
 
20190515 hccjp hybrid_strategy
Osamu Takazoe
 
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
cloudconductor
 

More from TIS Inc. (6)

PDF
AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現
TIS Inc.
 
PDF
Reactive Systems that focus on High Availability with Lerna
TIS Inc.
 
PDF
EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜
TIS Inc.
 
PDF
Akkaの並行性
TIS Inc.
 
PDF
Akka in Action workshop #ScalaMatsuri 2018
TIS Inc.
 
PDF
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
TIS Inc.
 
AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現
TIS Inc.
 
Reactive Systems that focus on High Availability with Lerna
TIS Inc.
 
EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜
TIS Inc.
 
Akkaの並行性
TIS Inc.
 
Akka in Action workshop #ScalaMatsuri 2018
TIS Inc.
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
TIS Inc.
 

Recently uploaded (11)

PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 

Typesafe Reactive Platformで作るReactive System

  • 1. Copyright © 2015 TIS Inc. All rights reserved. Scala関西Summit2015 Typesafe  Reactive  Platformで作る Reactive  System 2015.8.1 前出 祐吾
  • 2. Copyright © 2015 TIS Inc. All rights reserved. 2 自己紹介 ■ @yugolf   ■ 甲賀  ▶ 京都   ▶ 東京   ! ■ TIS株式会社   ■ 生産革新本部 生産革新部 生産技術R&D室   ■ 社内向けエンジニアリング基盤の整備 ▶▶
  • 3. Copyright © 2015 TIS Inc. All rights reserved. 3 TIS、リアクティブコンサルはじめました http://www.tis.jp/service_solution/goreactive/
  • 4. Copyright © 2015 TIS Inc. All rights reserved. 4 Agenda 1.  Reactive  Systemとは   2.  Reactive  Systemのための技術   3.  プチReactive体験
  • 5. Copyright © 2015 TIS Inc. All rights reserved. 5 1.    Reactive  Systemとは
  • 6. Copyright © 2015 TIS Inc. All rights reserved. 6 本日の話 http://www.reactivemanifesto.org/ Reactive  Programming:   データの流れ(ストリーム)とデータの値の変化の伝播にフォーカス したプログラムの設計モデル。   ・・・ の話ではない。 Reactive  System:
  • 7. Copyright © 2015 TIS Inc. All rights reserved. 7 Reactive  manifesto 絵   ! 即応性   弾力性   耐障害性   メッセージ駆動 http://www.reactivemanifesto.org/ja
  • 8. Copyright © 2015 TIS Inc. All rights reserved. 8 アプリケーションへの高まる要求 50台のサーバで動かしていたけど、クラウド上で 1000コアの環境を作りたいんだ。 レスポンスを得るのに3秒かかるけど、 500ミリ秒くらいにしたいのよ。   それと、年1回の2時間のメンテナンス なんとかならないかしら。 最初は100ギガくらいだったけど、そ ろそろペタ行くんじゃないかな。
  • 9. Copyright © 2015 TIS Inc. All rights reserved. 9 Reactive  Systemとは 即応性と、耐障害性と、弾力性と、メッセージ駆動とを備えたシステム http://www.reactivemanifesto.org/ja
  • 10. Copyright © 2015 TIS Inc. All rights reserved. 10 Reactive  Systemの価値 届けたい価値 手段 支える原理 高レスポンス   Responsive 伸縮性   Elastic 耐障害性   Resilient メッセージ駆動   Message-driven
  • 11. Copyright © 2015 TIS Inc. All rights reserved. 11 Responsive ユーザーの要求に迅速にレスポンスするシステム 高レスポンス   Responsive 伸縮性   Elastic 耐障害性   Resilient メッセージ駆動   Message-driven 届けたい価値 手段 支える原理
  • 12. Copyright © 2015 TIS Inc. All rights reserved. 12 Elastic 通常の負荷時だけでなく、一時的な高負荷状況でも、変動するワークロードに応 じて割り当てるリソースを増加・減少させることで応答時間を一定水準に保つ   高レスポンス   Responsive 伸縮性   Elastic 耐障害性   Resilient メッセージ駆動   Message-driven 届けたい価値 手段 支える原理
  • 13. Copyright © 2015 TIS Inc. All rights reserved. 13 Resilient 部分的な障害が発生した時にもシステム全体を危険にさらすことなく回復さ せる高レスポンスを維持する 高レスポンス   Responsive 伸縮性   Elastic 耐障害性   Resilient メッセージ駆動   Message-driven 届けたい価値 手段 支える原理
  • 14. Copyright © 2015 TIS Inc. All rights reserved. 14 Message  Driven メッセージパッシングにより、コンポーネント間を疎結合にする 高レスポンス   Responsive 伸縮性   Elastic 耐障害性   Resilient メッセージ駆動   Message-driven 届けたい価値 手段 支える原理
  • 15. Copyright © 2015 TIS Inc. All rights reserved. 15 2.  Reactive  Systemのための技術
  • 16. Copyright © 2015 TIS Inc. All rights reserved. 16 Typesafe  Reactive  Platform JavaVM アプリケーション  AkkaPlay  Framework Scala Java Slick 高レスポンス   Responsive 伸縮性   Elastic 耐障害性   Resilient メッセージ駆動   Message-driven
  • 17. Copyright © 2015 TIS Inc. All rights reserved. 17 Play  Framework • 非同期/ノンブロッキング   • WebSocketサポート   • Railsのような使いやすさ
  • 18. Copyright © 2015 TIS Inc. All rights reserved. 18 これまで def index = Action { implicit request =>
 Ok(views.html.index())
 } クライアント サーバ 高レスポンス   Responsive ブロッキ ング
  • 19. Copyright © 2015 TIS Inc. All rights reserved. 19 Blocking コーヒーください。 コーヒー1つ∼ は∼い できた∼ ・・・ コーヒーどうぞ∼   100円です。 コーヒーください。 コーヒー1つ∼ Block
  • 20. Copyright © 2015 TIS Inc. All rights reserved. 20 Non-blocking コーヒーください。 コーヒー1つ∼ は∼い コーヒーどうぞ∼   コーヒーください。 コーヒー1つ∼ 100円です。 100円です。 は∼い できた∼ コーヒーください。
  • 21. Copyright © 2015 TIS Inc. All rights reserved. 21 Reactive:  迅速なレスポンス def index = Action.async {
 val customer: Future[Customer] = getCustomer()
 customer.map(c => Ok("Customer: " + c))
 } クライアント サーバ サービス 高レスポンス   Responsive ノンブロッ キング ノンブロッ キング
  • 22. Copyright © 2015 TIS Inc. All rights reserved. 22 Reactive++  :サーバからのプッシュ クライアント サーバ def socket = WebSocket.using[String] { request =>
 
 // Log events to the console
 val in = Iteratee.foreach[String](println).map { _ =>
 println("Disconnected")
 }
 
 // Send a single 'Hello!' message
 val out = Enumerator("Hello!")
 
 (in, out)
 } 高レスポンス   Responsive ノンブロッ キング WebSocket https://www.playframework.com/documentation/2.4.x/ScalaWebSockets
  • 23. Copyright © 2015 TIS Inc. All rights reserved. 23 Akka • 並行処理と分散処理をサポートするActor  System   • Supervision  Model   • 位置透過性
  • 24. Copyright © 2015 TIS Inc. All rights reserved. 24 Actor  System sender Actor メッセージ駆動   Message-driven Mailbox Mailbox
  • 25. Copyright © 2015 TIS Inc. All rights reserved. 25 Reactive+++:  Actor  Model def socket = WebSocket.acceptWithActor[String, String] { request => out =>
 MyWebSocketActor.props(out)
 } object MyWebSocketActor {
 def props(out: ActorRef) = Props(new MyWebSocketActor(out))
 }
 
 class MyWebSocketActor(out: ActorRef) extends Actor {
 def receive = {
 case msg: String =>
 out ! ("I received your message: " + msg)
 }
 } クライアント コントローラ Actor 伸縮性   Elastic 耐障害性   Resilient ノンブロッ キング WebSocket Actor https://www.playframework.com/documentation/2.4.x/ScalaWebSockets
  • 26. Copyright © 2015 TIS Inc. All rights reserved. 26 Supervision  Modelで障害に強いシステムに override val supervisorStrategy: SupervisorStrategy =
 AllForOneStrategy(maxNrOfRetries = 100, withinTimeRange = 1 minute) {
 case _ => Restart
 } スーパー   バイザー サブスーパー   バイザー Actor Actor Actor 運命共同体   -­‐OneForOne   -­‐AllForOne 障害を外へ波及させない 耐障害性   Resilient 子アクターの監視役
  • 27. Copyright © 2015 TIS Inc. All rights reserved. 27 let  it  crash
  • 28. Copyright © 2015 TIS Inc. All rights reserved. 28 Distribute https://conductr.typesafe.com/docs/1.0.x/DeployingApplication
  • 29. Copyright © 2015 TIS Inc. All rights reserved. 29 Reactive++++:  Actorを増減させ容易にスケール クライアント コントローラ Actor Actor Actor ルーティングは様々   • ランダム   • ラウンドロビン   • ブロードキャスト   • 早いの採用 伸縮性   Elastic ノンブロッ キング WebSocket Actor
  • 30. Copyright © 2015 TIS Inc. All rights reserved. 30 Reactive  Slick Slick3 • FRM(Functional  Relational  Mapping)ライブラリ   • Scalaのコレクションを扱うかのようにデータベースにアクセス出来る   • DB処理は非同期に実行される
  • 31. Copyright © 2015 TIS Inc. All rights reserved. 31 Supported  Databases • MySQL   • PostgreSQL   • H2   • HSQLDB/HyperSQL   • SQLite   • Derby/JavaDB   • Microsoft  Access • DB2   • Microsoft  SQL  Server   • Oracle Slick  Extensions
  • 32. Copyright © 2015 TIS Inc. All rights reserved. 32 Reactive+++++:  端から端までReactive def search = Action.async { implicit request => …
 val f:Future[Seq[EventRow]] = db.run(Events.filter(form)) f.map {
 case events if (events.length > 0) =>
 Ok(views.html.sample.search( form.bindFromRequest, events))
 case _ =>
 … 高レスポンス   Responsive クライアント コントローラ ノンブロッ キング WebSocket Actor ノンブロッ キング Actor データベース
  • 33. Copyright © 2015 TIS Inc. All rights reserved. 33 端から端までReactive 基本Asynchronous、   どこでWaitするかをデザインする
  • 34. Copyright © 2015 TIS Inc. All rights reserved. 34 Reactive++++++:  Reactive  Streams def search = Action.async { implicit request => …
 val q = for(e <- Event) yield e.eventNm val publisher:DatabasePublisher[String] = db.stream(q.result) publisher.foreach {e => println(e)} … 高レスポンス   Responsive クライアント コントローラ ノンブロッ キング WebSocket Actor ノンブロッ キング データベース Actor
  • 35. Copyright © 2015 TIS Inc. All rights reserved. 35 3.  プチReactive体験
  • 36. Copyright © 2015 TIS Inc. All rights reserved. 36 プチReactive体験 発電してますか?
  • 37. Copyright © 2015 TIS Inc. All rights reserved. 37 Reactive Solar Farm Monitor Solar Farm ① 何らかの原因で! 発電力が下がる ③ 故障が検知された! ソーラパネルの! アラートを表示 ID:  45412 ② 全ソーラーパネルの! 電力(W)から故障! しているパネルを検知 ソーラーパネルがそれぞれ定期的に! 発電した電力(W)のデータを送信! ・毎秒送信! ・パネル数は1万∼10万枚を想定
 ID:  45412 Reactive  Solar  Farm  Monitor Icon  made  by  Freepik  from  www.flaticon.com  is  licensed  under  CC  BY  3.0
  • 38. Copyright © 2015 TIS Inc. All rights reserved. 38 Architecture Monitor Analyzer Simulator http! &! WebSocket Subscriber Publisher Broker
  • 39. Copyright © 2015 TIS Inc. All rights reserved. 39 Message  Passing Sum   Calculator Sum   Calculator InspectorInspector Packet Mean Alert Snapshot Packet Inspection   Channel Buffer   Channel Socket Buffer Broker Execute Take
 Snapshot Collect
 Ghosts Partial  Sum Inspection   Manager Sum   Calculator Execute Inspector Done Sample Sample AnalyzerProxy Mean   Calculator Execute Measurement Measurement SocketSocket
  • 40. Copyright © 2015 TIS Inc. All rights reserved. 40 Supervision  Model AllForOne
 Strategy OneForOne
 Strategy Analysis   Supervisor Calculation   Supervisor Inspection   Manager Inspector Inspection   Channel BufferBuffer   Channel Sum   Calculator Mean   Calculator Inspection   Supervisor AllForOne
 Strategy User
  • 41. Copyright © 2015 TIS Inc. All rights reserved. 41 プチReactive体験  -  Responsive ユーザーの要求に可能な限り迅速にレスポンスするシステム 高レスポンス   Responsive 伸縮性   Elastic 耐障害性   Resilient メッセージ駆動   Message-driven
  • 42. Copyright © 2015 TIS Inc. All rights reserved. 42 プチReactive体験 支えているのはメッセージ駆動のアーキテクチャ
  • 43. Copyright © 2015 TIS Inc. All rights reserved. 43 4.  Go  Reactive  ×  3
  • 44. Copyright © 2015 TIS Inc. All rights reserved. 44 Go  Reactive  1/3 • アーキクチャの詳細   • 時間の都合で出来なかったデモ http://reactive-­‐shinjuku.connpass.com/event/17991/
  • 45. Copyright © 2015 TIS Inc. All rights reserved. 45 Go  Reactive  2/3 http://www.tis.jp/service_solution/goreactive/ go-­‐[email protected]リアクティブに興味のある方はご連絡下さい。
  • 46. Copyright © 2015 TIS Inc. All rights reserved. 46 Go  Reactive  3/3 ソースコードはGitHubで公開しています。 太陽光発電に興味のある方はご連絡下さい。 https://github.com/tech-­‐sketch/reactive-­‐solar-­‐farm-­‐monitor go-­‐[email protected]