
옴니채널 재고 정합성 한계에 대응하는 인벤토리 데이터 파이프라인 구축기
옴니채널 재고 정합성과 확장성 문제를 해결하기 위해 인벤토리 데이터 파이프라인을 이벤트 기반으로 재설계했습니다. Spring Batch, Kafka Fan-Out, Push/Pull 분리로 리드타임과 부하를 줄였습니다.

옴니채널 재고 정합성과 확장성 문제를 해결하기 위해 인벤토리 데이터 파이프라인을 이벤트 기반으로 재설계했습니다. Spring Batch, Kafka Fan-Out, Push/Pull 분리로 리드타임과 부하를 줄였습니다.

JVM 힙은 정상인데 컨테이너가 OOMKilled되는 원인을 네이티브 메모리에서 추적했습니다. 스트림 close 누락과 zlib Inflater 버퍼가 핵심이었고, 도구 조합으로 범인을 찾았습니다.

Docker 환경에서 힙은 멀쩡한데 메모리가 계속 늘어나는 원인을 추적한 글입니다. NMT로 JVM 내부를 확인했지만 실제 RSS와 차이가 있어 네이티브 메모리 문제를 의심했습니다.

Spring Data Redis Repository와 RedisTemplate의 실전 성능을 비교했습니다. 단순 캐시에는 RedisTemplate이 더 적합하며 CPU와 메모리 효율이 좋았습니다.

의료 설문 플랫폼에서 설문 정의와 수집을 담당하는 서비스를 헥사고날 구조와 CQRS로 설계했습니다. Master/Snapshot, Kafka, Outbox 등을 적용해 정합성과 운영 안정성을 확보했습니다.

기획전 API의 중복 조회와 중첩 저장 구조를 분리해 성능을 개선한 사례를 다뤘습니다. 다만 구조 분리만으로는 충분하지 않아 실제 조회 패턴과 운영 부하까지 함께 고려해야 했습니다.

메가MGC커피가 RDS for MySQL을 Aurora Serverless v2로 전환해 오전 피크 트래픽 대응력을 높였습니다. 또한 Read Replica 기반 Cut-over와 ACU 조정으로 안정성과 비용 효율을 함께 확보했습니다.

K8s 환경에서 반복 재시작의 원인이 OOMKilled일 때 Heap Dump와 MAT로 원인을 추적하는 방법을 다뤘습니다. 로그로 보이지 않는 메모리 누수와 참조 관계를 분석해 DB I/O 병목까지 찾아내는 흐름을 설명했습니다.

메뉴 권한처럼 변경은 적고 조회는 많은 데이터를 싱글톤 인메모리 캐시로 관리하는 방법을 소개했습니다. 이를 통해 로그인 시 DB 부하를 줄이고 응답 속도와 유지보수성을 개선했습니다.

Appium E2E 자동화에서 테스트 실행과 운영을 GitHub Actions와 n8n으로 분리한 구조를 정리했습니다. 실패 원인 추적과 알림·기록 변경을 쉽게 하기 위한 경계 설정이 핵심입니다.

실시간 모니터링에서 계산식 메타데이터 동기화 문제를 다뤘습니다. `putIfAbsent()` 한계를 보완하기 위해 `replace()`로 변경 감지와 이벤트 발행을 개선했습니다.
Toss는 lodash의 한계를 보완한 현대적 유틸리티 라이브러리 es-toolkit을 만들고 OSS로 확산시켰습니다. 호환 레이어와 성능 개선으로 대형 프로젝트 채택과 주간 2천만 다운로드를 달성했습니다.