

검색엔진에 의존하지 않는 Reranking API 개발하기
ES에 의존하던 LTR 구조를 분리해 rerank API와 model API로 재구성했습니다. gRPC, 응답 압축, 2단계 캐싱으로 성능과 운영 리스크를 함께 개선했습니다.
새로운 기술 블로그가 추가되었어요


ES에 의존하던 LTR 구조를 분리해 rerank API와 model API로 재구성했습니다. gRPC, 응답 압축, 2단계 캐싱으로 성능과 운영 리스크를 함께 개선했습니다.


C++로 운영하던 대규모 트래픽 서버를 Java와 Spring Boot로 전환한 과정을 정리했습니다. 성능 검증, Canary 배포, GC 개선까지 거쳐 안정적으로 이관했습니다.


JdbcPagingItemReader와 MySqlPagingQueryProvider의 페이지네이션 동작과 주의사항을 정리했습니다.\nsort key와 group clause 설정에 따라 데이터 누락과 SQL 오류가 발생할 수 있어 조심해야 했습니다.
![[SpringBatch 연재 11] Job 및 Step 마다 시작/종료시 특정 작업 수행하기](https://devocean.sk.com/thumnail/2024/12/26/95de41563306b50b08e112611c20b460ffdb998402563c664b36435efb370c61.png)

Spring Batch에서 Job과 Step의 시작/종료 시점에 실행할 작업을 Listener로 연결하는 방법을 설명했습니다. JobExecutionListener와 StepExecutionListener 등록 예시와 실행 로그 흐름을 함께 보여주었습니다.

보험금 청구의 불편함을 줄이기 위해 즉시지급 프로세스를 구축한 사례를 소개합니다. 레거시 분리, 문서 인식 자동화, 워크플로 개선으로 비용과 처리 시간을 크게 줄였습니다.

매월 반복되던 재무 결산을 Spring Batch와 코드 중심 구조에서 Airflow와 dbt 기반 데이터 파이프라인으로 전환했습니다. SQL 수정만으로 결산 대응이 가능해져 유연성과 가시성을 높였습니다.


정산 시스템을 PHP에서 Java로 이관하며, 태스크 서버를 SNS·SQS·ECS 기반 Job Runner로 재설계했습니다. 작업 일관성, 재시도성, 확장성을 높이기 위한 아키텍처 선택 과정을 정리했습니다.
이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.


MongoDB 트랜잭션의 동작 조건과 Snapshot Isolation, Write Conflict를 설명했습니다. 또한 복제 지연과 이벤트 발행 타이밍 문제를 PRIMARY 설정과 AFTER_COMMIT 이벤트로 해결했습니다.


증정 행사 조회 트래픽 급증 문제를 해결하기 위해 RDS, ElastiCache, 로컬 캐시를 결합한 다중 레이어 캐시를 적용했습니다. 그 결과 TPS는 크게 증가하고 Redis 네트워크 송신량은 대폭 감소했습니다.


Spring Boot와 Java 17 업그레이드 후 Gson의 LocalDateTime 직렬화 오류 원인을 분석했습니다.\n강화된 모듈 캡슐화를 Custom TypeAdapter로 우회하는 방식을 소개합니다.


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


Spring Kafka의 seek 기능으로 컨슈머를 멈추지 않고 오프셋을 이동하는 방법을 정리했습니다. 분산 환경에서는 HTTP API와 Redis Pub/Sub로 요청을 전파해 그룹 단위 재처리를 구현했습니다.

올리브영 선물하기관은 DB 의존과 배치 지연으로 성능과 신뢰성 문제가 있었습니다. 전시 전략 통합과 AOP·리플렉션 기반 개선으로 빠르고 정확한 서비스로 개편했습니다.


광고 업체 유효성 검사 시스템을 API 중심 구조에서 배치와 Kafka 실시간 처리 구조로 단계적으로 개선한 사례입니다. MySQL, Redis, gRPC를 함께 활용해 확장성과 운영 효율을 높였습니다.