모든 블로그
마켓컬리

마켓컬리

주요 카테고리 백엔드 · AI · 아키텍처

활동 요약

대표 인기 포스트Claude Code를 활용한 예측 가능한 바이브 코딩 전략370 조회
최근 30일
3개
평균 조회
27
누적 조회
6,328
전체 글
236개
마지막 발행
2026. 11. 9.
블로그 방문

마켓컬리 기술 블로그 글 (84)

백엔드

주소정제 서비스 내재화 - 2화 ( 그럴싸한 계획 )

외부업체 호출을 줄이기 위해 행안부 API와 축적 데이터를 활용한 주소정제 1.0을 운영에 올렸습니다. 그러나 행안부 API 지연으로 장애가 발생해 핫픽스로 완화했고, 장기 해법은 아니라고 재평가했습니다.

#API#cache#모니터링
3300

백엔드

주소정제 서비스 내재화 - 3화 ( 노가다의 달달한 열매 )

행안부 네비게이션용 DB를 활용해 전국 건물 DB를 내재화한 과정을 설명했습니다. 일단위 자동 동기화와 건물관리번호 기반 개선으로 운영 시너지를 얻었습니다.

#DB#API#위경도
3400

백엔드

주소정제 서비스 내재화 - 4화 ( 슬픈예감 )

주소정제 서비스에서 단독건물 처리 로직과 주소 파싱 과정을 내재화한 과정을 설명했습니다. 행정구역 변경과 휴먼 에러에 대응하며 외부 호출을 줄이기 위한 안정화 전략도 다뤘습니다.

#Java#DB#test
3700

백엔드

주소정제 서비스 내재화 - 5화 ( 어질어질한 변화구들 )

복합건물 주소정제의 어려움과 정확도 레벨 체계를 정리했습니다. 전처리, 연관 건물 탐색, 백오피스 관리로 외부 API 의존을 줄인 과정을 소개했습니다.

#주소정제#복합건물#행안부
5000

백엔드

주소정제 서비스 내재화 - 마지막 화 ( 엔드 게임 )

외부업체 주소정제 의존을 줄이기 위해 지번 요청과 LOW 레벨 주소를 내재화한 과정을 정리했습니다. 변경이력 DB와 백오피스 보정으로 계약 종료까지 안정적으로 마무리했습니다.

#API#DB#refactoring
4200

백엔드

99%가 모른다는 DB Connection 누수 문제

짧은 HikariCP max-lifetime과 mysql-connector-j 정리 스레드 병목으로 발생한 Connection 누수를 분석했습니다. 드라이버 업그레이드와 정리 스레드 비활성화로 OOM 문제를 해결했습니다.

#Java#MySQL#JPA
500

백엔드

99%가 모른다는 DB Connection 누수 문제

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

#DB#Java#MySQL
13730

백엔드

딜리버리 프로덕트 개발팀의 개발문화 - 로그 & 알람편

운영 로그의 기준을 다시 정리해 실제 장애와 가짜 에러를 구분하는 방법을 다뤘습니다. 알람 노이즈를 줄이고 빠른 인지를 위해 로그 레벨과 임계치를 팀 기준으로 조정했습니다.

#logging#모니터링#알람
7600

백엔드

MySqlPagingQueryProvider 살펴보기

MySqlPagingQueryProvider의 sort key 기반 페이지 처리 방식으로 발생한 데이터 누락과 SQL 오류를 분석했습니다. 고유 sort key 사용과 group by 시 별칭 제거로 문제를 해결했습니다.

#Spring Batch#MySQL#Kotlin
500

백엔드

MySqlPagingQueryProvider 살펴보기

JdbcPagingItemReader와 MySqlPagingQueryProvider의 페이지네이션 동작과 주의사항을 정리했습니다. sort key와 group clause 설정에 따라 데이터 누락과 SQL 오류가 발생할 수 있어 조심해야 했습니다.

#Spring Batch#Spring Boot#MySQL
3400

백엔드

Spring Boot 버전업 중 알게된 Java 버전별 캡슐화 정책 강화

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

#Spring Boot#Java#Gson
100

백엔드

Spring Boot 버전업 중 알게된 Java 버전별 캡슐화 정책 강화

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

#Spring Boot#Java#Gson
5200

백엔드

분산 시스템 환경에서 Kafka Consumer 오프셋 이동하기

Spring Kafka의 seek 기능으로 컨슈머 중단 없이 Kafka 메시지를 재처리하는 방식을 소개했습니다. Redis Pub/Sub로 요청을 전파해 분산된 모든 컨슈머에서 오프셋을 이동했습니다.

#Kafka#Spring Kafka#Redis
400

백엔드

분산 시스템 환경에서 Kafka Consumer 오프셋 이동하기

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

#Kafka#Spring Boot#Spring Kafka
4500

백엔드

컬리의 새로운 배송 시스템 구축 과정과 우리가 배운점

새로운 배송 시스템을 점진 전환과 롤백 가능 구조로 설계해 안정적으로 교체했습니다. 현장 협업과 반복 검증을 통해 배송 불가와 장애 없이 전환을 완료했습니다.

#Kafka#agile#스쿼드
5000

백엔드

엑셀 업로드 중 발생한 Zip Bomb 에러 파헤치기! 🥊

엑셀 내부 styles.xml의 반복 스타일이 높은 압축률을 만들어 Apache POI의 Zip Bomb 탐지를 유발했습니다. 압축 해제 비율을 조정해 우선 해결하고, 크기·중첩 레벨 제한을 보안 대안으로 제시했습니다.

#Java#Apache POI#Excel
100

백엔드

엑셀 업로드 중 발생한 Zip Bomb 에러 파헤치기!

엑셀 업로드 중 Apache POI가 Zip Bomb으로 파일을 차단한 원인과 로그 분석 과정을 정리했습니다. 최소 압축 비율 조정과 파일 크기·중첩 레벨 점검으로 대응했습니다.

#Java#Apache POI#보안
4400

백엔드

하이버네이트의 시간은 거꾸로 간다

Spring Boot와 Hibernate 업그레이드 후 KST 환경의 LocalTime 변환 오류를 분석했습니다. 나노초를 제거하는 Converter로 임시 대응하고 통합 테스트 필요성을 확인했습니다.

#Spring Boot#Hibernate#Java
300