This is a layer pattern for building a backend, it is quite famous in Spring Boot.
- Separation of concerns
- Easy to write unit tests
Solely responsible for exposing the functionality so that it can be consumed by external entities (UI)
All the business logic goes to the service layer
Reponsible for storing and retrieving some set of data