Scala + Finagleの魅力

14.430 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
23 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
14.430
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3.665
Aktionen
Geteilt
0
Downloads
22
Kommentare
0
Gefällt mir
23
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Scala + Finagleの魅力

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

×