次の設定があります。
したがって、水平スケーリング/アプリケーションの複数のインスタンスの実行に関して、セッションについて心配する必要はありません。 STM/Weblogicクラスターは、後続のリクエストが同じ管理対象サーバーに確実に届くようにします。
私たちが現在持っているのはモノリシックアプリケーションであり、マイクロサービスに移行しようとしています。また、現在のインフラストラクチャ(STM/Weblogicクラスタ/ Authツールなど)から移動することもできません。私たちが計画したのは:
だから私の質問は
より良い代替案やリソース/リンクも提案してください。ありがとう。
私の意見を共有させてください。
まず、アプリケーションをステートレスに保つことができる場合は、必ずそうしてください:)パフォーマンスとスケーラビリティの両方の観点から、これは最良のソリューションです。
さて、それが不可能な場合は、分散セッション管理レイヤーを維持する必要があります。
認証を担当するゲートウェイは、後でキーとして使用できるいくつかの一意のセッション識別子を生成できます。このキーは、すべてのマイクロサービスに伝播され、APIまたは何かの一部になる可能性があります。
セッションにアクセスするために、マイクロサービスはキーによって値を「取得」し、それを操作できます。
実装に関しては、NoSQLソリューションについて見ていきます。あなたのニーズに合うことができるそれらのいくつかは:
私が信じている他の解決策もあります。
さて、ここではパフォーマンスが非常に重要です。さもなければ、ソリューション全体が非常に遅くなります。したがって、私の理解では、RDBMSを使用することはここでは適切ではありません。さらに、潜在的に、RDBMSをスケールアウトすることが困難になる可能性があります。
お役に立てれば
1)他のマイクロサービスがステートレスである間にAPI Gatewayをステートフルにする必要がありますか?
はい、のように 12 Factor Appのガイドライン すべてのサービスはステートレスである必要があります。
2)その場合、APIセッションとマイクロサービスの間でユーザーセッションデータをどのように共有する必要がありますか?
APIはステートレスである必要があるため、セッション状態をマイクロサービスと共有しないでください。推奨されるアプローチは、セッションデータを格納するようにRedisキャッシュを設定することです。