4 layer 아키텍처
- 국비지원 (스파르타)
- 2025. 3. 13. 23:51
오늘 패키지 구조를 팀원들과 정했다.
팀원중 한분이 아프셔서 오늘 불참해서 매우 슬프지만ㅜㅜ 암튼 우리는 패키지 구조를 정했다.
튜터님이 몇일전에 글을 올려주셨는데 DDD관련 글이었다.
그 글을 보고 어떻게 구성하면 좋을지 고민을 해보았습니다.
1차때 패키지 구조를 논의하지 않아서 리펙토링을 하는것이 어려웠다.
그래서 이 구조를 선택하게 되었다.
하지만 생각보다 쉽지 않는 구조에 튜터님을 계속해서 방문해서 그 해답을 듣게 되었다.
우리가 결정한 아키텍처는 4 레이어 아키텍처로
상위패키지
├── application
├── domain
├── infrastructure
└── presentation
크게 이렇게 결정하였다.
간단히 설명하면 application은 무조건 domain이랑 소통을 해야 한다는 점이다.
그리고 외부에서 받은 정보는 인프라스트럭쳐를 통해 받을 수 있다.
그러면 JPA같은 경우 어떻게 해야 할까?
서비스는 application단에 있기 때문에 인프라스트럭쳐에 있는 정보를 가져올 수 가 없다.
하지만 JPA는 외부에서 받은 정보이기때문에 인프라스트럭쳐에서 정보를 가져와야 한다.
여기서 모순점이 발생하는데
이를 해결하기 위해 DIP개념이 도입된다.
DIP라는 개념은 DIP 원칙이란 객체에서 어떤 Class를 참조해서 사용해야하는 상황이 생긴다면, 그 Class를 직접 참조하는 것이 아니라 그 대상의 상위 요소(추상 클래스 or 인터페이스)로 참조하라는 원칙이다.
그렇다는 소리는 도메인쪽에서 레파지토리를 생성해서 이곳과 소통을 하라는 뜻이 된다.
이렇게 되면 자연스럽게 어플리케이션과 도메인객체를 서로 소통을 시킬 수 가 있게 된다.ㅎㅎ
생각보다 힘든 결정이었고
잘한 선택인거 같다.
'국비지원 (스파르타)' 카테고리의 다른 글
프로젝트에 레코드를 추가해보자. (1) | 2025.03.14 |
---|---|
2차 프로젝트 (1) | 2025.03.12 |
카프카 - config 동적 할당 (json 매핑) (1) | 2025.03.11 |
ACID vs BASE (0) | 2025.03.07 |
카프카는 도대체 어떻게 사용하는 걸까? (2) | 2025.03.07 |