

Spring Transactional Rollback Deep Dive
Spring @Transactional 의 롤백이 언제 마킹되는지 예외 타입과 프록시 동작을 기준으로 정리했습니다. Kotlin 과 REQUIRES_NEW 까지 포함해 실제 동작 차이와 주의점을 설명했습니다.


Spring @Transactional 의 롤백이 언제 마킹되는지 예외 타입과 프록시 동작을 기준으로 정리했습니다. Kotlin 과 REQUIRES_NEW 까지 포함해 실제 동작 차이와 주의점을 설명했습니다.

레거시에서 매장 도메인을 분리하기 위한 멀티모듈 아키텍처와 CQRS 적용 과정을 소개했습니다. 또한 Entity와 VO를 추상화해 도메인 모델을 구현한 사례를 설명했습니다.

분산 환경에서 로컬 캐시와 Redis Pub/Sub을 함께 사용해 조회 성능을 높이고 데이터 정합성을 맞추는 방법을 설명했습니다. 서버별 캐시 불일치와 오래된 데이터 문제를 줄이기 위한 설계와 구현 경험을 공유했습니다.

Spring Cloud Stream으로 데이터 추출과 조합 파이프라인을 구성한 사례를 소개했습니다. 멀티 모듈과 Function 규격화를 통해 확장성과 결합도 개선 방향도 제시했습니다.

반복문 내부의 큰 조건 분기가 흐름 파악과 대응 관계를 어렵게 만든다고 설명했습니다. 이를 해결하는 네 가지 재구조화 방식과 각 장단점을 정리했습니다.

Kotlin과 Java에서 SLF4J 로깅 시 불필요한 문자열 연산을 줄이는 방법을 다뤘습니다. 성능과 가독성을 비교해 Parameterized Logging과 kotlin-logging의 선택 기준을 제시했습니다.

함수는 값이 이미 확인됐다는 암묵적 가정에 의존하지 않도록 설계해야 합니다. 내부 검증, 반환값 처리, 타입 보장으로 책임을 명확히 나누는 방법을 소개했습니다.
쿠팡 파트너스
이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

코틀린 코루틴의 예외가 부모-자식 관계를 따라 전파되며 전체 취소로 이어지는 과정을 설명했습니다. 실무에서는 발생 지점 처리와 supervisorScope 같은 방법으로 전파 범위를 조절하는 방식이 필요합니다.


ViewModel의 1회성 이벤트 전파에 쓰던 EventFlow를 Channel로 바꾸는 방법을 정리했습니다. 구독자 부재와 재수집 상황을 고려해 receiveAsFlow()와 Channel.BUFFERED 사용 이유도 설명했습니다.

Java의 static function을 Kotlin에서 어떻게 대체할 수 있는지 성능 관점에서 살펴본 글입니다. 여러 방식의 차이를 비교해 적절한 선택 기준을 정리했습니다.

오픈뱅킹 단일 시스템에 있던 카드 청구금액 알림 서비스를 별도 시스템으로 분리한 이관 과정을 공유했습니다.외부 의존성과 재처리, 검증 전략 조정 과정을 통해 안정적으로 전환한 경험을 정리했습니다.