본문 바로가기

Spring2

Kotlin + Spring Boot: 비동기 멀티홉 환경에서 예외를 유실하지 않는 전략 마이크로서비스 아키텍처(MSA) 확산에 따라, 하나의 요청을 처리하기 위해 내부적으로 다수의 외부 API를 호출하는 '멀티홉(Multi-hop)' 구조가 보편화되었다. 성능 최적화를 위해 CompletableFuture나 @Async를 활용한 비동기 호출을 도입하지만, 이때 발생하는 가장 큰 문제는 비동기 스레드에서 발생한 예외가 호출자에게 전달되지 않고 소멸한다는 점이다.이펙티브 소프트웨어 설계 3장의 원칙을 바탕으로, Kotlin + Spring Boot 환경에서 비동기 예외를 안전하게 가로채고 처리하는 전략을 정리한다.1. 비동기 예외 처리가 어려운 이유전형적인 Spring MVC 환경에서는 요청을 처리하는 스레드와 예외가 발생하는 스레드가 일치한다. 따라서 @RestControllerAdvice는.. 2026. 3. 8.
Spring Profile과 외부설정 파일, 그리고 단위 테스트 보통 Spring 외부설정 파일을 하나로 통합하여 파일 내에서 profile 별로 구분짓곤 한다.필자의 회사에선 local, dev, alpha, beta, staging, real 의 단계로 서비스 개발 및 배포 스테이지를 구분한다.한 파일로 통합하여 관리하기엔, 가독성이 떨어진단 생각이고 우리 팀 내에서도 스테이지에 따라 application-dev.yml, application-alpha.yml 등과 같은 형식으로 파일을 분리하곤 한다. Unit Test를 위한 환경에 대한 고민이 필요하긴 하다. 특히나 DB의 경우 H2와 같은 인메모리 기반 DB로 테스트를 수행하기 보단 개발 자원에 여유가 충분하다면 Real DB 환경과 동일하게 구성하여 맞추는게 좋다고 생각한다. 그렇다고, src/main/re.. 2024. 7. 20.