Javaでマイクロサービス向けのフレームワーク Lagom を試してみる

f:id:ts0818:20191012171557p:plain

ハニカム構造ハニカムこうぞう、英語:honeycomb structure)とは、正六角形または正六角柱を隙間なく並べた構造である。ハニカムとは英語で「ミツバチ(=)」という意味であり、多くの蜂の巣がこのような形をしていることから名付けられた。

広義には、正六角柱に限らず立体図形を隙間なく並べたもの(3次元空間充填)をハニカムと呼ぶ。

ハニカム構造 - Wikipedia

含羞む、とは関係ない、ハニカム構造と言えば六角形が有名ですが、糖類の分子構造も六角形が多いということで、

scienceportal.jst.go.jp

⇧  メタボリックシンドロームになる原因が特定されたようです。

糖質ばかり摂取している、どうも、ボクです。メタボまっしぐらやないか~い!

www.mag2.com

 

はい、すみません、脱線しました。

今回は、Java でマイクロサービスに焦点を当てたフレームワーク Lagom ってものを使ってみたいと思います。では、レッツトライ~。

 

Javaフレームワークあれこれ

Javaフレームワークっていうと、 

とかが、有名らしいんだけど、新規でJavaのプロジェクトっていう場合は、Spring Framework を使用することが多いらしい。

 

Lagom とは?

自分もマイクロサービスアーキテクチャの調査をしていて知ったのですが、

www.lagomframework.com

Lagom is an open source framework for building systems of Reactive microservices in Java or Scala. Lagom builds on Akka and Play, proven technologies that are in production in some of the most demanding applications today.

Lagom - Microservices Framework

⇧  JavaScala でReactiveなマイクロサービスを実現できるフレームワークらしい。

Reactiveって?

www.slideshare.net

⇧  上記サイト様が詳しいです。

www.slideshare.net

⇧  上記サイト様が詳しいです。

 

Lagom の全体のアーキテクチャが公式だと無さそうで、

⇧ 上記サイト様が参考になりそうです。

 

Lagom を導入してみる

そんでは、Javaで、Lagom を導入していきたいと思います。GitHubにあるExampleを使う感じになるみたいですね。(本当は、自分でプロジェクトを構築する方法を知りたいんですけどね。)

https://www.lagomframework.com/get-started.html にアクセス。

www.lagomframework.com

いまのところ、「Java」「Scala」のみ。今回は、「Java」で。

f:id:ts0818:20191012183033p:plain

ビルドツールの選択になるので、今回は「Maven」で。

f:id:ts0818:20191012183219p:plain

You can use Maven or sbt to build services you create with the Lagom Java API. (If you aren’t using one of these tools already, see this information to help you choose between sbt and Maven.) The Lagom development environment runs on Windows, Mac, and Linux operating systems. Try it from the command line to get started and later integrate your project into an IDE. Maven and sbt plugins make it especially easy to integrate the Lagom development environment with Eclipse or IntelliJ IDEA.

Lagom - Get started

⇧  ちなみに、IDE統合開発環境)としては、「Eclipse」「IntelliJ IDEA」のメジャーどころは利用できるらしい。

If you have the prerequisites installed and are familiar with Maven, create a Hello World project using the procedures on this page. Otherwise, see detailed instructions for help to set up the prerequisites and get started. Prerequisites for using Lagom with Maven include:

Lagom - Get started

JDK 8 のみ対応ってことなんですかね...世間では、JDK 13 まで出てますけど、Lagom は、JDK 8 のみ対応...うちは味噌ラーメン1本で勝負してんだよ、みたいなノリですかね。

JDKJava Development Kit)」「Maven」はインストールしておく必要があると。

とりあえず、JDKのバージョン確認。1.8 系は、JDK 8 ってことになるのでOK。

f:id:ts0818:20191012184358p:plain

Mavenのバージョン確認。3.6 だからOKそう。

f:id:ts0818:20191012184921p:plain

Mavenについては、

f:id:ts0818:20191012185040p:plain

f:id:ts0818:20191012185114p:plain

複数インストールされてるというね...パッケージ管理ツールとかで管理しないと駄目っすね。Windowsのパッケージ管理ツールとしては「Chocolatey」、「Scoop」なんかがあるようです。

はい、脱線しました。

そしたらば、https://developer.lightbend.com/start/?group=lagom&project=lagom-java-maven にアクセスします。

developer.lightbend.com

「CREATE A PROJECT FOR ME」をクリック。

f:id:ts0818:20191012185816p:plain

zipファイルがダウンロードされるので、

f:id:ts0818:20191012190136p:plain

適当な場所に、プロジェクトディレクトリを作成し、zipファイルを展開します。

f:id:ts0818:20191012190344p:plain

今回は、「C:\Users\Toshinobu\Desktop\testLagom」に展開。

f:id:ts0818:20191012190531p:plain

「testLagom」って名前でプロジェクトディレクトリを作ったので、その下に「lagom-java-maven」ってディレクトリが展開されてます。

f:id:ts0818:20191012190651p:plain

そしたらば、コマンドプロンプトなどで「lagom-java-maven」ってディレクトリまで移動しておきます。

f:id:ts0818:20191012190921p:plain

んで、以下のコマンドを実行するらしい。

mvn lagom:runAll    

f:id:ts0818:20191012191157p:plain

f:id:ts0818:20191012191440p:plain

はい、エラー。「Maven」のバージョンが、3.6.2 が必要らしい...なんだかなぁ、確かに「Maven 3.6 or higher」 ってなってるけども...

致し方ないから、Mavenのバージョンを上げようってなった時に、Maven本体のアップデートの仕方が載ってないというね...

まぁ、自分は、Chocolateyをインストールしていたので、Chocolateyでアップデートしました。

f:id:ts0818:20191012193016p:plain

f:id:ts0818:20191012193116p:plain

コマンドプロンプトを新しく開き直して、バージョン確認。

f:id:ts0818:20191012194133p:plain

では、改めて、コマンドプロンプトで「[プロジェクトディレクトリ]\lagom-java-maven」まで移動して、

mvn lagom:runAll    

ファイヤーウォールとか出てきたら、「アクセスを許可する(A)」で。

f:id:ts0818:20191012195604p:plain

f:id:ts0818:20191012200131p:plain

f:id:ts0818:20191012195950p:plain

⇧  「Cluster start task cassandraOffsetStorePrepare done.」ってなってれば、サーバが起動してるってことらしく、ブラウザからアクセスできるらしい。

http://localhost:9000/api/hello/World にアクセスすると、ブラウザに表示されます。

f:id:ts0818:20191012200518p:plain

ちなみに、停止するときは、コマンドプロンプトで、「Ctrl + C」を押せばOK?らしい。

f:id:ts0818:20191012200945p:plain

f:id:ts0818:20191012201059p:plain

停止すると、ブラウザからもアクセスできなくなると。

f:id:ts0818:20191012201135p:plain

なんか、Hello World を実現するだけなのに、プロジェクト構成が多いっす...

f:id:ts0818:20191012204054p:plain

プロジェクトの構成については、

www.atmarkit.co.jp

⇧  上記サイト様が詳しいです。

 

というわけで、Lagom について、少しづつ理解していけば、マイクロサービスアーキテクチャな考え方が身に付くのではないか、という期待を込めて勉強して参りますかね。

今回はこのへんで。