私は「モノリシック」から来ていますSOA APIマインドセット、つまり永続化のためのRESTfulサービスは1つしかない(persistence-app)です。今、マイクロサービス環境で開発しているので、大きなモノリシックサービスを次のようないくつかの独立したマイクロサービスにさらに分離するのが最善だと思います。
古いアプローチから:クライアント->永続化アプリ...
これで、クライアント->検証レイヤー->ビジネスロジックレイヤー-> DAOレイヤーになります。
私の質問は、これらのマイクロサービスにどのように名前を付けるのですか?以前は、1つの名前でしたが、基本的には「永続化アプリ」でした。それを、独自の機能を備えたはるかに定義されたサービスに分離したので、これらに名前を付けるためのベストプラクティスは何ですか? 「user-service」、「user-validation-service」、「user-order-logic-service」?
あなたの質問を読んでいるあなたが私と同じようにマイクロサービスについて考えているとは思いません。
たとえば、検証マイクロサービスは作成しません。理論的には、私はそれが機能することを確認できますが、UserServiceにAddUser()メソッドがあると言ってください。
検証ロジックを分離することはすべてうまくいきますが、他に何も呼び出さない場合は、そのコードをサービスとして公開しません。
マイクロサービスは、既にある水平層ではなくモノリスの場合、垂直スライスと見なされます。
だから私にとってネーミングは簡単です。 UserService、OrderServiceなどは、これらをさらに分割できる複雑なケースがあるかもしれませんが、分割を示唆するロジックから名前が明確になります。つまり、AdminUserService/UserService
明らかに、2つのサービスがいくつかの内部ロジックを共有し、それを独自のサービスに分割することが理にかなっている場合があります。しかし、繰り返しになりますが、ネーミングはレイヤーではなくコードの目的から明らかです。つまり、AccountServiceとOrderServiceの両方がOrderPricingServiceを呼び出す場合があります。
さらに、「サービス」という言葉にこだわらないでください。UserRepositoryは、httpを介してアクセスする場合でも、メモリ内でアクセスする場合でも、リポジトリです。
また、すべてのOOPオブジェクトをビジネスロジックで破棄しないでください。意味のある場合を除き、すべてを手続き型にしてください。サービスでは、オブジェクトをインスタンス化し、高レベルのマイクロサービスでメソッドを呼び出すことができます。それらすべてを個別のOrderBusinessLogicService.ProcessOrder(Order o)サービスに変換するより