레이어드 아키텍처(Layered Architecture)
스프링 프레임워크를 사용하여 웹 서비스를 만든다고 생각해 보면 당연하게 스프링 MVC 패턴을 떠오르게 될 것이다.
지금 그림으로 볼 때는 Controller가 HTTP 요청에 대해서 어떤 작업을 수행하고 결과를 반환하게 되는데 만약 DB에도 접근해야 되고 지금 보다 많은 작업이 추가된다면 어떻게 될까?
스프링 프레임워크는 개발자가 좋은 객체 지향 설계를 할 수 있도록 도와주는데 좋은 객체 지향 설계를 하려면 역할과 구현을 분리해야 한다.
하지만 컨트롤러에 많은 역할을 부여하고 관련 기능들을 구현하게 된다면 좋은 객체 지향 설계라고 할 수 없고 그러면 결국 객체 지향의 장점인 유연한 변경을 할 수 없게 된다.
이러한 문제를 사전에 방지하고 컨트롤러의 역할과 구현을 더 세분화하여 좋은 객체 지향 설계를 할 수 있는데 이럴 때 사용하는 하나의 설계도가 바로 레이어드 아키텍처이다.
사진과 같이 레이어드 아키텍처를 적용한다면 Controller의 역할을 나눠 Service와 Model로 분리할 수 있다.
이렇게 각각의 역할들을 계층으로 나뉘면 Controller에서는 클라이언트의 HTTP 요청에 대해서 받아온 데이터를 Service에 넘겨주면 Service에서는 비즈니스 로직을 담당하여 처리하게 된다.
Model은 DTO나 Entity가 데이터를 담는 하나의 그릇 역할을 하여 Service와 Controller 혹은 Database에 전달해 주는 역할을 하게 된다.
참고 자료
'스프링' 카테고리의 다른 글
[Spring] - 스프링 부트 프로젝트 배포하기 (0) | 2024.01.10 |
---|---|
[Spring] - 소셜 로그인 (1) | 2024.01.04 |
[Spring] - Spring Security (0) | 2023.12.25 |
[Spring] - 스프링 프레임워크의 기초 (0) | 2023.12.20 |