소규모 프로젝트 또는 빠르게 개발해야 하는 경우에는 의도적으로 아키텍처 의사결정을 하는 경우도 많다.
- 왜 그러한 의사결정을 했는지, 했을 때의 장단점이 무엇인지를 명확하게 파악해놓는 것이 중요
- 이후 프로젝트의 규모가 커지거나, 문제가 발생한다면 빠르게 리팩토링할 수 있어야 함
유스케이스 간 모델 공유
- 유스케이스들이 기능적으로 묶여 있는 경우 유효
- 특정 요구사항을 공유할 때
- 실제 특정 세부사항을 변경할 경우 두 유스케이스 모두에 영향을 주고 싶은 것
도메인 엔티티를 입출력 모델로 사용
- UseCase에서 특정 필드가 필요한 경우, 도메인 객체에 추가해야 함
- 풍부한 도메인 엔티티인 경우, 점점 유스케이스에 의해 로직이 추가됨
- 도메인 엔티티가 점점 커져가고, 역할이 많아지면 반드시 분리해야 함
인커밍 포트 건너뛰기
- 인커밍 포트는 애플리케이션 중심에 접근하는 진입점을 정의
- 이를 제거하면 특정 유스케이스를 구현하기 위해 어떤 서비스 메서드를 호출해야 할지 알아내야 함
- 또한 인커밍 포트를 유지하면 아키텍처를 쉽게 강제할 수 있다.
- 인커밍 어댑터가 애플리케이션 서비스가 아닌 인커밍 포트만 호출하게 할 수 있으므로
- 애플리케이션 규모가 작거나 인커밍 어댑터가 하나밖에 없어 모든 제어 흐름을 인커밍 포트의 도움 없이 파악할 수 있다면, 인커밍 포트가 없는 것이 편함
애플리케이션 서비스 건너뛰기
- 간단한 CRUD 유스케이스에서 애플리케이션 서비스에서 도메인 로직 없이 그대로 전달하는 경우가 많음
- 영속성 어댑터가 인커밍 포트를 구현해 애플리케이션 서비스를 건너뛰게 할 수 있다.
- 하지만 이 방법은 인커밍 어댑터와 아웃고잉 어댑터 사이에 모델을 공유해야 함
- 도메인 모델을 입력모델로 사용하는 케이스
'Architecture(아키텍처)' 카테고리의 다른 글
| [만들면서 배우는 클린 아키텍처] 12. 아키텍처 스타일 결정하기 (0) | 2024.07.20 |
|---|---|
| [만들면서 배우는 클린 아키텍처] 아키텍처 경계 강제하기 (2) | 2024.07.20 |
| [만들면서 배우는 클린 아키텍처] 09. 애플리케이션 조립하기 (0) | 2024.07.20 |
| [만들면서 배우는 클린 아키텍처] 08. 경계 간 매핑하기 (1) | 2024.07.20 |
| [만들면서 배우는 클린 아키텍처] 07. 아키텍처 요소 테스트하기 (0) | 2024.07.20 |