목록 보기
도메인 Error를 다루는 고민과 Arrow의 Either
백엔드

도메인 Error를 다루는 고민과 Arrow의 Either

네이버 페이
네이버 페이
2025년 6월 24일

두줄요약

결제 도메인의 오류 처리를 위해 sealed class를 검토한 뒤 Arrow의 Either를 도입한 과정을 정리했습니다. 트랜잭션, 캐시, 예외 처리와의 충돌을 피하기 위해 계층별 경계도 함께 설계했습니다.

문제 상황

  • 결제 도메인에서 다양한 오류 상황을 일관되게 표현할 방식 필요
  • sealed class 기반 결과 모델은 분기 예측성은 높였지만, 반복 선언과 중첩 분기로 가독성 저하
  • 트랜잭션, 캐시, 프레임워크 예외 처리와 결합되며 경계 설정 문제 발생

해결 방법

  • Arrow의 Either로 성공과 실패를 분리한 Typed Error 처리 도입
  • 도메인과 서비스 계층에서 Either를 사용하고, 인프라 계층은 예외를 그대로 전파
  • @Transactional, @Cacheable, @ControllerAdvice와 충돌하지 않도록 예외 변환 지점 분리

성능/운영 포인트

  • 도메인별 Result 타입 반복 감소로 보일러플레이트 축소
  • Konsist로 Either 사용 계층을 CI에서 검증
  • 직렬화 부담과 도메인 침투를 피하기 위해 Either 사용 범위 제한

네이버 계열사 채용4건

채용 사이트에서 전체 보기

다음 읽기

#Kotlin 주제를 다룬 다른 회사 글

코드 품질 개선 기법 1편: 한 번 엎지른 <error>는 다시 주워 담지 못한다

에러 표현 방식은 복구 가능성과 호출자 처리 범위에 맞춰 선택해야 한다고 설명했습니다. 예시 코드에서는 입력 오류와 구현 실수를 다른 방식으로 분리해 개선했습니다.

라인
라인
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...