CodeZine(コードジン)

特集ページ一覧

モダンアプリケーションのための軽量・高性能プラットフォーム「Vert.x」の概要と導入手順

Javaプログラマーのための実践「Vert.x」 第1回

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 はじめまして、DMM.comラボのリョウジです。皆さんは「Vert.x」をご存じでしょうか? よくある紹介としては「JVM版のNode.js」というとこでしょう。DMMでは、Vert.xを一部のアクセス負荷の高い部分に使用することで、スループットの改善を実現しております。本連載では、Vert.xを使用してシンプルなHTTPモジュールを作成し、メッセージパッシングによりJDBCモジュールとの連携を実現するところまでを、紹介していければと考えています。どうぞよろしくお願いします。

目次

対象読者

 Javaのフレームワークというと、いまだにStrutsに代表されるServletベースのMVCフレームワークを経験されている方がほとんどだと思います。

 Node.jsも経験されている方であれば比較的理解しやすいかもしれませんが、ここでは「伝統的な同期型のマルチスレッドプログラミングになれているJavaプログラマー」を対象とし、Vert.xのアーキテクチャを理解して実際にアプリケーションを作成する手助けになることを目指していきます。

 なお、この記事は執筆時点で最新の安定版である2.1.5を前提に記述していきます。

Vert.xのインストール

 Vert.xは、2012年5月に1.0、2013年に2.0がリリースされ、現在3.0が開発中のまだまだ若く枯れていないオープンソースです。

 公式サイトのインストール解説を見てもらえば早いとは思いますが、簡単にインストール手順を説明しておきます。

  1. 公式サイトのダウンロードページから必要なバージョンを選択し、ダウンロードサイトを表示します。今回は、2.1.5になります。
  2. ダウンロードサイトで、自分の環境に応じてtar.gzかzipファイルをダウンロードします(wgetやcurlで構いません)。
  3. ダウンロードしたファイルを任意の場所に展開すればインストールは完了です(ここでは、Windows上で「C:\tools\vert.x-2.1.5」を展開先とし、同パスを環境変数VERTX_HOMEとして登録しておきます)。
  4. 環境変数PATHに${VERTX_HOME}/binを追加すれば、vertxコマンドで起動できるようになります。

Vert.xの特徴

 まずは、Vert.xの公式サイトにも書かれている特徴、売り文句を簡単にご説明します。

特徴 説明
Polyglot 多言語対応と訳せばよいでしょうか。
Vert.xのアーキテクチャは独立した各モジュールがイベントバスを経由してメッセージを送りあう形で処理を行います。
このモジュールを作成するのにJavaである必要はありません。JVM上で動く言語であればほとんどのプログラミング言語で開発が可能となっています。
現在、Java以外にサポートされている言語として、JavaScript、CoffeeScript、Ruby(JRuby)、Python(Jython)、Scala、Groovy、Clojure、PHP(Quercus)、Ceylonなどがあります。
Simplicity nettyをベースにしたノンブロッキングI/O対応のアプリケーションが、複雑な記述をせずによりシンプルに作成できます。
Scalability NettyのノンブロッキングI/Oを使用しているため、大量の接続を最小限のスレッド数で処理できます。
メッセージを仲介するEventBusは内部でHazelcastの機能を利用して分散EventBusとすることができ、Clusterによる冗長構成(負荷分散)が可能になっています。
Concurrency 同時並行性。
各モジュールはシングルスレッドで動作し、モジュール間はメッセージパッシングによるアクターモデルに似たシンプルなプログラミングで作成できます。
シングルスレッドで動作する前提になるため、synchronizedやvolatileも不要になります。

 非常に魅力的な特徴かと思いますが、もちろん何も考えずに作成すればいいわけではなく、一定のルールに従って開発することで実現できます。

開発前の準備

 Vert.xは単なるJavaのライブラリーではなく、独立したプラットフォームとして扱う必要があるため、最初の開発環境作りにはテンプレートプロジェクトを利用するのが簡単です。gitでこのプロジェクトをcloneすれば最初の準備は完了です(名前は適宜変えましょう)。後は任意に使いやすいIDEで取り込んでみましょう。

 Eclipseで取り込んだ場合、下の図のようになります。

 注意事項として、このテンプレートはGradleを使用しているため、使ったことがない方には抵抗があるかもしれません。また、IDEによってGradle用のプラグインがありますので活用してください。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • リョウジ(株式会社DMM.comラボ)(リョウジ)

    DMM.comのプラットフォームにおける主要アーキテクチャに関しての技術研究開発を担当。 非同期のメッセージ&キューの導入、Vert.xフレームワークを採用し社内の基盤を整備等、 高負荷対策・可用性の高いアーキテクチャの開発・設計など幅広く活躍。

バックナンバー

連載:Javaプログラマーのための実践「Vert.x」
All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5