マイクロサービスアーキテクチャを備えたJHipster
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で利用できます。