개린이 탈출기

[아키텍처] 계층형 아키텍처 (Layered Architecture) 본문

아키텍처-방법론

[아키텍처] 계층형 아키텍처 (Layered Architecture)

yooverd 2025. 3. 21. 18:03
728x90
반응형
SMALL

개요

계층형 아키텍처는 소스코드의 역할과 관심사 (화면표시, 비즈니스로직 수행, DB 작업 등)에 따라 이를 계층으로 분리한 아키텍처이다. 이러한 관심사 분리를 통해 다른 계층들과의 결합도를 낮추고 내부적으로는 높은 응집도를 갖게 되므로 코드 가독성과 유지보수가 용이해지는 장점을 이끌어 낼 수 있다.

즉, 계층형 아키텍처의 가장 강력한 기능은 관심사의 분리라고 볼 수 있다.

 


레이어의 구성

계층형 아키텍처는 일반적으로 4개의 레이어로 나뉜다.

(참고로 구성되는 계층의 개수에 따라 N-Tier Architecture 라고 부른다.)

 

레이어 관심사 구성요소 예시
Presentation 사용자와의 상호작용(요청/응답) 처리 View
Controller
Business 비즈니스 로직 수행 Service
Domain Model
Persistence 데이터베이스에 접근 ORM
Repository
DAO
Database 실제 데이터베이스 서버 운영 Database

 

Presentation Layer

사용자와의 요청 및 응답 등 상호작용 처리에 관심사를 둔 계층으로,
비즈니스 로직이 어떻게 수행되는지는 알 필요가 없다

대표적 구성요소로는 View, Controller 가 있다.

 

Business Layer (=Domain Layer)

비즈니스 로직을 수행하는 것에 관심사를 둔 계층으로,
Persistence Layer 에서 데이터를 가져와서 비즈니스 로직을 수행하고, 그 결과를 Presentation Layer로 전달한다.

대표적 구성요소로는 Service, Domain Model 이 있다.

 

Persistence Layer (=Data Access Layer)

데이터베이스에 직접적으로 요청을 전달하는 등 데이터베이스에 접근하는 데에 관심사를 둔 게층으로,
데이터베이스와 매핑되는 객체인 엔티티를 영구히 관리하는 게층이다.

대표적 구성요소로는 ORM, Repository, DAO 가 있다.

 

Databse Layer

실제 데이터베이스 서버가 운영된느 계층으로,

서비스에서 사용하고 있는 DB 가 바로 이 계층에 속한다.

 

Bussiness Layer 의 Domain Model 과 Persistence Layer의 엔티티는 다르다!

- Persistence Layer 의 엔티티 → Java Persistence Object 처럼 데이터베이스와 직접 연결되는데 사용하는 객체
      - 만일, JPA 나 Hibernate 를 사용한다면 @Entity 가 붙어있는 클래스
- Business Layer 의 Domian Model → 비즈니스 규칙과 로직을 포함하는 비즈니스 영역에서 사용되는 객체
      - 순수 객체를 유지하기 위해선 Persistence Layer의 엔티티와 분리해낼 수 있음
        (Ex: EmployeeEntity / Employee)

계층형 아키텍처의 한계점

계층형 아케텍처는 계층별로 관심사가 분리되기 때문에 코드 가독성과 유지보수성이 높다.

그러나 도메인 관점에서 한계가 보인다는 의견이 있다.

 

계층형 아키텍처의 구조적 특징으로 인해 Business 계층은 결국 DB에 영향을 받기 쉽다.

즉, 어떤 서비스를 구현하는데 있어, 업무 그 자체에 집중할 수 없고 외부의 환경을 신경써야 되는 문제가 발생할 수 있다.

한편으로 Business 의 domain 이 Persistence 의 dao 와의 구분이 모호해져 계층형 아키텍처의 장점을 온전히 누리기 어려운 상황이 발생할 수도 있다.

 

이러한 문제점을 해결하기 위한 방안으로 인터페이스 추상화와 빈 주입 등을 이용한 의존성 역전이 언급되며,
의존성 역전을 활용하여 앞서 말한 문제점을 해결하고자 한 아키텍처로 클린 아키텍처가 있다.

 

 

 

 

참고링크

https://velog.io/@kangukii97/%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-Layered-Architecture-%EA%B3%84%EC%B8%B5%ED%98%95-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98

728x90
반응형
LIST