hexagonal 2
Layerd architecture
웹 레이어에서 퍼시스턴스 계층의 의존되고, 도메인 로직이 발생 됨.
테스트 코드 작성의 어려움.
유즈케이스가 감춰지는 것.
-
새로운 코드를 작성하는 것보다 기존 코드 유지보수 하는 시간이 더 오래 걸리게 된다.
-
계층형 아키텍처에서는 도메인 로직을 흩어지게 만든다.
Hexagonal architecture
 
구성요소
UseCase

-
입력값을 받는다
-
검증을 한다
-
모델 상태를 관리한다
-
출력값을 리턴한다
검증

useCase에서 검증 로직이 수행되어야 한다.
이유는 유즈 케이스 이후로는 애플리케이션 코어로 들어가기 때문이다.
조회 전용(Read-Only) UseCase
 책 내용
이런 식으로, 읽기 전용 쿼리는 코드베이스에서 사용 사례 (또는 "명령")를 수정하는 것과 명확하게 구분됩니다. 이것은 CQS (Command-Query Separation) 및 CQRS (Command-Query Responsibility Segregation)와 같은 개념에서 잘 작동합니다. 위의 코드에서 서비스는 실제로 쿼리를 발신 포트로 전달하는 것 외에 다른 작업을 수행하지 않습니다. 의존성 역전의 법칙
  
Adapter 구현
 지속성 문제에 대해 생각할 필요없이 도메인 코드를 발전시킬 수 있도록 지속성 계층에 코드 의존성이없는 의미의 도메인 코드를 발전시킬 수 있도록이 간접 계층을 추가하고 있음을 상기시켜 보겠습니다.

 -
입력값을 받는다
-
데이터베이스 포맷으로 인풋을 변환한다
-
데이터베이스로 입력값을 보낸다
-
데이터베이스 출력값을 애플리케이션 포멧으로 보낸다
-
출력값을 리턴한다

 

잘게 나눈 스타일의 추가적인 이득은 병렬적으로 서로 다른 기능을 만들어 낼 수 있다.
서로 다른 기능을 작업하기 때문에 두명 개발자들은 병합으로 인한 충돌이 발생하지 않는다.
pakcage 구조
 
 테스팅 전략

맵핑 전략
   
  
패키지 검증 툴
 

테스트 방식
Unit Test
  Itegration Test
 
Persistence Adapter with Integeration Tests
  도메인 중심으로 코드를 작성할 수 있는 것과,
단일 책임 원칙,
인터페이스 분리의 원칙,
의존성 역전의 법칙을 유지하면서 코드가 작성이 가능하다.
또한 이런 헥사고날 아키텍처의 중심엔 도메인이 있다는 것이 더 중요하고,
추후에 경험을 쌓으면 더 나은 아키텍처 스타일을 구축할 수 있지 않을까 라고 저자는 말한다.
좋은 책이다.