kongkong.note

[만들면서 배우는 클린 아키텍처] 05~07장 본문

SW 아키텍처/클린 아키텍처

[만들면서 배우는 클린 아키텍처] 05~07장

hyokong 2026. 3. 14. 21:00
책 정보

 

목차

05. 웹 어댑터 구현하기

06. 영속성 어댑터 구현하기

07. 아키텍처 요소 테스트하기

 

NOTE.

✅ 웹 어댑터(controller)의 책임

1. HTTP 요청을 자바 객체로 매핑
2. 권한검사
3. 입력 유효성 검증
4. 입력을 유스케이스의 입력 모델로 매핑
5. 유스케이스 호출
6. 유스케이스의 출력을 HTTP로 매핑
7. HTTP 응답을 반환

✅ 웹 어댑터와 애플리케이션 계층 간의 경계

인커밍 어댑터 생각할 필요 없이, 유스케이스를 먼저 구현하면 경계를 자연스럽게 만들 수 있다. (책임 분리)

✅ 컨트롤러 나누기

  • 클래스마다 코드는 적을수록 좋다.
    • 모델을 공유하지 않는 여러 작은 클래스들을 만드는 것을 두려워하지 마라.
  • 각 연산에 대해 가급적이면 별도의 패키지 안에 별도의 컨트롤러 만드는 것을 선호한다.
    • 전용 모델 클래스들은 컨트롤러의 패키지에 대해 private으로 선언해서, 실수로 다른 곳에서 재사용되지 않도록 한다.
    • 각 컨트롤러마다 필요한 필드가 다르기 때문에 결국 새로운 모델을 만들도록 간접적 적용하는 것.
  • 메서드와 클래스명은 유스케이스를 최대한 반영해서 짓는다.

✅ 영속성 어댑터의 책임

1. 입력 받는다.
2. 입력을 데이터베이스 포맷으로 매핑한다.
3. 입력을 데이터베이스로 보낸다.
4. 데이터베이스 출력을 애플리케이션 포맷으로 매핑한다.
5. 출력을 반환한다.

✅ 영속성 어댑터 분리

하나의 애그리거트당 하나의 영속성 어댑터를 만들어, 여러개의 영속성 어댑터를 두는게 좋다.

✅ 테스트 피라미드

기본 전제 : 비용 적고, 유지보수 쉽고, 실행 빠르게

✅ 단위 테스트

  • @Test
  • 도메인 엔티티 테스트, 유스케이스 테스트

✅ 통합 테스트

  • @WebMvcTest, @DataJpaTest
  • 의존성의 상호작용 테스트 목적
  • 웹 어댑터 테스트, 영속성 어댑터 테스트

✅ 시스템 테스트

  • @SpringBootTest
  • 전체 애플리케이션을 띄우고 API를 통해 요청을 보내고 동작 검증 목적