Skip to main content

マイクロサービスの構築

マイクロサービスは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)を使用して、検出した他のすべてのノードとともにクラスタを作成します。

データベースを持たないマイクロサービス

マイクロサービスのアプリケーションはデータベースなしで作成することができます。これは、マイクロサービスが小さく、ユーザ管理コードがないためです。

データベースのないマイクロサービスは非常に小さく、レガシーシステムのような特定のバックエンドに接続するためや、領域外にある他のサービスへのプロキシとして利用できます。