2

これは、現実の世界に影響を与える抽象的な質問です。

2 つのマイクロサービスがあります。CreditCardsServiceそれらをと と呼びましょうSubscriptionsService

SubscriptionsServiceまた、顧客がサブスクライブできるように を使用することになっている SPA もあります。そのために、 にはサブスクリプション モデルでサブスクリプションを作成SubscriptionsServiceできるエンドポイントがあり、そのモデルでは、サブスクリプションの支払いが必要なクレジット カードをポイントします。サブスクリプションにクレジット カードを使用できるかどうかを示す特定のビジネス ルールがあります (有効期限が 12 か月以上先である、VISA であるなど)。これらの特定のビジネス ルールは、POSTcreditCardIdSubscriptionsService

問題は、SPA に取り組んでいるチームが、サブスクリプション モデルで使用できるユーザーのすべての有効なクレジット カードを返す/CreditCardsエンドポイントを必要とすることです。SubscriptonsService彼らは、SPA 自体にある同じビジネス検証ルールを SPA に実装したくありませんSubscriptionsService

私には、これはマイクロサービス設計の中心である SOLID の原則に反しているように思えます。特に関心の分離。また、これはどのような前例となるでしょうか?OrdersService またはそのモデルのプロパティとして/CreditCards使用する可能性のあるその他のサービスにエンドポイントを追加する必要がありますか?creditCardId

主な質問はこれです: これを設計する最善の方法は何ですか? フロントエンドとバックエンドの間でビジネス検証ロジックを複製する必要がありますか? この新しいエンドポイントを に追加する必要がありSubscriptionsServiceますか? ビジネス ロジックを単純化する必要がありますか?

4

4 に答える 4