DevBoi

[DDD] 레이어드 아키텍처 본문

Develop/[DDD]

[DDD] 레이어드 아키텍처

HiSmith 2023. 6. 8. 10:28
반응형

마이크로서비스 내부 구조 정의는 어떻게 해야할까

전술적 패턴은 비즈니스 로직을 모델링하고, 구현하는 다양한 방법이다.

 

가장 고전적인 아키텍처는 3계층으로 구현하는 것이다.

 

프리젠테이션 레이어, 비지니스 로직 레이어, 데이터 엑세스 레이어 

이렇게 3가지 레이어가 존재한다.

 

레이어드 아키텍처

근접 레이어만 접근 가능하다 Top-down 아래로 의존적이고 순방향이다.

흔히아는 MVC컨트롤러는 프리젠테이션 계층에 속한다.

가장 중요한 계층은 비즈로직 계층이다.

 

레이어드 아키텍처 다양한 변종이 존재한다. 

레이어드 아키텍처는 비즈니스 로직과 데이터 접근 계층간의 의존성이 있다.

비즈 로직 구현이 트랜잭션 스크립트, 엑티브 레코드인 경우 적합한 아키텍처이다.

그렇지만, 결국 데이터 처리에 비지니스 로직이 점점 몰리게 되고 변화에 대응할수없는 비유연성이 내포되어있다.

 

위와 같은 변종은, 서비스 레이어가 추가가 되어서, 액션에 대한 레이어를 추가로 넣는 것이다.

비지니스 로직레이어가 데이터엑세스 레이어에 의존을 하고있다는 것이 문제가 있다.

 

아래와 같이 리팩토링을 할수 있다.

의존성 역전의 원칙 : 비즈니스 로직을 구현하는 상위 수준의 모듈은 하위수준의 모듈에 의존해서는 안된다.

인터페이스 활용, 비즈 로직은 데이터 엑세스 계층의 인터페이스를 정의하고 데이터 엑세스 계층은 인터페이스를 구현한다.

 

의존하려면 잘 변경되지 않는 부분에 의존해야한다는 원칙을 가져야한다.

 

반응형