爆速WebFW(らしい) Light-4JをGroovyから使ってみる
G* Advent Calendar 5日目の記事です。
JVM上で使えるWebAPIを開発するFWなどは多々ありまして、ハイパフォーマンスなものを探していたらどうやら Light-4Jというものがあるらしいと聞きつけました。 彼が言うにはそこそこ速いということで、ベンチマークも出しているんだぜと。
鵜呑みにはできないし、使い方とか知りたいので最小限のプロジェクトテンプレートをつくってみました。
JDK8が入っていれば、 ./gradlew run
で http://localhost:8081/baz で bazというテキストがレスポンスされると思います。
サンプルプロジェクトを移植しただけなので、Groovyらしさとかテストコードもありませんが。(ルーティング部分だけだったので)
Light4Jでは、Swagger 2.0, Open API 3.0, GraphQLに対応していたり、OAuth2.0に対応していたり、マイクロサービストレーサビリティ(X-Traceability-Id)に対応していたりとしていてよい感じです。(それぞれがライブラリで管理されているのもよい)
今回のプロジェクトテンプレートはそういったものは使っておらず、単純なAPIルーティング形式だけです。以下は使っている部分に関する知っていることの紹介です。
Java向けを考えて開発されている
当たり前?かもしれませんが、Java言語で開発されており、公式のサンプル、テストコードはJava言語で、ビルドツールはMavenでした。 今回自分は(最低限レベルですが)Gradleにして、Groovyを依存関係に追加するくらいでは特にハマったりとかはなかったです。 GroovyでもLight4Jは使えそう。
基本的な依存はundertow
light4jはundertowに依存して作られているので、Handlingまわりとかもそういう雰囲気です。netty信者とかじゃなければそんなに困らないかと思います。
いろんなものがライブラリに切られている
Light4Jはいろんなライブラリとして分割されており、たいていはそのライブラリに対応する設定を ライブラリ名.yml というファイル名で src/main/resources/config
パス配下に置くことで認識されます。
例えば今回置いたのは server.yml
と service.yml
です。
これらはドキュメントとしては Cross-Cutting Concerns としてライブラリ毎に設定例などが記述されています。 ので、この辺をとりあえず読んでおくと使えるようになります。
service.yml
このファイルにはどのファイルをエントリポイントとするかとかサービス起動全般に関わることを記述します。 今回は1つのみ記述していますが、そもそも複数のサービスを管理したい場合などにも対応しています。
詳細はこちらを見てみてください。
server.yml
このファイルには使うポートはなんだとか、https/http2使うのかとか記述します。
で、パフォーマンス
調べられていないので、そのうち。。。><
Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築
- 作者: 綿引琢磨,須江信洋,林政利,今井勝信
- 出版社/メーカー: 翔泳社
- 発売日: 2014/11/05
- メディア: 大型本
- この商品を含むブログ (5件) を見る
- 作者: Dierk Konig,Paul King,Guillaume Laforge,Hamlet D'arcy,Cedric Champeau
- 出版社/メーカー: Manning Pubns Co
- 発売日: 2015/06/27
- メディア: ペーパーバック
- この商品を含むブログを見る
- 作者: 小田圭二,榑松谷仁,平山毅,岡田憲昌
- 出版社/メーカー: 翔泳社
- 発売日: 2014/07/03
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 久保田光則
- 出版社/メーカー: 技術評論社
- 発売日: 2017/05/26
- メディア: Kindle版
- この商品を含むブログ (1件) を見る