モダンアプリケーションのための軽量・高性能プラットフォーム「Vert.x」の概要と導入手順
Javaプログラマーのための実践「Vert.x」 第1回
はじめまして、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が開発中のまだまだ若く枯れていないオープンソースです。
公式サイトのインストール解説を見てもらえば早いとは思いますが、簡単にインストール手順を説明しておきます。
- 公式サイトのダウンロードページから必要なバージョンを選択し、ダウンロードサイトを表示します。今回は、2.1.5になります。
- ダウンロードサイトで、自分の環境に応じてtar.gzかzipファイルをダウンロードします(wgetやcurlで構いません)。
- ダウンロードしたファイルを任意の場所に展開すればインストールは完了です(ここでは、Windows上で「C:\tools\vert.x-2.1.5」を展開先とし、同パスを環境変数VERTX_HOMEとして登録しておきます)。
- 環境変数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用のプラグインがありますので活用してください。
この記事は参考になりましたか?
- Javaプログラマーのための実践「Vert.x」連載記事一覧
- この記事の著者
-
リョウジ(株式会社DMM.comラボ)(リョウジ)
DMM.comのプラットフォームにおける主要アーキテクチャに関しての技術研究開発を担当。 非同期のメッセージ&キューの導入、Vert.xフレームワークを採用し社内の基盤を整備等、 高負荷対策・可用性の高いアーキテクチャの開発・設計など幅広く活躍。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
