DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 올리브영
  • Related reads#SpringBatch
#Backend

오프라인 매장에 코드를 배포하다 Part 2: 올리브영 전자라벨(ESL) 최적화 여정

오프라인 매장에 코드를 배포하다 Part 2: 올리브영 전자라벨(ESL) 최적화 여정
01

Summary

13일 걸릴 배치를 5분 만에 끝냈다, 올리브영의 ESL 성능 최적화 여정

Spring Batch 파티셔닝과 RDS Serverless v2로 잡은 성능과 비용 두 마리 토끼

올리브영이 전국 1,300개 매장에 전자라벨(ESL)을 도입하며 마주한 대규모 데이터 처리 병목 현상을 기술적으로 해결한 실전 사례입니다. 데드락 문제 해결을 위한 애플리케이션 레벨의 격리 전략과 클라우드 네이티브 DB를 활용한 인프라 탄력성 확보 과정을 심도 있게 다룹니다.

  • 01순차 처리 시 13일이 걸리는 방대한 작업을 단 5~10분 내외로 단축한 극적인 성능 개선
  • 02Spring Batch Partitioning을 활용해 병렬 스레드 간의 데이터 간섭을 0으로 만든 Lock Free 아키텍처
  • 03트래픽 파도에 맞춰 스스로 서핑하는 Aurora RDS Serverless v2 기반의 오토스케일링 전략
  • 04고정형 인스턴스의 비용 낭비 문제를 해결하고 운영 비용을 40% 이상 효율화
  • 05대규모 확산 과정에서 발생하는 자원 경합 문제를 '분할과 정복' 원리로 해결한 인사이트

+RECOMMENDATION

대용량 배치 성능 문제로 고민 중이거나, 프로모션 등 예측 불가능한 트래픽 변동에 대응할 수 있는 DB 운영 전략이 필요한 시니어 백엔드 엔지니어에게 일독을 권합니다.

The Problem

전국 1,300여 개 매장의 전자라벨 데이터를 순차 처리할 경우 약 13일이 소요되는 비현실적인 처리 시간이 발생했으며, 이를 해결하기 위해 단순 병렬 처리를 시도했으나 긴 트랜잭션과 자원 경합으로 인한 데드락(Deadlock) 오류로 시스템이 마비되었습니다.

The Solution

Spring Batch Partitioning을 도입하여 데이터를 PK 범위 기반으로 논리적으로 격리함으로써 워커 스레드 간의 자원 간섭을 제거한 Lock Free 구조를 설계하고, Aurora RDS Serverless v2를 통해 트래픽 부하에 따라 DB 자원이 자동 확장되도록 구성했습니다.

The Result

기존에 약 13일(19,500분)이 예상되던 전체 매장 배치 처리 시간을 10분 이내로 단축하는 성과를 거두었으며, 고정형 인스턴스 대비 약 40%의 비용 절감과 함께 프로모션 기간의 급격한 데이터 폭증에도 안정적인 대응이 가능해졌습니다.

Trade-off

본문에 구체적인 한계점이 명시되지는 않았으나, 일반적으로 파티셔닝을 통한 범위 기반 분할은 데이터 분포가 고르지 않을 경우 특정 워커에 부하가 쏠리는 데이터 왜곡(Skew) 문제가 발생할 수 있으며, 서버리스 DB의 경우 예상치 못한 ACU 급증에 따른 비용 변동성을 관리해야 하는 부담이 있습니다.

03

Key Concepts

Concept · 01

Spring Batch Partitioning

대량의 데이터를 여러 개의 작은 범위(Partition)로 나누어 여러 스레드나 프로세스가 독립적으로 처리하게 하는 확장 메커니즘입니다.

  • 전체 매장 데이터를 PK 범위 기반으로 논리적 격리 수행
  • 각 워커 스레드가 고유 범위만 처리하여 DB Lock 경합 원천 차단
  • 선형적인 성능 확장이 가능하도록 마스터-워커 구조로 설계
Concept · 02

Aurora RDS Serverless v2

애플리케이션의 요구 사양에 따라 데이터베이스 용량을 자동으로 조정하는 온디맨드 오토스케일링 DB 서비스입니다.

  • 배치 처리 중 ACU를 즉각적으로 확장하여 데이터 폭주 수용
  • 트래픽이 없는 평시에는 최소 사양으로 자동 축소하여 비용 최적화
  • 수동 개입 없이 중단 없는 확장(Seamless Scaling) 구현
Concept · 03

Lock Free Architecture

여러 스레드가 공유 자원에 접근할 때 락(Lock)을 사용하지 않고도 데이터 일관성을 유지하며 병렬성을 극대화하는 설계 방식입니다.

  • 트랜잭션 범위 내의 인덱스 경합을 피하기 위해 물리적 데이터 접근 영역 분리
  • 자원 점유를 위한 대기 시간을 제거하여 CPU 및 I/O 효율을 극대화
  • 단순 병렬 처리에서 발생하는 Deadlock Loser 오류 문제의 근본적 해결책으로 활용
Continue reading · same source

올리브영More from 올리브영

View all posts from 올리브영
  • 옴니채널 재고 정합성 한계에 대응하는 인벤토리 데이터 파이프라인 구축기

    KafkaSpring BatchEDA
    1주 전
  • 에러로그 하나에 깨던 새벽에서 벗어나기까지 — 상품 모니터링 진화기

    DatadogCDCAutomation
    1주 전
  • 150개국 K-뷰티 플랫폼 뒤의 팀, 올리브영 글로벌엔지니어링센터의 첫 번째 워크숍 이야기

    GenAIVibe CodingVertex AI
    2개월 전
  • 45분 배치에서 준실시간으로! 다수 도메인 데이터를 Kafka로 통합한 전환기

    KafkaEvent-Driven ArchitectureRedis Pub/Sub
    2개월 전
  • AI와 협업하는 새로운 개발 프로세스, 올리브영은 어떻게 시작했을까 (feat. AI-DLC)

    AI-DLCSDLCAWS
    2개월 전

Related reads#SpringBatch

Explore #SpringBatch
무신사·Java Flight Recorder

의심했던 범인은 알리바이가 있었다.

#SpringBatch4일 전
올리브영·Kafka

옴니채널 재고 정합성 한계에 대응하는 인벤토리 데이터 파이프라인 구축기

#SpringBatch1주 전
SSG

“장보기 지원금이 곧 소멸돼요” 알림 뒤에서 일어난 일

#SpringBatch1개월 전
카카오페이

수억 건의 데이터, 맛있게 쪼개 먹는 방법 (with. Partitioning)

#SpringBatch3개월 전

Source

올리브영
올리브영
Engineering Blog

Published · February 10, 2026

Topics

Spring BatchPartitioningRDS Serverless v2Performance OptimizationDatabase LockScalabilityCloud Native