4 layer 아키텍처

반응형
반응형

오늘 패키지 구조를 팀원들과 정했다.
팀원중 한분이 아프셔서 오늘 불참해서 매우 슬프지만ㅜㅜ 암튼 우리는 패키지 구조를 정했다.
튜터님이 몇일전에 글을 올려주셨는데 DDD관련 글이었다.

그 글을 보고 어떻게 구성하면 좋을지 고민을 해보았습니다.
1차때 패키지 구조를 논의하지 않아서 리펙토링을 하는것이 어려웠다.
그래서 이 구조를 선택하게 되었다.
하지만 생각보다 쉽지 않는 구조에 튜터님을 계속해서 방문해서 그 해답을 듣게 되었다.

우리가 결정한 아키텍처는 4 레이어 아키텍처로

상위패키지

├── application

├── domain

├── infrastructure

└── presentation


크게 이렇게 결정하였다.
간단히 설명하면 application은 무조건 domain이랑 소통을 해야 한다는 점이다.
그리고 외부에서 받은 정보는 인프라스트럭쳐를 통해 받을 수 있다.
그러면 JPA같은 경우 어떻게 해야 할까?
서비스는 application단에 있기 때문에 인프라스트럭쳐에 있는 정보를 가져올 수 가 없다.
하지만 JPA는 외부에서 받은 정보이기때문에 인프라스트럭쳐에서 정보를 가져와야 한다.
여기서 모순점이 발생하는데
이를 해결하기 위해 DIP개념이 도입된다.
DIP라는 개념은 DIP 원칙이란 객체에서 어떤 Class를 참조해서 사용해야하는 상황이 생긴다면, 그 Class를 직접 참조하는 것이 아니라 그 대상의 상위 요소(추상 클래스 or 인터페이스)로 참조하라는 원칙이다.

그렇다는 소리는 도메인쪽에서 레파지토리를 생성해서 이곳과 소통을 하라는 뜻이 된다.
이렇게 되면 자연스럽게 어플리케이션과 도메인객체를 서로 소통을 시킬 수 가 있게 된다.ㅎㅎ

생각보다 힘든 결정이었고
잘한 선택인거 같다.

반응형

댓글

Designed by JB FACTORY