Composite PK에서 시작된 Spring Boot 4 / Spring Batch 6 업그레이드 기록
Spring Data JDBC의 Composite ID 적용을 계기로 Spring Boot 4와 Spring Batch 6 업그레이드를 진행했습니다. 복합키 매핑, 배치 메타데이터 변경, Kotlin·Jackson·Gradle 호환성까지 함께 정리했습니다.

Spring Data JDBC의 Composite ID 적용을 계기로 Spring Boot 4와 Spring Batch 6 업그레이드를 진행했습니다. 복합키 매핑, 배치 메타데이터 변경, Kotlin·Jackson·Gradle 호환성까지 함께 정리했습니다.
신입 개발자에게 필요한 소통, 탐색, 기록, 질문의 태도를 중심으로 성장 방법을 정리했습니다. 완벽한 코드보다 동작하는 기능부터 시작해 점진적으로 개선하자는 메시지를 담았습니다.

Spring Data JDBC에서 LocalDate 컨버터가 기대와 다르게 동작하는 이유를 JDBC 내부 처리 순서와 Oracle 드라이버 차이로 분석했습니다. 이를 피하기 위해 커스텀 래퍼 타입과 양방향 컨버터로 저장 형식을 제어하는 방법을 정리했습니다.

CQRS와 MongoDB 도입 후에도 엑셀 다운로드가 느린 원인을 Tomcat의 NDJSON flush 병목에서 찾았습니다. 1000개씩 버퍼링해 직접 write하도록 바꿔 성능 개선을 이끌었습니다.

레거시 WebFlux 신용점수 조회 서비스를 WebMVC로 전환하며, Nginx 트래픽 미러링으로 실서비스 검증을 수행했습니다. 응답 자동 비교와 짧은 타임아웃으로 사용자 영향 없이 안정적으로 마이그레이션했습니다.

결제 도메인의 오류 처리를 위해 sealed class를 검토한 뒤 Arrow의 Either를 도입한 과정을 정리했습니다. 트랜잭션, 캐시, 예외 처리와의 충돌을 피하기 위해 계층별 경계도 함께 설계했습니다.

Node.js는 싱글스레드처럼 보이지만 내부적으로는 멀티스레드 요소를 활용하는 구조를 설명했습니다. 대용량 데이터 처리에서는 CPU 병목을 스케일아웃과 운영 설계로 풀어낸 사례를 다뤘습니다.

네이버페이 검색 서비스를 OpenSearch로 구축하며 색인 구조와 한글 검색 품질 개선 과정을 소개했습니다. 또한 무중단 패치, 최근 검색어 저장, 특수문자 예외 처리까지 운영 경험을 정리했습니다.
MySQL 기본 격리 수준인 REPEATABLE READ 때문에 결제 트랜잭션에서 오래된 잔액이 유지되는 문제를 겪었습니다. 락 위치와 격리 수준을 조정해 동시성 이슈를 해결하는 과정을 정리했습니다.

웹 기반 배치 생성 툴 FAST로 데이터 파이프라인 작성 과정을 단순화했습니다. 비개발자도 입력값만 채워 Airflow 배치를 만들고, 운영 공수도 줄였습니다.

Spring Security의 인증 과정을 Filter 체계와 주요 컴포넌트 중심으로 정리했습니다. 폼 로그인의 성공·실패 흐름과 예외 처리, SecurityContext 저장 과정을 설명했습니다.
