[Spring Boot] MVC 아키텍처 - Service

정원준·2024년 7월 8일

Back-End

목록 보기
5/9

이번 포스트에선 MVC 아키텍처 중 Service에 대해서 설명해 볼 생각이다.

서비스 ( Service )

서비스(Service)는 MVC 아키텍처에서 비지니스 로직을 수행하는 역할이다.
정확하게는 Model이 비지니스 로직을 수행하는 역할이긴 하지만.. 뭐 아무튼.
여기서 비지니스 로직이란 무엇일까,
필자가 생각한 비지니스 로직이란 데이터 처리, 데이터베이스와의 상호작용, 규칙 검증, 트랜잭션 관리 등을 하는 구조라고 생각한다.
MVC 아키텍처 중에서 Model이 비지니스 로직을 담당한다고 생각하는데, 이 비지니스 로직에 크게 영향을 미치는 게 서비스라고 생각한다.

@Service

해당 어노테이션의 역할은 스프링에게 해당 클래스가 Service Component이라고 알려 주는 것이다.
@Service를 사용하는 이유는 다음과 같다.

  1. 의미 전달: 코드를 읽는 사람에게 클래스의 역할을 명확히 전달한다.

  2. 코드 구조화: 애노테이션을 사용하여 코드를 계층별로 구조화한다. 이는 프로젝트의 유지보수성을 높이고, 특정 역할을 수행하는 클래스들을 쉽게 식별할 수 있도록 도와준다.

  3. DI(Dependency Injection) 컨테이너와의 통합: 애노테이션을 통해 스프링의 DI 컨테이너가 빈을 자동으로 관리하도록 한다.

서비스 ( Service )가 필요한 이유??

서비스가 필요한 이유는 다음과 같다.

  1. 비즈니스 로직의 분리: 비즈니스 로직을 컨트롤러와 데이터 액세스 코드로부터 분리하여 코드의 유지보수성과 가독성을 높인다.

  2. 재사용성: 동일한 비즈니스 로직을 여러 컨트롤러나 다른 서비스에서 재사용할 수 있다.

  3. 유지보수성: 비즈니스 로직이 한 곳에 집중되어 있어 변경 관리가 용이하다.

  4. 테스트 용이성: 서비스 계층의 로직을 독립적으로 테스트할 수 있어 테스트 작성과 실행이 간편하다.

  5. 트랜잭션 관리: 서비스 계층에서 트랜잭션 경계를 설정하여 데이터 일관성을 보장할 수 있다.

  6. 확장성: 새로운 비즈니스 로직을 쉽게 추가하거나 확장할 수 있다.

  7. 보안 관리: 서비스 계층에서 보안 규칙을 적용하여 비즈니스 로직에 대한 접근을 제어할 수 있다.

이러한 이유 외에 내가 느끼는 서비스가 필요한 이유는 바로 모듈화이다.
Service는 Controller와 Repository를 잇는 역할을 하는데 Service가 없다면 비지니스 로직을 Controller에서 처리해야 할 것이다.
그렇게 되면 Controller의 코드가 길어지고, 중복되는 코드가 많아지며 결국 가독성이 떨어질 것이다.
따라서 Service는 스프링 MVC모델에서 꼭 필요한 아키텍처이다.

0개의 댓글