2018年 Java 手軽にマイクロサービスを作れるお勧めライブラリ


概要

Javaでマイクロサービスを実装する際に利用するお勧めのライブラリを紹介したいと思います。
今回は以下の3点を前提条件としてライブラリを選択しました。

  • HTTPで送受信するRESTful APIのマイクロサービスを対象とする
  • 導入コストや学習コストを抑えるため、手軽に使えるシンプルなライブラリとする(フルスタックは対象外)
  • デファクトスタンダードや利用実績の多いライブラリとする

Spark Framework

Gson / Jackson

マイクロサービスでは複数のサービスと連携して動作するためメッセージのやり取りが発生します。その際に重要となるのがフォーマットの変換です。
Java(オブジェクト)とJsonの変換が多いと思いますが、他のライブラリでも多々利用されている(サポートしている)のがGsonJacksonの2つです。
どちらでもお好きな方をどうぞ。
ただし、スタックとして例えばあるライブラリがJacksonを利用している(依存関係にある)のに、Gsonを利用するのは同一の目的(フォーマット変換)のライブラリとして二種類が含まれることになるので好ましくありません。スタック全体として見るとこの場合はJacksonを選択すべきでしょう。

Bean Validation

専用のアノテーションを付与することで入力チェックを行うBean Validation (JSR-303)が簡単です。
Bean Validationは仕様のため、利用する際は実装ライブラリが必要になります。
実装ライブラリとしてhibernate-validatorが有名なので、これを利用することをお勧めします。

(注意)
Java EEサーバで動作される場合、Bean Validationの実装はサーバにもあるためhibernate-validatorを利用しない選択肢もあります。
今回は通常のJavaプロセスでも動作するマイクロサービスを考慮してhibernate-validatorを紹介しています。

(2018/6/10 追加)

Sql2o

Feign

Jedis

キャッシュとしてKVS(Key Value Store)を利用する場合が増えてきたかと思います。
KVSの中でもよく使われるのがRedisで、そのJavaクライアントとして有名なものがJedisになります。

Paho

MQTTのクライアントとしてはPahoが有名です。
Java、.net(C#、VB.net)、Python等々の様々なプログラム言語用のライブラリを提供しています。
(私はJava以外のプログラム言語でも、MQTTを利用する場合はPahoを利用しています)