아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
네이버 페이 favicon네이버 페이

Kotlin, Arrow, Spring Boot로 도메인 에러를 잡다!

by DD
2025-06-24
1년 전
조회수 6

Kotlin 기반 결제 시스템에서 도메인 에러 처리를 위해 Sealed Class를 활용했으나, 반복적인 코드 작성이 문제로 대두됨

Railway Oriented Programming(ROP) 개념을 도입, Arrow의 Either를 통해 성공과 실패를 명확히 분리하여 코드 가독성 향상

@Transactional 롤백 문제, 직렬화 문제 등 Either 사용 시 고려사항을 공유하고, 책임 분리 설계를 통해 문제 해결

Sealed Class에서 Arrow.Either로의 전환

구체적으로 Sealed Class를 활용하여 도메인 에러를 처리했지만, 반복적인 코드 작성과 중첩된 구조로 인해 가독성이 저하되었다. 따라서 Railway Oriented Programming(ROP) 개념을 도입하고, Arrow의 Either를 적용하여 성공과 실패를 명확하게 분리했다. 결과적으로 코드 중복 감소와 유지보수성 향상을 달성했다.

Either 사용 시 발생 가능한 문제점

반면 @Transactional과 Either를 함께 사용할 때, 롤백이 제대로 동작하지 않는 문제가 발생했다. 구체적으로 raise() 함수가 예외를 던지지 않고 Either.Left를 반환하여, Spring의 트랜잭션 매니저가 예외를 감지하지 못했다. 따라서 책임 분리를 통해 문제를 해결하고, 데이터 일관성을 확보했다.

Either의 적용 범위와 아키텍처 설계

결과적으로 Either의 무분별한 전파를 막기 위해, 도메인 로직 내에서만 사용하고, I/O 작업(Infrastructure) 계층에서는 전통적인 예외 처리를 유지했다. 구체적으로 Konsist를 활용하여 아키텍처 규칙을 자동화 테스트로 검증하여, 코드 일관성과 안정성을 확보했다.

도메인 Error를 다루는 고민과 Arrow의 Either
고급
아키텍처
Kotlin
Arrow
Spring Boot
Either
Java
Backend
원문 읽기
원문 읽기

댓글 0

첫 번째 댓글을 남겨보세요!

관련 추천 글

AI 시대, 백엔드 개발자는 문제 해결 능력과 유연한 기술 선택이 핵심!

요즘IT 로고

20년 레거시를 혁신한 토스페이먼츠의 기술 여정

토스 로고

2025년 상반기 프리랜서 개발자 시장 분석: 급여, 기술, 경쟁

요즘IT 로고

10년 된 레거시, DDD로 혁신! CQRS, 멀티 모듈, JPA로 매장 도메인 구현

올리브영 로고

Spring Boot 4, Kotlin 개발 환경을 더욱 강력하게!

스프링 로고

Spring Boot 4/Batch 6 업그레이드, Composite PK 지원을 위한 여정

네이버 페이 로고
네이버 페이 favicon네이버 페이
고급
아키텍처
Kotlin
Arrow
Spring Boot
Either
Java
Backend

관련 추천 글

AI 시대, 백엔드 개발자는 문제 해결 능력과 유연한 기술 선택이 핵심!

요즘IT 로고

20년 레거시를 혁신한 토스페이먼츠의 기술 여정

토스 로고

2025년 상반기 프리랜서 개발자 시장 분석: 급여, 기술, 경쟁

요즘IT 로고