Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Scala + Finagle の魅力日本 Scala ユーザーズグループ (ScalaJP)株式会社ユビレジ ソフトウェアエンジニア水島 宏太
自己紹介https://github.com/kmizu
こんなことしてます
こんなことしてます
こんなことしてます
本題
Scala + Finagle のちょっとしたお話Scala Days 2012 参加リポート
どうでもいいクイズ 1Finagle の日本語での意味は?
正解は…●    だます、ペテンに掛ける●    finagler は「詐欺師」    何故こんな名前を付けたのか    それを知りたい
どうもいいクイズ 2Finagle の発音は?
正解は…  fineiglカタカナにすると フィネーグル    に近い
Finagle is …     Network stack for the JVM          by Twitter, Inc.
Finagle の特徴●    クライアント / サーバ●    非同期 RPC システムを簡単に作れる     –   デフォルトで Thrift, HTTP など●    Future による簡潔な非同期処理
Finagle ≠ RPC ライブラリ●    以下のものとは目的が違う     –   Apache Thrift     –   Apache Arvo     –   Protocol Buffers●    RPC システムを作るための...
Codec - 重要な概念 (1)●    データの Encode/Decode 方法を提供      –   Netty Pipeline 経由●    ユーザは CodecFactory を定義
class JSONCodec extends CodecFactory[JsonAST.JValue,   JsonAST.JValue] {    /* type Server = ServerCodecConfig =>      Cod...
Service - 重要な概念 (2)    abstract class Service [-Req, +Rep]     extends (Req) ⇒ Future[Rep]●    Req => Future[Rep] への関数●   ...
Future - 重要な概念 (3)    abstract class Future[+A] extends     TryLike[A, Future] with Cancellable●    非同期的計算を表現するクラス●    jav...
今回作ったサンプル●    JSON による単純なメッセージ通信●    クライアント → サーバ      – Echo●    サーバ → クライアント      – EchoResult
メッセージの定義●    Echo:    {“type”: “echo”, “message”:$msg}●    EchoResult:    {“type”: “echoResult”, “message”:$msg}
デモ
今回のサンプルコード:https://github.com/scalajp/finagle_echoにて公開
Finagle の良いところ●    Codec, Service を定義するだけで簡単に     RPC っぽいものが書ける●    Client, Server のソケット管理は     Finagle(Netty) にお任せできる●   ...
Finagle 導入のリスク●    ドキュメントが追随できてないことがある     –   場合によってはソース追った方が早い●    ステートフルなプロトコルは工夫が必要     –   Finagle はステートレスプロトコル向き●   ...
おまけ
Scala Days 2012のちょっとした話
参加者数45040035030025020015010050  0      2010 (Lausanne)    2011 (Stanford)   2012 (Barbican)
4/17 ~ 4/18 Barbican(London)
今年は発表しないからゆっくりできる
そう思っていた時期が私にも ありました
キーノートの次の最初のセッション
From: Adriaan Moors予定してたセッションの発表者が急遽キャンセルになったんだ代わりに発表してくれないか?
発表まで1時間
( ゚ д ゚ ) ポカーン
なんとかした
が
死ぬかと思った
続きは、 InfoQ JapanScala Days 2012 リポート記事( 予定 ) にて
乞うご期待
Scala + Finagleの魅力
Scala + Finagleの魅力
Nächste SlideShare
Wird geladen in …5
×

Scala + Finagleの魅力

14.722 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

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. 乞うご期待

×