MicroProfile でクラウドネイティブ アプリケーション開発 1

記事
IT・テクノロジー

MicroProfile とは

この記事では Java でマイクロサービスアプリケーションをつくるためのAPI 仕様を定義している MicroProfile について学習する。

Eclipse ファウンデーションの公式サイトによると、"MicroProfile®プロジェクトは、エンタープライズJavaをマイクロサービスアーキテクチャに最適化することを目的としている。" (URL: projects.eclipse.org/projects/technology.microprofile)

MicroProfile と互換性のある Java ランタイム(アプリケーションを実行するサーバー)としては、例えば下記などが存在する。
・Open Liberty (IBM)
・Payara Micro (Payara Services Ltd)
・Quarkus (Red Hat)

MicroProfile 自体の公式サイトは下記URL でアクセスできる。
URL:  microprofile.io

Jakarta EE との関係

MicroProfile には Jakarta EE の仕様の一部が含まれている。(例えば MicroProfile の 6.1 は Jakarta EE 10 コアプロファイルを含む。)
従って、Jakarta EE でのアプリケーション作成の知識はそのまま活用することができる。

Open Liberty 上で動作するアプリケーションの開発

ここではアプリケーションサーバーとして Open Liberty を使うことにする。
Open Liberty のアプリケーションプロジェクトを生成するには、公式サイトのスターターページ(URL: openliberty.io/start/)を利用することができる。

open-liberty-starter.png
必要な情報をそれぞれ入力してGenerate Project ボタンで zip ファイルをダウンロードできる。
ビルドツールは Maven と Gradle のいずれかを選択できる。ここでは Maven を選択して進めることにする。

zip を展開すると下の画像のような Maven プロジェクトディレクトリを確認できる。
(RestResource.java は後から追加したファイル)
open-liberty-dir.png

アプリケーションの起動には liberty プラグインの dev ゴールを実行すれば良い。
これだけでサーバーの起動やアプリのデプロイ等も含めて実行される。
$ mvn liberty:dev

プロジェクトには maven ラッパーが含まれているので、システム上に Maven をインストールしていない場合でも、Maven ゴールを実行できる。
$ ./mvnw liberty:dev
(zip を展開した直後はファイルに実行権限が設定されていないので、chmod で実行権限を付加する必要がある)

OpenLiberty の Maven プラグインについて詳細は下記のドキュメントなどに記載されている。
URL: github.com/OpenLiberty/ci.maven

IDE を使いたい場合は Maven や Gradle に対応した IDE でプロジェクトを開けば良い。

IntelliJ IDEA でプロジェクトを開く

ここでは IntelliJ IDEA を使用する。バージョンは2023.3 (Community Edition)を使用する。
java1.png
Java ソースコードの確認
(RestApplication.java)
java1.png

(RestResource.java)
java2.png
見覚えのある Jakarta EE RESTful API のソースコードがサンプルとして含まれている。(RestResource.java は追加したファイル)

IDEA で Open Liberty のプロジェクトを管理する場合には、 Liberty Tools プラグインをインストールしておくと良い。

IntelliJ IDEA を起動後、左メニューの Plugins をクリックし、Marketplace タブで "Liberty Tools" を検索する。Install をクリックしてインストールする。
IntelliJ_open_liverty.png
バージョン 0.0.7 をインストールしている。右下に公式のGitHub リポジトリへのリンクがあり、そこでこのプラグインについての詳細を確認できる。

アプリケーションの実行
画面右の Liberty アイコンをクリックすると、実行できるアクションが表示される。
Start dev mode を選択して三角ボタンで liberty-maven-pugin プラグインの dev ゴールを実行できる。
IntelliJ_open-liberty-project.png

実行するとサーバーが起動し、アプリケーションのURL が表示される。
example-app.png

curl コマンドで REST API の hello エンドポイントに GET リクエストを送ってみると、
Hello World! のメッセージが返ってくる。

$ curl -w "\n" localhost:9080/app-name/api/hello
Hello World!

補足1 (Open Liberty サーバーについて)

スターターページからダウンロードしたプロジェクトをそのまま使用してビルドした場合には、生成された target ディレクトリ内に Open Liberty サーバーが含まれることになる。(画像の target/liberty/wlp がサーバーのディレクトリ)
openliberty-server.png
Open Liberty サーバーは公式サイトからzip ファイルをダウンロードして適当な場所に展開して配置すれば、そちらを指定して使うこともできる。
そのためには pom.xml を編集して、下記のように liberty-maven-pugin プラグインの設定を追加する。installDirectory エレメントで wlp ディレクトリのパスを指定する。
    <build>
        <plugins>
            <plugin>
                <groupId>io.openliberty.tools</groupId>
                <artifactId>liberty-maven-plugin</artifactId>
                <configuration>
                    <installDirectory>/xxxx/wlp</installDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>
こうすると mvn liberty:dev 実行後の target ディレクトリ内にはサーバーが含まれない。

補足2 (NetBeans IDE を使う場合)

IDEはこれまで使用してきた NetBeans IDE を使っても良いのだが、liberty-maven-pugin プラグインのゴールを IDE 上で実行できるようにするにはプロジェクトの設定でカスタムのアクションを登録する作業が必要になる。

上部メニューの File > Project Properties をクリックし、左側にある Categories: から Actions をクリックすると設定画面が開く。
netbeans-custom-1.png
ここで "Add Custom" ボタンをクリックし、追加するアクションの名前を適当に入力して、 Execute Goals: の入力欄にこのアクションで実行する Maven ゴールを入力(例えば liberty:dev)して登録する。
登録したアクションを実行するには Projects タブのプロジェクト名を右クリックして表示されるメニューからRun Maven をクリックして、登録時に設定したアクション名をクリックする。
maven-action-exe.png
liberty:dev 以外のゴールも同様に登録しておけば同じようにクリック操作で実行できる。

あるいは、クリック操作ではなくてコマンド入力で良いなら、コンソールを開いて mvn コマンドを入力すれば良い。
コンソールは上部メニューから Window > IDE Tools > Terminal をクリックでIDEウィンドウの下部に開くことができる。


次回以降の記事では MicroProfile の学習をさらに進めていく予定。
サンプルとして実際的なマイクロサービスアプリの構築例も提示したい。

コメント: 記事内の情報は著者が個人的に調べた範囲で理解しているものです。必要に応じて訂正する場合があります。記事中に含まれるURL はプロトコルを含めると禁止ワードに引っ掛かるので省いています。

著者・投稿者: ENARTS05
編集履歴:
2023/12/14 作成
2024/1/18 訂正
RestResource.java は zip ファイルには含まれていません。後から追加したものです。


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す