1. 序章

この記事では、 JHipster を使用した興味深い例を探ります–シンプルなマイクロサービスアーキテクチャを構築します。 必要なすべての要素を構築してデプロイする方法を示し、最後に、本格的なマイクロサービスアプリケーションを稼働させます。

JHipsterを初めて使用する場合は、このプロジェクト生成ツールの基本を十分に理解する前に、紹介記事を確認してください。

2. モノリシックvs。 マイクロサービス

最初の記事では、保守が比較的簡単なモノリシックアプリケーションを作成してブートストラップする方法を説明しました。

一方、マイクロサービスシステムは、フロントエンドとバックエンドを分離します。バックエンドは、それぞれが完全なアプリケーションドメインのサブセットを処理する、いくつかの小さなアプリケーションに分割することもできます。 当然、すべてのマイクロサービス実装と同様に、これはいくつかの問題を解決しますが、コンポーネントのレジストリやセキュリティの処理など、いくつかの複雑さももたらします。

JHipsterは、Netflixの EurekaServerやHashicorpのConsulなどの最新のオープンソースツールを使用して、マイクロサービスアプリケーションの管理に関するほとんどの困難に対処します。

もちろん、ここで考慮すべき点がいくつかあります。たとえば、ドメインの大きさや複雑さ、アプリケーションの重要性、必要な可用性のレベル、さまざまなサーバーや場所でサービスをホストするかどうかなどです。 、など。 もちろん、これらのツールの目標は、これらの順列を可能にし、管理しやすくすることです。

2.1. JHipsterマイクロサービスコンポーネント

JHipsterを使用してマイクロサービスアーキテクチャで作業する場合、少なくとも3つの異なるプロジェクト(JHipsterレジストリ、マイクロサービスゲートウェイ、および少なくとも1つのマイクロサービスアプリケーション)を構築してデプロイする必要があります。

JHipster Registry は、マイクロサービスアーキテクチャの重要な部分です。 他のすべてのコンポーネントを結び付け、それらが相互に通信できるようにします。

マイクロサービスアプリケーションにはバックエンドコードが含まれています。 実行すると、関連するドメインのAPIが公開されます。 マイクロサービスアーキテクチャは、多くのマイクロサービスアプリケーションで構成され、それぞれにいくつかの関連エンティティとビジネスルールが含まれている場合があります。

そしてマイクロサービスゲートウェイにはすべてのフロントエンド(Angular)コードがあり、マイクロサービスアプリケーションのグループ全体によって作成されたAPIを使用します。

3. インストール

インストールプロセスの詳細については、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レジストリ

次のスクリーンショットは、オプションの完全なセットを示しています。

次に、carエンティティをアプリケーションに追加します。

# runs entity creation wizard
yo jhipster:entity car

エンティティ作成ウィザードが起動します。 指示に従って、 make model 、およびpriceの3つのフィールドを持つcarという名前のエンティティを作成する必要があります。

それが完了すると、最初のマイクロサービスアプリケーションが完成します。 生成されたコードを見ると、JavaScript、HTML、CSS、またはフロントエンドコードがないことがわかります。 これらはすべて、マイクロサービスゲートウェイが作成されると作成されます。 また、プロジェクトに関する重要な情報と便利なコマンドについては、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レジストリ

パラメータの完全なセットの概要は次のとおりです。

エンティティの作成に移りましょう。

# Runs entity creation wizard
yo jhipster:entity car

既存のマイクロサービスから生成するかどうかを尋ねられたら、はい を選択し、 car-app ルートディレクトリへの相対パスを入力します(例: ../car-app)。 最後に、エンティティを更新するかどうかを尋ねられたら、はい、エンティティを再生成しますを選択します。

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番目のマイクロサービスアプリケーションの作成

次に、システムをさらに一歩進めて、タイプMicroserviceApplicationの2番目のコンポーネントを作成しましょう。 この新しいコンポーネントは自動車ディーラーを管理するため、ディーラーというエンティティを追加します。

新しいディレクトリを作成し、そのディレクトリに移動して、 yojhipsterコマンドを実行してみましょう。

mkdir dealer-app && cd dealer-app
yo jhipster

その後、アプリケーションの名前として Dealerapp と入力し、実行するポート 8082 を選択します(これは、アプリケーションに使用しているポートとは異なるポートであることが重要です。 jhipster-レジストリおよびcar-app)。

その他のパラメータについては、任意のオプションを選択できます。 car-app コンポーネントとは異なるデータベースタイプ、キャッシュ戦略、およびテストを使用できるように、これは別個のマイクロサービスであることを忘れないでください。

ディーラーエンティティにいくつかのフィールドを追加しましょう。 たとえば、名前およびアドレス:

# 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にあるゲートウェイアプリケーションにアクセスし、ページを更新して、ディーラーエンティティ用に新しく作成されたメニュー項目を確認できます。

まとめる前に、http:// localhost:8761/にあるjhipster-registryアプリケーションをもう一度見てみましょう。 [アプリケーション]メニュー項目をクリックして、3つのコンポーネントすべてが正常に識別および登録されたことを確認します。 それでおしまい! 1つのゲートウェイアプリで構成される洗練されたアーキテクチャを作成しました。すべてのフロントエンドコードは、わずか数分で2つのマイクロサービスに支えられています。

5. 結論

JHipsterを使用してマイクロサービスアーキテクチャプロジェクトを開始するのは非常に簡単です。 必要な数のマイクロサービスアプリケーションと1つのマイクロサービスゲートウェイを作成するだけで、準備が整います。

フレームワークについては、公式JHipsterWebサイトでさらに詳しく調べることができます。

いつものように、car-app、dealer-app、gateway-appのコードベースはGitHub利用できます。