Ответ
Service (сервис) — это независимый, автономный программный компонент, который инкапсулирует определенную бизнес-логику или функциональность и предоставляет к ней доступ через четко определенный интерфейс (обычно API).
Основные цели и характеристики:
- Инкапсуляция логики: Скрывает внутреннюю реализацию, предоставляя контракт для взаимодействия.
- Повторное использование: Одним сервисом могут пользоваться разные клиенты (другие сервисы, фронтенд).
- Независимое развертывание и масштабирование: Каждый сервис можно обновлять, масштабировать и выводить из строя независимо от других.
- Явно определенные зависимости: Зависимости от других сервисов или инфраструктуры четко декларируются.
Практический пример (микросервис):
// Сервис для управления пользователями
@RestController
@RequestMapping("/api/users")
public class UserService {
@Autowired
private UserRepository repository;
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return repository.findById(id).orElseThrow();
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public User createUser(@RequestBody User user) {
return repository.save(user);
}
}
В архитектуре микросервисов сервис является основной единицей развертывания, в SOA — единицей повторного использования.