マイクロサービスアーキテクチャを備えたJHipster
1. 前書き
この記事では、JHipsterを使用した興味深い例、つまり単純なマイクロサービスアーキテクチャの構築について説明します。 必要なすべての要素を構築してデプロイする方法を示し、最終的には本格的なマイクロサービスアプリケーションを稼働させます。
JHipsterを初めて使用する場合は、このプロジェクト生成ツールの基本を十分に理解する前に、our introductory articleを確認してください。
2. モノリシックvs. マイクロサービス
最初の記事では、比較的保守が容易なモノリシックアプリケーションを作成してブートストラップする方法を説明しました。
一方、マイクロサービスシステムは、フロントエンドとバックエンドを分離し、それぞれが完全なアプリケーションドメインのサブセットを処理するいくつかの小さなアプリケーションに分割することもできます。 当然、すべてのマイクロサービスの実装と同様に、これはいくつかの問題を解決しますが、コンポーネントのレジストリやセキュリティの処理などの複雑さももたらします。
JHipsterは、NetflixのEureka ServerやHashicorpのConsulなどの最新のオープンソースツールを利用して、マイクロサービスアプリケーションの管理に関するほとんどの困難に対処します。
もちろん、ドメインの大きさや複雑さ、アプリケーションの重要性、必要な可用性のレベルなど、さまざまなサーバーや場所でサービスをホストするかどうかなど、ここで考慮すべきことがいくつかありますなど これらのツールの目標は、もちろん、これらの組み合わせが可能であり、管理しやすいことです。
2.1. JHipsterマイクロサービスコンポーネント
JHipsterを使用してマイクロサービスアーキテクチャで作業する場合、JHipsterレジストリ、マイクロサービスゲートウェイ、および少なくとも1つのマイクロサービスアプリケーションの少なくとも3つの異なるプロジェクトを構築してデプロイする必要があります。
The JHipster Registryは、マイクロサービスアーキテクチャの重要な部分です。 他のすべてのコンポーネントを結び付け、それらが相互に通信できるようにします。
The Microservice Applicationはバックエンドコードを含む。 実行すると、関係するドメインのAPIが公開されます。 マイクロサービスアーキテクチャは、それぞれがいくつかの関連エンティティとビジネスルールを含む多くのマイクロサービスアプリケーションで構成されます。
And the Microservice Gatewayにはすべてのフロントエンド(Angular)コードがあり、マイクロサービスアプリケーションのグループ全体によって作成されたAPIを使用します。
3. インストール
インストールプロセスの詳細については、introductory article on JHipsterを確認してください。
4. マイクロサービスプロジェクトの作成
それでは、マイクロサービスプロジェクトの3つのコアコンポーネントをインストールしましょう。
4.1. JHipsterレジストリのインストール
JHipsterレジストリは標準のJHipsterなので、ダウンロードして実行するだけです。 変更する必要はありません。
git clone https://github.com/jhipster/jhipster-registry
cd jhipster-registry && ./mvnw
これにより、GitHubからjhipster-registryプロジェクトのクローンが作成され、アプリケーションが起動します。 正常に起動したら、http://localhost:8761/にアクセスし、ユーザーadminとパスワードadminでログインできます。
4.2. マイクロサービスアプリケーションのインストール
ここから、プロジェクトの実際の機能の構築を開始します。 この例では、車を管理する簡単なマイクロサービスアプリケーションを作成します。 したがって、最初にアプリケーションを作成し、次にエンティティを追加します。
# create a directory for the app and cd to it
mkdir car-app && cd car-app
# run the jhipster wizard
yo jhipster
ウィザードが起動したら、指示に従ってcarappという名前のマイクロサービスタイプのアプリケーションを作成しましょう。 その他の関連パラメーターは次のとおりです。
-
ポート:8081
-
パッケージ:com.car.app
-
認証:JWT
-
サービスの発見:JHipster Registry
以下のスクリーンショットは、オプションの完全なセットを示しています。
次に、carエンティティをアプリケーションに追加します。
# runs entity creation wizard
yo jhipster:entity car
エンティティ作成ウィザードが起動します。 指示に従って、make、model、およびprice.の3つのフィールドを持つcarという名前のエンティティを作成する必要があります。
それが完了すると、最初のマイクロサービスアプリケーションが完成します。 生成されたコードを見ると、JavaScript、HTML、CSS、またはフロントエンドコードがないことがわかります。 これらはすべて、Microservice Gatewayが作成されると生成されます。 また、プロジェクトおよび有用なコマンドに関する重要な情報については、READMEファイルを確認してください。
最後に、新しく作成したコンポーネントを実行してみましょう。
./mvnw
上記のコマンドを実行する前に、jhipster-registryコンポーネントが稼働していることを確認する必要があります。 そうしないと、エラーが発生します。
すべてが計画どおりに進んだ場合、car-appが起動し、jhipster-registryログにアプリが正常に登録されたことが示されます。
Registered instance CARAPP/carapp:746e7525dffa737747dcdcee55ab43f8
with status UP (replication=true)
4.3. マイクロサービスゲートウェイのインストール
これでフロントエンドビット。 マイクロサービスゲートウェイを作成し、フロントエンドコードを作成する既存のコンポーネントにエンティティがあることを示します。
# Create a directory for our gateway app
mkdir gateway-app && cd gateway-app
# Runs the JHipster wizard
yo jhipster
指示に従って、マイクロサービスゲートウェイタイプのアプリケーションを作成しましょう。 アプリケーションにgatewayという名前を付け、他のパラメーターに対して次のオプションを選択します。
-
ポート:8080
-
パッケージ:com.gateway
-
auth:JWT
-
サービスの発見:JHipster Registry
以下に、パラメーターの完全なセットの概要を示します。
エンティティの作成に移りましょう:
# Runs entity creation wizard
yo jhipster:entity car
既存のマイクロサービスから生成するかどうかを尋ねられたら、Yes,を選択し、car-appルートディレクトリへの相対パスを入力します(例:../ car-app)。 最後に、エンティティを更新するかどうかを尋ねられたら、Yes, regenerate the entityを選択します。
JHipsterは、以前に作成した既存のマイクロサービスアプリケーションの一部であるCar.jsonファイルを検索し、そのファイルに含まれるメタデータを使用して、そのエンティティに必要なすべてのUIコードを作成します。
Found the .jhipster/Car.json configuration file, entity can be automatically generated!
gateway-appを実行し、すべてが機能しているかどうかをテストします。
# Starts up the gateway-app component
./mvnw
次に、http://localhost:8080/に移動し、ユーザーadminとパスワードadminでログインします。 トップメニューに、車のリストページに移動するアイテムCarが表示されます。 すべていいね!
4.4. 2番目のマイクロサービスアプリケーションの作成
次に、システムをさらに一歩進めて、create a second component of type Microservice Applicationを実行しましょう。 この新しいコンポーネントは自動車ディーラーを管理するため、dealerというエンティティを追加します。
新しいディレクトリを作成し、そのディレクトリに移動して、yo jhipsterコマンドを実行してみましょう。
mkdir dealer-app && cd dealer-app
yo jhipster
その後、アプリケーションの名前としてdealerappを入力し、実行するポート8082を選択します(これは、jhipster-registryに使用しているポートとは異なるポートであることが重要です。 sおよびcar-app)。
その他のパラメーターについては、必要なオプションを選択できます。 これは別個のマイクロサービスであるため、car-appコンポーネントとは異なるデータベースタイプ、キャッシュ戦略、およびテストを使用できることに注意してください。
dealerエンティティにいくつかのフィールドを追加しましょう。 たとえば、nameおよびaddress:
# Runs the create entity wizard
yo jhipster:entity dealer
gateway-appに移動し、dealerエンティティのフロントエンドコードを生成するように指示することを忘れないでください。
# Navigate to the gateway-app root directory
cd ../gateway-app
# Runs the create entity wizard
yo jhipster:entity dealer
最後に、dealer-appルートディレクトリで./mvnwを実行して、そのコンポーネントを起動します。
次に、http://localhost:8080でゲートウェイアプリケーションにアクセスし、ページを更新して、Dealerエンティティ用に新しく作成されたメニュー項目を見ることができます。
まとめる前に、http://localhost:8761/でjhipster-registryアプリケーションをもう一度見てみましょう。 [アプリケーション]メニュー項目をクリックして、3つのコンポーネントすべてが正常に識別および登録されたことを確認します。以上です。 1つのゲートウェイアプリで構成される洗練されたアーキテクチャを作成しました。すべてのフロントエンドコードは、わずか数分で2つのマイクロサービスに支えられています。
5. 結論
JHipsterでMicroservice Architectureプロジェクトを開始するのは非常に簡単です。必要な数のマイクロサービスアプリケーションと1つのマイクロサービスゲートウェイを作成するだけで、準備は完了です。
official JHipster websiteでフレームワークをさらに詳しく調べることができます。
いつものように、car-app、dealer-app、gateway-appのコードベースはover on GitHubで利用できます。