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

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


JDBC Driver 변경 이후 발생한 OOM 원인을 DB Connection 누수로 추적하고 Heap Dump로 확인했습니다. mysql-connector-j 업그레이드와 cleanup thread 비활성화로 문제를 해결했습니다.

가상 스레드의 고정(pinned) 이슈를 JDK 소스 코드로 분석했습니다. 블로킹 I/O와 synchronized, JNI 사용 시 발생 가능성과 한계를 살펴봤습니다.


정산 시스템을 PHP에서 Java 기반 Job Runner로 이관한 과정과 테크 스펙, 테스트, 마이그레이션 전략을 설명했습니다. 또한 URI 인코딩, Reader 페이징, timeout 등 트러블 슈팅 사례와 개선 효과를 정리했습니다.

Java 가상 스레드의 컨텍스트 스위칭 원리를 park/unpark와 Continuation 소스 코드로 분석했습니다. NioSocketImpl과 Poller 예시로 블로킹 I/O에서의 동작 흐름도 살펴봤습니다.


정산 시스템을 PHP에서 Java로 이관하며, 태스크 서버를 SNS·SQS·ECS 기반 Job Runner로 재설계했습니다. 작업 일관성, 재시도성, 확장성을 높이기 위한 아키텍처 선택 과정을 정리했습니다.

Java 가상 스레드의 생성과 시작 과정을 소스 코드로 분석했습니다. 플랫폼 스레드와 Continuation 구조를 통해 동시성 효율을 높이는 원리를 설명했습니다.

Java 개발자가 Kotlin을 사용하며 느낀 문법적 장점을 정리한 글입니다. null 안전성, data class, 기본 인자, 확장함수 같은 편의 기능을 소개했습니다.


ArchUnit으로 Java 아키텍처 원칙을 테스트 코드로 검증하는 방법을 소개했습니다. 패키지 의존성, 순환 의존성, 어노테이션 규칙을 자동으로 강제하는 예시를 담았습니다.


Spring Boot와 Java 버전업 과정에서 Gson 직렬화 에러의 원인을 자바 모듈 시스템 변화로 분석했습니다. `LocalDateTime`에 Custom TypeAdapter를 적용해 리플렉션 문제를 우회하고 해결했습니다.

해외 물류사 연동을 if-else 분기 중심에서 추상화와 팩토리, 조합 구조로 리팩토링했습니다. 이를 통해 신규 물류사 추가 시 기존 코드 수정과 테스트 부담을 크게 줄였습니다.
![[SpringBatch 연재 10] 스프링배치 플로우 컨트롤 하기](https://devocean.sk.com/thumnail/2024/11/29/20eb6934476f3b2a7a750153647d9f049eb9df33462a0b597ee5acfb5d95cf82.png)

Spring Batch의 Flow Controller로 Step 실행 순서와 분기 방법을 설명했습니다. next, on, from, stop을 이용해 조건별 배치 흐름을 구성하는 방법을 정리했습니다.