본문 바로가기
CS

Layered Architecture 간단히 살펴보기

by setung 2021. 11. 8.

https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/ch01.html


처음 스프링을 공부하면서 Controller, Service, Repository를 만들어 개발을 하는데 Layered Architecture에 대해 무지했던 나는 각각의 용도와 필요성을 느끼지 못했었다. 오히려 하나의 요청을 처리하기 위해 단계별로 함수를 호출하는 것이 오히려 비효율적이지 않나라는 생각을 했었다. 하지만 공부를 해보면서 필요성을 알게 되었고 구조를 지켜가며 개발을 하고 있다. 이제 간단히 소개해 보겠다.

Layered Architecture는 Presentation, Business, Persistence, Database로 4계층으로 나누어져 있다. 각 계층마다 역할과 책임이 나누어진다. 그리고 계층은 Presentation -> Business -> Persistence -> Databse 순으로 호출 방향이 정해져 있다.

 

Presentation Layer

이 계층은 client의 요청을 받고 응답하는 계층이다. 이 계층의 특징은 어떻게 client의 요청을 처리 할 것인지는 관심이 없다. 그저 요청을 어떻게 받고 응답을 어떻게 할지에 대해 관심이 있는 계층이다. 요청에 대한 처리는 Business layer로 전달한다. 스프링의 Controller가 이 계층에 해당한다.

 

Business Layer

비지니스 로직을 담당하는 계층이다. 프레젠테이션 계층이 client의 요청을 받아오면 Business는 실제 요청에 대한 처리를 하는 부분이다. client가 웹이던 앱이던 혹은 database를 어떤 것을 사용하는지 관심 없다. 그저 비지니스 로직을 처리하는 부분이다. Spring의 Service가 이 계층에 해당한다.

 

Persistence Layer

데이터 베이스에 접근하는 계층이다. Business의 요청 처리에 따라 데이터베이스에서 데이터를 저장하거나 조회하거나 삭제하는 등의 로직을 수행한다. Spring의 Repository가 이 계층에 해당한다.

 

Database Layer

말 그대로 데이터베이스이다.

위와 같이 계층이 없다면 모든 작업은 한 곳에서 다 처리를 해야 할 것이다. 그러면서 코드가 복잡해지고 중복된 코드가 많아지면서 유지보수도 어려울 것이다.

'CS' 카테고리의 다른 글

API? REST API?  (0) 2021.10.26

댓글