https://www.cosmicpython.com/book/appendix_validation.html
검증은 검증하는 내용에 따라 문법(메시지의 구조), 의미론(메시지의 뜻), 화용론(메시지에 대한 응답을 관리하는 비즈니스 로직)으로 구분된다.
엔티티(도메인 모델)과 멀고 사용자 입출력에서 가까운 "가장자리"에서 검증하는 게 깔끔한 코드에 유리하다.
검증 처리 위치 추천과 예시
- 문법: 메시지 클래스(=서비스 입력 DTO)
- 주문 메시지에는 주문 ID, 상품, 수량이 있어야 한다.
- 상품은 문자열이다.
- 수량은 양의 정수다.
- 의미론: 서비스 계층, 메시지 버스(있다면)
- 입력한 key에 해당하는 상품이 DB에 존재하지 않는다.
- 도메인 모델을 수행하기 위한 사전조건에 해당한다. 모든 비즈니스 로직을 사전조건에서 처리하지 않도록 주의한다.
- 화용론: 엔티티(도메인 모델)