An Introduction to Vert.x

  • 10,765 views
Uploaded on

JJUG CCC 2013 Fall のスライド #jjug_ccc

JJUG CCC 2013 Fall のスライド #jjug_ccc

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
10,765
On Slideshare
0
From Embeds
0
Number of Embeds
13

Actions

Shares
Downloads
22
Comments
0
Likes
14

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. JJUG CCC 2013 Fall R5-6 [BOF]
 
 Over the Node.js 
 An Introduction to Vert.x 2013/11/09 Acroquest Technology 株式会社 村田賢一郎
  • 2. 目次 1.  自己紹介 2.  Vert.x の概要 3.  Vert.x による開発 4.  Vert.x の最新情報 5.  まとめ 〜Java界の新たなる希望〜 © http://www.flickr.com/photos/delta_139/4878497911/ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 2
  • 3. 1. 自己紹介 自己紹介 = 氏名: ‘村田 賢一郎’ twitter: ‘@muraken720’ 所属: ‘Acroquest Technology Co.,Ltd.’ 仕事: ‘ライフライン系ネットワーク集中監視システム開発’ ‘フレームワーク開発’ 言語: ‘Java & JavaScript & CSS3 & HTML5’ 興味: ‘Vert.x’ ‘Backbone.js’ ‘Jeet4’ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3
  • 4. 1. 自己紹介 n  最近は会社ブログで以下を書いています! http://acro-engineer.hatenablog.com/ l  Vert.x がいいね!(第1回〜第3回) l  試して学ぶ Backbone.js 入門のまとめ l  RealtimeConf 2013に参加してきました! Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4
  • 5. Vert.x とは何なのか? その特長について 2. Vert.x の概要 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5
  • 6. 【2. Vert.x の概要】
 1. Vert.x とは? 〜Java界の新たなる希望〜 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 6
  • 7. 【2. Vert.x の概要】
 2. Vert.x Project 1.  Project Site Ø  http://vertx.io/ 2.  Github Ø  https://github.com/eclipse/vert.x Ø  https://github.com/vert-x 3.  100% open source(ASL 2.0) 4.  Eclipse Foundation Project 5.  主な開発者 Ø  @timfox (Project Leader) Ø  @normanmaurer Copyright © Acroquest Technology Co., Ltd. All rights reserved. 7
  • 8. 【2. Vert.x の概要】
 3. Vert.x の特長 1.  2.  3.  4.  High Performance(Asynchronous/ Non-Blocking) Distributed Event Bus Polyglot Module System Copyright © Acroquest Technology Co., Ltd. All rights reserved. 8
  • 9. 【2. Vert.x の概要】
 3-1. High Performance 1.  背景:C10K問題 ①  一般的に1つのスレッド辺り、256kb〜1mb必要になる 2.  対策:1スレッド(EventLoop)で処理する ①  Vert.xはコア数に応じて、EventLoopを生成する ②  non-blocking ③  asynchronous © http://www.flickr.com/photos/stickkim/7491816206/ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 9
  • 10. 【2. Vert.x の概要】
 3-1. High Performance n  EventLoopを止めるな! ①  ②  ③  ④  ブロックするライブラリの呼び出し(例えばJDBC) CPUヘビーな処理 Thread.sleep() Object.wait() © http://www.flickr.com/photos/mac_filko/5085785977/ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 10
  • 11. 【2. Vert.x の概要】
 3-1. High Performance n  Asynchronous API ①  ②  ③  ④  ⑤  ⑥  ⑦  ⑧  TCP/SSL client & server HTTP/HTTPS client & server WebSocket SockJS File System Event Bus Timer etc. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 11
  • 12. 【2. Vert.x の概要】
 3-2. Distributed Event Bus 1.  2.  3.  4.  Event BusはVert.x のアプリケーション基盤 Pub/Sub、Point to Point(Request / Response) メッセージはJSONが推奨 複数のVert.x Instanceをクラスタリングしている場合も Event Busで接続可能 © http://www.flickr.com/photos/michellecarl/6960299327/ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 12
  • 13. 【2. Vert.x の概要】
 3-3. Polyglot n  JVM上で扱える多くの言語サポート © http://www.flickr.com/photos/ johnnywashngo/6599602215/ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13
  • 14. 【2. Vert.x の概要】
 3-3. Polyglot n  Java public class HelloWorldVerticle extends Verticle { public void start() { vertx.createHttpServer().requestHandler(new Handler<HttpServerRequest>() { public void handle(HttpServerRequest req) { req.response().headers().set("Content-Type", "text/plain"); req.response().end("Hello World!!!"); } }).listen(8080); } } Copyright © Acroquest Technology Co., Ltd. All rights reserved. 14
  • 15. 【2. Vert.x の概要】
 3-3. Polyglot n  Java8 ラムダ public class HelloWorldVerticle extends Verticle { public void start() { vertx.createHttpServer().requestHandler((HttpServerRequest req) -> { req.response().headers().set("Content-Type", "text/plain"); req.response().end("Hello World!!!"); }).listen(8080); } } Copyright © Acroquest Technology Co., Ltd. All rights reserved. 15
  • 16. 【2. Vert.x の概要】
 3-4. Module System 1.  機能を再利用可能な形にモジュール化することが可能 2.  モジュールはMavenやBintrayに公開し、共有すること ができる 3.  モジュール間はEventBus介してゆるやかに結合する © http://www.flickr.com/photos/michellecarl/6960299327/ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 16
  • 17. 【2. Vert.x の概要】
 3-4. Module System 1.  Moduleは1つ以上のVerticleを含むもの 2.  mod.jsonを定義する { "main":”HelloVerticle", "auto-redeploy": true, "description":"Put description of your module here", "licenses": ["The Apache Software License Version 2.0"], "author": "Kenichiro Murata", "developers": [], "keywords": ["vert.x", "module", "java", "gradle"], "homepage": "https://github.com/muraken720/vert.x-module-template-for-java" } Copyright © Acroquest Technology Co., Ltd. All rights reserved. 17
  • 18. 【2. Vert.x の概要】
 3-4. Module System 1.  Vert.x Module Registry Ø  http://modulereg.vertx.io/ 2.  主なモジュール ①  ②  ③  ④  ⑤  ⑥  ⑦  ⑧  ⑨  WebServer Mailer MongoDB Redis JDBC mysql-postgresql(async) Yoke(inspired by Connect) Vertigo(similar to Storm) CRaSH shell Copyright © Acroquest Technology Co., Ltd. All rights reserved. 18
  • 19. Vert.x の開発環境からアプリケーションアーキテクチャについて 3. Vert.x による開発 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 19
  • 20. 【3. Vert.x による開発】
 1. 開発環境 1.  Java7 2.  Project Template ①  Gradle ②  Maven 3.  IDE Support ①  Eclipse ②  InteliJ 4.  Module Auto redeploy(デモ) 5.  Remote debug(デモ) 参照: Vert.x がいいね!(第2回:開発環境を構築する) http://acro-engineer.hatenablog.com/entry/2013/08/15/073502 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 20
  • 21. 【3. Vert.x による開発】
 2. Vert.x を使ったアーキテクチャ 1.  Node.js and the new web front-end Ø  http://www.nczonline.net/blog/2013/10/07/node-js-andthe-new-web-front-end/ 2.  Node.jsでフロント側を開発して、バックエンド側 をVert.xで開発する。 3.  EventBusを使ってNode.jsとVert.xをつなぐ Ø  vertx-eventbus-client Ø  https://npmjs.org/package/vertx-eventbus-client Copyright © Acroquest Technology Co., Ltd. All rights reserved. 21
  • 22. 日本で最も早い?Vert.x の最新情報とVert.xの今後 4. Vert.x の最新情報 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 22
  • 23. 【4. Vert.x の最新情報】
 1. Vert.x 2.1 M1 Release n  注目の新機能 ①  Fat Jar(executable jar) – Vert.x Coreを含んだexecutable jarを作れる – 事前にVert.xをインストールしておく必要なし ②  HA(High Availability) ③  DNS / UDP Core API © http://www.flickr.com/photos/stickkim/6962834384/ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 23
  • 24. 【4. Vert.x の最新情報】
 2. HA(High Availability) n  モジュールの自動フェールオーバー In console 1: vertx runmod com.mycompany~my-mod1~1.0 -ha In console 2: vertx runmod com.mycompany~my-mod2~1.0 -ha © http://www.flickr.com/photos/stickkim/7108906575/ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 24
  • 25. 【4. Vert.x の最新情報】
 2. HA(High Availability) n  HA Group In console 1: vertx runmod com.mycompany~my-mod1~1.0 -ha -hagroup g1 In console 2: vertx runmod com.mycompany~my-mod2~1.0 -ha -hagroup g1 In console 3: vertx runmod com.mycompany~my-mod3~1.0 -ha -hagroup g2 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 25
  • 26. 最後にVert.xのポイントをもう一度おさらい 5. まとめ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 26
  • 27. 【5. まとめ】
 まとめ n  Vert.xは・・・ ①  ②  ③  ④  ⑤  次世代のApplication Platform High Performance Polyglot Module System EventBus n  各JVM言語によるModuleを上手く組み合わせ て、効率よく、ハイパフォーマンスでスケーラブル なアプリケーションを開発できる! n  Java界の新たなる希望 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 27
  • 28. Java界の新たなる希望 『 Vert.x 』 で盛り上がりましょう! ありがとうございました。 Infrastructures  Evolution Copyright © Acroquest Technology Co., Ltd. All rights reserved. 28