Kotlin4 Kotlin + Spring Boot: 비동기 멀티홉 환경에서 예외를 유실하지 않는 전략 마이크로서비스 아키텍처(MSA) 확산에 따라, 하나의 요청을 처리하기 위해 내부적으로 다수의 외부 API를 호출하는 '멀티홉(Multi-hop)' 구조가 보편화되었다. 성능 최적화를 위해 CompletableFuture나 @Async를 활용한 비동기 호출을 도입하지만, 이때 발생하는 가장 큰 문제는 비동기 스레드에서 발생한 예외가 호출자에게 전달되지 않고 소멸한다는 점이다.이펙티브 소프트웨어 설계 3장의 원칙을 바탕으로, Kotlin + Spring Boot 환경에서 비동기 예외를 안전하게 가로채고 처리하는 전략을 정리한다.1. 비동기 예외 처리가 어려운 이유전형적인 Spring MVC 환경에서는 요청을 처리하는 스레드와 예외가 발생하는 스레드가 일치한다. 따라서 @RestControllerAdvice는.. 2026. 3. 8. Kotlin/Gradle 빌드 시 OOM 발생(?) (부제: Kotlin IR, KAPT를 다시 까보자) Kotlin 2, Spring Boot 3.x에 Gradle Multi-Module 기반으로 진행중인 프로젝트에서 발생했던 이슈 사항이었다.MSA를 염두에 두고 Core 모듈엔 라이브러리마다 공통화(fabric8 kubernetes client, JPA/Querydsl, ...) 처리를 해두고 개별 마이크로서비스에선 필요한 모듈을 참조하여 쓰고 있는 구조다.로컬 개발환경에서 테스트/빌드 수행 혹은 CI 환경에서 어느 순간부터 OOM 관련 이슈가 발생했는데 원인을 되짚어본다.사용하고 있는 라이브러리 및 Kotlin Compile, KAPT 등에 대해 전반적으로 살펴볼만하다. 해당 프로젝트에서 이슈처리 후 간략하게 문서화해둔 사항을 토대로 간략하게 키워드 위주로 글을 작성했으니 참고하자.배경CI 수행 및 로.. 2025. 12. 22. Kotlin 제너릭 완전 정복: 클래스 vs 함수, 타입 추론까지 제너릭(Generic)은 "타입을 파라미터화한다"는 점에서 클래스와 함수 모두에 적용될 수 있다.하지만 클래스 단위로 제너릭을 정의하는 것과 함수 단위로 정의하는 것은 의도도 다르고 타입 추론 방식도 다르다.이번 글에서는 Kotlin 제너릭의 핵심 개념부터 실무에서 활용할 수 있는 고급 패턴까지, 실제 코드 예제와 함께 그 차이를 명확히 짚어본다.제너릭 클래스 — 상태(state)에 타입을 입힌다제너릭 클래스는 객체의 속성(필드) 이나 클래스 내부 메서드 전체가 특정 타입에 맞춰 동작하도록 만드는 패턴이다.class Box(private val content: T) {fun get(): T = content}이 클래스는 Box, Box 등으로 인스턴스화될 수 있다.val intBox = Box(123)v.. 2025. 10. 5. Kotlin 함수형 프로그래밍 완전 정복 함수형 프로그래밍(Functional Programming, FP)은 함수를 일급 객체로 다루며, 순수 함수와 불변성을 중심으로 하는 프로그래밍 패러다임이다. Kotlin은 객체지향과 함수형 프로그래밍을 모두 지원하는 멀티 패러다임 언어로, 강력한 함수형 프로그래밍 기능을 제공한다.이 글에서는 Kotlin에서의 함수형 프로그래밍 기본 개념부터 고급 개념까지 차례대로 살펴보자.1. 함수형 프로그래밍 기본 개념1.1 일급 함수 (First-Class Functions)Kotlin에서 함수는 일급 객체다. 즉, 함수를 변수에 할당하고, 다른 함수의 매개변수로 전달하며, 함수의 반환값으로 사용할 수 있다.// 함수를 변수에 할당val add: (Int, Int) -> Int = { a, b -> a + b }/.. 2025. 10. 4. 이전 1 다음