Layered Architecture

BLAKE KIM·2020년 9월 27일
0

Layered Architecture

각 계층은 하위 계층에만 종속되고 상위 계층으로는 독립적으로 구성되어야 한다. 하위 계층에 종속되어야 하는 이유는 하위 계층의 Return 값을 받아서 상위 계층으로 전달하는 작업이 진행되는 구조이기 때문이다. 실행해야 할 역할들에 따라 계층이 나뉘는 아키텍쳐 방식이다.

이미지 출처

Presentation layer: View

사용자와 가장 가까운 계층으로 API에서 엔드포인트에 해당하며 http 통신의 요청과 응답을 처리하는 계층이다. 즉 모든 시스템의 상호작용은 이 층을 통하여 이루어 진다. 모든 에러 처리는 이 계층에서 진행되며 하위 계층의 영향을 받게 된다. 웹페이지가 될 수도 있고 Restrul API가 될 수 있다.

Control layer: Controller

시스템의 모든 것을 통제하는 계층으로 생각하자. 즉 Database와의 연결을 맺고 끊는 것 또한 해당 계층에서 발생하게 된다. 하위 계층에서 Database와의 연결이 진행될 시 트랜잭션 처리가 온전히 이루어질 수 없게 된다.

하위 계층에서 DB 커넥션을 하면 안되는 이유

하위 계층에서 DB 커넥션이 이루어지면 각각의 작업은 트랜잭션 처리가 이루어질지 모르나 여러 작업으로 나누어진 하나의 큰 작업면에서 보았을 때 부분이 해당 작업에 실패하였으나 다른 부분은 성공하였을 경우 해당 작업들을 모아서 보았을 시 성공적으로 해당 작업이 이루어졌다고 보기 힘들다.

예를 들어 상품 정보를 데이터베이스에 등록하는 경우, 이미지 업로드, 상세설명 업로드, 이름 업로드 등의 작업이 이루어졌다고 했을 시 이미지 업로드는 성공, 상세설명 업로드는 실패, 이름 업로드는 성공으로 되었을 시 상세설명 업로드에 해당하는 작업만 Rollback이 이루어지므로 해당 작업을 결국 실패한 작업이지만 하위 계층에서 DB 커넥션이 이루어질 경우 해당 작업을 한 번에 롤백 시키지 못한다. 그렇기 때문에 온전한 트랜잭션을 처리하기 위해서 Controller 계층에서 DB 커넥션을 실행해야 한다.

Business layer: Service

모든 Business Logic이 구현되는 부분으로 Persistence 계층에 종속적이다. 즉 하위 계층으로부터 데이터를 받아서 가공하는 작업이 실행되는 계층이라 이해하자.

Persistence layer: DAO

데이터베이스와 직접적인 연결을 통해 데이터를 가져오는 작업을 하는 계층으로 최하위 계층에 속한다.

profile
BackEnd

0개의 댓글