CH.5 웹 어댑터
구현하기
1. 의존성 역전
- Web Adaptor = Incomming Adaptor
- 외부로부터 요청 받음 =>
애플리케이션 코어 호출 =>
무슨 일을 해야할지 알려줌 - 애플리케이션 계층은 웹 어댑터가 통신할 수 있는 포트를 제공
- 서비스는 포트 구현 & 웹 어댑터가 이 포트를 호출
- 제어 흐름
- 왼쪽 => 오른쪽
- 웹 어댑터가 유스케이스를 직접 호출할 수 있지만 간접 계층을 넣음
- 포트 (간접 계층)는 외부와 통신할 수 있는 곳에 대한 명세서
- 어떤 통신이 일어나는지 명확하게 알 수 있음.
- Outgoing Port
- 이 포트는 웹 어댑터에서 구현하고 애플리케이션 코어에서 호출해야 한다.
- 웹 어댑터는 인커밍 & 아웃고잉 어댑터가 될 수도 있다고 한다.
2. 웹 어댑터의 책임
거시적 관점
- HTTP 요청을 객체로 매핑 후 권한 검사
- 입력 유효성 검증 및 유스케이스의 입력 모델로 매핑
- 유스 케이스 호출 후 출력을 HTTP로 매핑 및 반환
미시적 관점
- 웹 어댑터의 입력 모델을 유스케이스의 입력 모델로 변환할 수 있다는 것을 검증해야 함.
- HTTP 와 관련된 모든 것은 애플리케이션 계층으로 침투하면 안된다.
- 웹 어댑터의 책임은 애플리케이션 코어가 몰라야 한다.
- 이러한 계층 간의 경계는 도메인과 어플리케이션 계층부터 개발하기 시작하면 자연스럽게 생긴다. (
고민해 봐야 할 부분
)
3. 컨트롤러 나누기
- 컨트롤러는 너무 적은 것 보다는 많은게 낫다.
- 각 컨틀로러가 가능한 한 좁고 다른 컨트롤러와 가능한 한 적게 공유한는 웹 어댑터 조각을 구현해야한다.
이때 컨트롤러명을 정확히 지을 것.
Example
UserController
- 회원 등록
- 회원 정보 반환
- 회원 수정
- 회원 탈퇴
- 다수의 책임을 가지고 있는 큰 컨트롤러
UserJoinController
- 회원 등록
- 책임을 나눠 작게 만든 컨트롤러
- 회원 등록
코드 파악이 쉬워진다.
테스트 코드 작성이 수월하다.
반응형
'🏛️ Architecture' 카테고리의 다른 글
[만들면서 배우는 클린 아키텍처] Chapter10. 아키텍처 경계 강제하기 (0) | 2022.11.15 |
---|---|
[만들면서 배우는 클린 아키텍처] Chapter9. 애플리케이션 조립하기 (0) | 2022.11.11 |
[만들면서 배우는 클린 아키텍처] Chapter6. 영속성 어댑터 구현하기 (0) | 2022.10.31 |
데이터 분산 처리 [Micro Service Architecture] (0) | 2022.05.27 |
Layered & Domain Architecture 란 무엇일까? (0) | 2022.05.03 |