[250415]설계 사고 훈련 Q&A 정리

트라이캐치·2025년 4월 14일

출퇴근미니스터디

목록 보기
7/23
post-thumbnail

Q1. Message는 단순한 데이터 객체인가, 도메인 객체인가?

A. 도메인 객체다.

  • EmailMessage, SmsMessage 등 메시지 형태가 채널별로 다름
  • 유효성 검사, 생성 로직 등 도메인 로직 포함 가능
  • 단순 DTO가 아닌 의미를 가진 객체

Q2. 유효성 검사는 어디서 해야 할까?

A. 생성자 내부.

  • 생성 시점부터 유효한 상태 보장
  • 테스트와 유지보수 쉬움
  • 팩토리나 외부에서 검사하면 중복과 if 블록 증가 위험

Q3. 재시도는 어떤 기준으로 판단할까?

A. 실패 사유(errorCode)가 가장 중요하다.

  • 모두 재시도는 메모리 폭발 위험
  • 중요도만으로 판단하는 건 오류
  • “중요도 × 수단” 으로 재시도 횟수 정함

Q4. 재시도 판단은 어디서 해야 할까?

A. RetryPolicy에서 판단한다.

  • SendResult는 정보만 담고
  • 재시도 여부는 정책 객체가 해석
  • 책임 분리 원칙 적용

Q5. SendResult에는 어떤 필드가 들어가야 할까?

A. 결과, 메시지, 에러코드 등 의미 있는 정보들

  • result: 성공 여부
  • resultMessage: 설명 메시지
  • originalMessage: 원본 메시지 참조
  • errorCode / errorMessage: 실패 원인

Q6. 알림 전송 실패는 관리자에게 알려야 할까?

A. 반복 실패시만 알림.

  • 호출자는 이미 결과를 알고 있음
  • 특정 횟수 이상 실패는 시스템 이상 신호일 수 있음
  • 중요도가 아니라 관제의 의미로 관리자 알림 필요

0개의 댓글