マイクロサービスの構築
マイクロサービスはJHipsterアプリケーションの一種であり、フロントエンドを持たず(Angularフロントエンドはgatewayで生成され る必要があります)、Consulと連携して設定、検出、管理されます。
マイクロサービスアーキテクチャにおけるエンティティ
JWTまたはDTOを使用する場合、Userエンティティはマイクロサービスで生成されません。OAuth 2.0が使用される場合、マイクロサービスには、トークンからユーザーデータを抽出し、それをマイクロサービスのデータベースに保存するメカニズムがあります。そのため、JWTおよびDTOの場合、Userエンティティはゲートウェイのデータベースにのみ存在するため、Userエンティティとの関係を使用または定義できません。
異なるマイクロサービスのエンティティ間の関係はサポートされていません。
エンティティの生成
マイクロフロントエンドのエンティティについては、マイクロフロントエンドを参照してください。
エンティティサブジェネレータを使用すると、フロントエンドとバックエンドのコードが同じアプリケーションに配置されないため、マイクロサービスアーキテクチャ での動作が少し異なります。
まず、マイクロサービスアプリケーションでエンティティを生成します。これは通常どおりに動作し、JHipster UMLまたはJDL Studioを使用して、複雑なエンティティとリレーションシップも生成できます。マイクロサービスにはフロントエンドがないため、UIコードは生成されません。
次に、ゲートウェイでエンティティサブジェネレータを再度実行します。最初に、ゲートウェイに固有の新しい質問が表示されます。
- 新しいエンティティを通常生成するか(ゲートウェイも標準のJHipsterアプリケーションなので、これはモノリスアプリケーションのように動作します)、マイクロサービスから既存のJHipster構成を使用するかを選択できます。
- マイクロサービスからエンティティを生成することを選択した場合、ローカルコンピュータ上のこのマイクロサービスへのパスを入力する必要があります。すると、JHipsterがゲートウェイ上にフロントエンドコードを生成します。
マイクロフロントエンド
JHipsterのマイクロフロントエンド実装は、Module Federationを使用し、フロントエンドエンティティの実装をゲートウェイではなくマイクロサービスに配置できるようにします。
開発段階では 、認証プロセスのためにゲートウェイを実行する必要があります。
ゲートウェイを使用して、または単独でマイクロフロントエンドを起動する方法については、生成されたREADMEを参照してください。例として、jhipster-micro-frontends を参照してください。
Hazelcastによる分散キャッシュ
アプリケーションでSQLデータベースを使用している場合、JHipsterはマイクロサービスを使用した異なる第2レベルのキャッシュソリューションを提案しています。
- マイクロサービスを備えたJHipsterのデフォルトのキャッシュソリューションはHazelcastです。
- Ehcache(モノリスアプリケーションのデフォルトソリューション)またはCaffeineを選択するか、キャッシュをまったく使用しないことも選択できます。
このアーキテクチャでは、サービスを拡張するという考え方であるため、このソリューションはマイクロサービスのデフォルトです。
- ローカルキャッシュを使用すると、サービスインスタンスに同期化されたキャッシュがないため、誤ったデータが生成されることになります。
- キャッシュがないと、スケーリングの負担がデータベースに押し込まれ、(Cassandraオプションを使用しない限り)あまりうまくいきません。
マイクロサービスでHazelcastを使用すると、特定 の構成となります。
- 起動時に、アプリケーションはサービスレジストリに接続して、同じサービスの他のインスタンスが実行されているかどうかを確認します。
dev
プロファイルを使用すると、JHipsterはインスタンスごとに異なるポートを使用して、localhost(127.0.0.1
)にこれらのインスタンスのクラスタを作成します。デフォルトでは、Hazelcastポートはアプリケーションのポート+5701
です(したがって、アプリケーションのポートが8081
の場合、Hazelcastはポート13782
を使用します)。prod
プロファイルを使用すると、JHipsterはデフォルトのHazelcastポート(5701
)を使用して、検出した他のすべてのノードとともにクラスタを作成します。
データベースを持たないマイクロサービス
マイクロサービスのアプリケーションはデータベースなしで作成することができます。これは、マイクロサービスが小さく、ユーザ管理コードがないためです。
データベースのないマイクロサービスは非常に小さく、レガシーシステムのような特定のバックエンドに接続するためや、領域外にある他のサービスへのプロキシとして利用できます。