Webアプリケーションがマイクロサービスに分岐するポイントについて混乱しています-それはURLレベルまたはモデルレベルのどちらですか?例として、3ページを提供する一体型のアプリがあるとします。各ページが個別のユースケースを提供していて、独自のマイクロサービスでそれらの裏付けを取りたいとします。ここで、マイクロサービスベースのアーキテクチャを実装する正しい方法は次のうちどれですか。
問題は、マイクロサービスをモデル化する方法です。
マイクロサービスに関しては、APIを介してロジックを公開する2番目のアプローチが最も適切です。
マイクロサービスをモデル化するときは常に、次の事実に留意してください。
疎結合:サービスが疎結合されている場合、あるサービスを変更しても、別のサービスを変更する必要はありません。このマイクロサービスの要点は、システムの他の部分を変更する必要に関係なく、1つのサービスに変更を加えてデプロイできることです。これは本当に非常に重要です。
Strong Cohesion:関連する動作をまとめて配置し、関連しない動作を別の場所に配置することを望みます。どうして?まあ、私たちが行動を変えたいなら、私たちはそれを一か所で変えて、その変化をできるだけ早くリリースできるようにしたいです。
ソフトウェアエンジニアリングではいつものように、答えは状況によって異なります。現時点では理由は想像できませんが、オプション1は特定のシナリオで役立つ場合があります。
ただし、マイクロサービスの正式な定義を考慮すると、オプション2はそれをよりよく示しています。マイクロサービスを使用する主な利点の1つは、再利用できることです。さまざまなアプリケーションには、情報を提示するためのさまざまな要件とニーズがあります。マイクロサービスがデータのJSON表現を返すようにすると、この情報をフォーマットする方法にさらに柔軟性が与えられます。
マイクロサービスのAPIゲートウェイパターン apigateway は、さまざまなサービスへの呼び出しの配布または転送を開始できる最初のポイントです
現在、2番目のオプションと同様のアーキテクチャを実装しています。作業中に次の複雑さに遭遇しました:(まだ進行中の作業なので、誰でも自由にこれに参加できます)
APIゲートウェイにはいくつかの欠点もあります。これは、開発、展開、および管理する必要がある、さらに別の高可用性コンポーネントです。また、API Gatewayが開発のボトルネックになるリスクもあります。開発者は、各マイクロサービスのエンドポイントを公開するために、API Gatewayを更新する必要があります。 API Gatewayを更新するプロセスは、できるだけ軽量であることが重要です。そうしないと、開発者はゲートウェイを更新するために列で待機することを余儀なくされます。ただし、これらの欠点にもかかわらず、ほとんどの実際のアプリケーションでは、API Gatewayを使用するのが理にかなっています。