Scala + Finagle の魅力 日本 Scala ユーザーズグループ (ScalaJP) 株式会社ユビレジ ソフトウェアエンジニア 水島 宏太
Scala + Finagle の魅力
日本 Scala ユーザーズグループ (ScalaJP)株式会社ユビレジ ソフトウェアエンジニア水島 宏太
こんなことしてます
こんなことしてます
こんなことしてます
本題
Scala + Finagle のちょっとしたお話Scala Days 2012 参加リポート
どうでもいいクイズ 1
Finagle の日本語での意味は?
正解は…
● だます、ペテンに掛ける● finagler は「詐欺師」
何故こんな名前を付けたのかそれを知りたい
どうもいいクイズ 2
Finagle の発音は?
正解は…
fine'iglカタカナにすると
フィネーグルに近い
Finagle is …Network stack for the JVM
by Twitter, Inc.
Finagle の特徴
● クライアント / サーバ● 非同期 RPC システムを簡単に作れる
– デフォルトで Thrift, HTTP など● Future による簡潔な非同期処理
Finagle ≠ RPC ライブラリ
● 以下のものとは目的が違う– Apache Thrift– Apache Arvo– Protocol Buffers
● RPC システムを作るための FW
Codec - 重要な概念 (1)
● データの Encode/Decode 方法を提供– Netty Pipeline 経由
● ユーザは CodecFactory を定義
class JSONCodec extends CodecFactory[JsonAST.JValue, JsonAST.JValue] {
/* type Server = ServerCodecConfig => Codec[JsonAST.JValue, JsonAST.JValue */ /* type Client = ClientCodecConfig => Codec[JsonAST.JValue, JsonAST.JValue */
def server: Server = Function.const { ... }
def client: Client = Function.const { ... }}
Service - 重要な概念 (2)abstract class Service [-Req, +Rep]
extends (Req) ⇒ Future[Rep]
● Req => Future[Rep] への関数● ロジックは主に Service に書く
Future - 重要な概念 (3)abstract class Future[+A] extends
TryLike[A, Future] with Cancellable
● 非同期的計算を表現するクラス● java.util.concurrent.Future との違い:
– Future が合成可能
今回作ったサンプル
● JSON による単純なメッセージ通信● クライアント → サーバ
– Echo● サーバ → クライアント
– EchoResult
メッセージの定義
● Echo:{“type”: “echo”, “message”:$msg}
● EchoResult:{“type”: “echoResult”, “message”:$msg}
デモ
Finagle の良いところ
● Codec, Service を定義するだけで簡単にRPC っぽいものが書ける
● Client, Server のソケット管理はFinagle(Netty) にお任せできる
● Future によるメッセージ受信処理
Finagle 導入のリスク
● ドキュメントが追随できてないことがある– 場合によってはソース追った方が早い
● ステートフルなプロトコルは工夫が必要– Finagle はステートレスプロトコル向き
● Netty の薄いラッパーであること– Netty の知識が必要な場合も
おまけ
Scala Days 2012のちょっとした話
参加者数
2010 (Lausanne) 2011 (Stanford) 2012 (Barbican)0
50
100
150
200
250
300
350
400
450
4/17~ 4/18 Barbican(London)
今年は発表しないからゆっくりできる
そう思っていたそう思っていた時期が私にも時期が私にもありましたありました
キーノートの次の最初のセッション
From: Adriaan Moors予定してたセッションの発表者が急遽キャンセルになったんだ
代わりに発表してくれないか?
発表まで1時間
( ゚д ゚ ) ポカーン
なんとかした
が
死ぬかと思った
続きは、 InfoQ JapanScala Days 2012 リポート記事(予定 ) にて
乞うご期待