これは、現実の世界に影響を与える抽象的な質問です。
2 つのマイクロサービスがあります。CreditCardsService
それらをと と呼びましょうSubscriptionsService
。
SubscriptionsService
また、顧客がサブスクライブできるように を使用することになっている SPA もあります。そのために、 にはサブスクリプション モデルでサブスクリプションを作成SubscriptionsService
できるエンドポイントがあり、そのモデルでは、サブスクリプションの支払いが必要なクレジット カードをポイントします。サブスクリプションにクレジット カードを使用できるかどうかを示す特定のビジネス ルールがあります (有効期限が 12 か月以上先である、VISA であるなど)。これらの特定のビジネス ルールは、POST
creditCardId
SubscriptionsService
問題は、SPA に取り組んでいるチームが、サブスクリプション モデルで使用できるユーザーのすべての有効なクレジット カードを返す/CreditCards
エンドポイントを必要とすることです。SubscriptonsService
彼らは、SPA 自体にある同じビジネス検証ルールを SPA に実装したくありませんSubscriptionsService
。
私には、これはマイクロサービス設計の中心である SOLID の原則に反しているように思えます。特に関心の分離。また、これはどのような前例となるでしょうか?OrdersService またはそのモデルのプロパティとして/CreditCards
使用する可能性のあるその他のサービスにエンドポイントを追加する必要がありますか?creditCardId
主な質問はこれです: これを設計する最善の方法は何ですか? フロントエンドとバックエンドの間でビジネス検証ロジックを複製する必要がありますか? この新しいエンドポイントを に追加する必要がありSubscriptionsService
ますか? ビジネス ロジックを単純化する必要がありますか?