’‘‘주문 ’‘‘1 건이 ’‘‘성공적으로 처리되기 위해서 ’‘‘평균 ’‘‘15-30 개의 시스템 호출이 발생한다’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’ — 검색·카탈로그·장바구니·재고·결제·배송·정산·알림·통계 등 ’‘‘동시에 살아있어야 하는 컴포넌트만 ’‘‘10 개 이상’‘’‘’‘. ’‘그 중 ’‘한 곳만 ’‘‘한 번 ’‘‘잘못되면’‘’‘’‘’‘’‘’‘’’* — ’‘돈은 빠졌는데 주문은 안 들어감, ’‘1000 명이 동시에 마지막 1 개 사려고 함, ’‘검색 결과가 ’‘왜 그 상품을 안 보여주냐’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. ’‘‘이커머스 시스템 아키텍처’‘’‘’’* 는 ’‘그 사고들을 ’‘‘어떻게 막을지의 ’‘‘역사’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. 이 글은 *’‘한 주문이 도는 라이프사이클’‘’‘’‘’’’‘MSA + 이벤트 + Outbox + Saga + 동시성 제어 + 검색’’* 6 가지 축으로 ’‘도메인 지식으로 ’‘‘풀어본다’‘’‘’‘’‘’‘’‘*.

이 글은 ’‘공개된 도메인 지식’‘’‘’‘’’ 만 다룬다. ’‘특정 회사의 ’‘내부 구현 / 운영 노하우’‘’‘’‘’‘’‘’’’‘공개된 자료 (DEVIEW, IF Kakao, 토스 SLASH, 우아콘) 인용’‘’‘’‘’‘’‘’’* 으로 ’‘‘한정’‘’‘’‘’‘’‘*.


1. ’‘이커머스 시스템의 ’‘3 가지 근본 어려움*’‘’‘’‘’‘’‘’‘’‘’’*

이커머스 시스템이 ’‘다른 시스템과 ’‘‘다른 이유’‘’‘’‘’’’‘돈 + 재고 + 시간이 ’‘동시에 ’‘틀어진다’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. ’‘세 가지 차원이 ’‘서로를 ’‘‘결정한다’‘’‘’‘’‘’‘’‘.

차원 어려움
(결제) ’‘중복 결제 / ’‘실패한 결제 / ’‘환불 / ’‘Race condition*’‘’‘’‘’‘’‘’‘’‘’‘’‘’’*
재고 (Inventory) ’‘1000 명이 ’‘마지막 1 개를 ’‘동시에 ’‘시도*’‘’‘’‘’‘’‘’‘’‘’‘’’
시간 (이벤트 순서) ’‘주문 → 결제 → 배송 → 환불 → 정산의 ’‘상태가 ’‘역행하지 않게’‘’‘’‘’‘’‘’‘’‘’’

’‘세 차원이 ’‘모두 분산 시스템에서 ’‘일관성을 유지’‘’‘’‘’‘’‘’‘’‘’’ 해야 한다는 게 ’‘이커머스의 ’‘진짜 문제*’‘’‘’‘’‘’‘’‘*.

2. ’‘한 주문의 ’‘라이프사이클** — ’‘*12 단계’‘’‘’‘’‘’‘’‘’’*

[사용자]
  │
  │ ① 접속 (HTTPS)
  ▼
[CDN / 로드밸런서]
  │
  │ ② 검색
  ▼
[Search Service] ←──→ Elasticsearch / OpenSearch
  │
  │ ③ 상품 상세 조회
  ▼
[Catalog Service] ←──→ MySQL/PostgreSQL + Redis (캐시)
  │
  │ ④ 장바구니 담기
  ▼
[Cart Service] ←──→ Redis (사용자 키 기반)
  │
  │ ⑤ 주문 시도 (Order 생성)
  ▼
[Order Service] ──┬─→ [Inventory Service] (재고 락 / 차감)
                  │
                  └─→ [Payment Service] (결제 요청)
                       │
                       │ ⑥ PG 결제 호출
                       ▼
                  [외부 PG: 토스/이니시스/카카오페이]
                       │
                       │ ⑦ PG 콜백 (성공/실패)
                       ▼
[Payment Service] ──→ Order 확정 (Order Status: PAID)
  │
  │ ⑧ 이벤트 발행 (Outbox → Kafka)
  ▼
[Kafka: OrderPlacedEvent]
  ├──→ [Shipping Service] 배송 준비 + 송장
  ├──→ [Settlement Service] 정산 계산 (셀러 수수료)
  ├──→ [Notification Service] 알림 (메일/SMS/푸시)
  ├──→ [Analytics Service] 통계 / BI
  └──→ [Recommendation Service] 사용자 선호 업데이트
  │
  │ ⑨ 배송 진행
  ▼
[Shipping Service] ←──→ 택배사 API (CJ대한통운/한진/롯데)
  │
  │ ⑩ 배송 완료 / 구매 확정
  ▼
[Order Service] ──→ Order Status: DELIVERED → CONFIRMED
  │
  │ ⑪ 정산 실행 (D+N 일 후 셀러에게 송금)
  ▼
[Settlement Service]
  │
  │ ⑫ 환불 / 반품 (선택)
  ▼
[Refund Flow: 보상 트랜잭션]

’‘12 단계’‘’‘’’* 중 ’‘①-⑦ 은 동기적 (사용자 대기)’‘’‘’‘’‘’‘, *’‘⑧-⑫ 는 비동기적 (백그라운드)’‘’‘’‘’‘’‘’‘. ’‘’‘동기-비동기 경계 설계가 ’‘*시스템 응답성을 결정한다’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘*.

3. ’‘핵심 컴포넌트 ’‘‘9 개’‘’‘’‘’‘’‘’‘’’*

영역 책임 대표 기술 데이터 특성
검색 상품 찾기 + 정렬 Elasticsearch / OpenSearch + dense embedding Read 압도적, 인덱스 분리
카탈로그 상품 메타 / 가격 RDS (MySQL/PostgreSQL) + Redis Read 많음, Cache aside
장바구니 임시 보관 Redis (Key=userId) 휘발성 OK, TTL 1-7 일
주문 트랜잭션 핵심 RDS (강한 일관성) ACID 필수
재고 동시성 제어 Redis (INCR/DECR) or RDS row lock 매우 자주 변경
결제 PG 연동 외부 API + Idempotency Key 외부 의존성 큼
배송 송장 / 상태 RDS + 택배사 API State machine
정산 셀러 정산 RDS + 배치 + Outbox 정확성 > 속도
이벤트 버스 서비스간 통신 Kafka / Pulsar / SQS At-least-once 보장

4. ’‘5 가지 동작 원리’‘’‘’‘’‘’’*

4.1. ’‘MSA (마이크로서비스 아키텍처)’‘’‘’‘’‘’‘’’

’‘카탈로그·주문·결제·재고·배송·정산이 ’‘각자 독립 서비스’‘’‘’‘’‘’‘’‘’‘. *’‘한 서비스가 죽어도 ’‘다른 서비스는 ’‘살아있어야 한다’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘*.

경계 결정 원칙 (DDD Bounded Context):

  • 카탈로그 ↔ 주문’‘다른 컨텍스트’‘’‘’‘’‘. 카탈로그의 Product 와 주문의 OrderedItem 은 *’‘다른 모델’‘’‘’‘’‘’‘’‘’‘’’
  • 주문 ↔ 결제’‘같은 도메인 같은 라이프사이클’‘’‘’‘’‘’‘’‘’’ 인 경우 ’‘한 서비스로 ’‘같이 두기도 함’‘’‘’‘’‘’‘’‘’’*

MSA 의 ’‘진짜 어려움’‘’‘’‘’‘’‘’’* — ’‘서비스 경계를 ’‘언제 ’‘‘어떻게 자를지’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘너무 일찍 자르면 ’‘Distributed Monolith** (분산 모놀리스), ’‘너무 늦게 자르면 ’‘Big Ball of Mud’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘.

4.2. ’‘이벤트 기반 통신’‘’‘’‘’’

’‘주문 확정 → ’‘OrderPlacedEvent 발행 (Kafka)’‘’‘’‘’‘’‘’’’‘배송 / 정산 / 알림 / 통계가 ’‘각자 구독 처리’‘’‘’‘’‘’‘’‘’‘’‘.

’‘동기 API 호출’‘’‘’’* 의 문제:

  • ’‘배송팀 서비스 다운 → 주문 실패’‘’‘’‘’‘’‘’’ (강결합)
  • ’‘5 개 다 호출하면 ’‘누적 지연 + 단일 실패점’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’

’‘이벤트 발행으로 ’‘‘전환’‘’‘’‘’‘:

  • ’‘Order 서비스는 ’‘Kafka 에 ’‘한 번 발행만’‘’‘’‘’‘’‘’‘’’*
  • ’‘구독자들이 ’‘각자 ’‘자기 페이스로 처리’‘’‘’‘’‘’‘’‘’‘’‘’‘’’*
  • ’‘한 구독자 죽어도 ’‘다른 구독자는 OK*’‘’‘’‘’‘’‘’’*

4.3. ’‘Outbox Pattern’‘’‘’’*

’‘DB 트랜잭션 + Kafka 발행의 ’‘원자성 보장’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘*.

문제 — DB 커밋 후 Kafka 발행 ’‘사이’‘’‘’‘’‘’’* 에 ’‘프로세스 죽으면’‘’‘’‘’‘’‘’’’‘DB 엔 ’‘주문 있지만 ’‘메시지는 ’‘‘발행 안 됨’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘결제 성공했는데 ’‘배송 안 가는 사고*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘.

해법:

-- 같은 트랜잭션 안에서:
BEGIN;
INSERT INTO orders ...;
INSERT INTO outbox (event_id, payload) VALUES (...);
COMMIT;

-- 별도 poller / Debezium 이 outbox 읽어서 Kafka 발행
-- 발행 성공하면 outbox.status = 'PUBLISHED'

’‘Triple Idempotency’‘’‘’‘’’ (3 중 멱등성):

  • L1outbox.event_id UNIQUE (DB 차원)
  • L2 — Consumer 의 processed_events 테이블 PK (중복 처리 방지)
  • L3 — 비즈니스 unique 제약 (예: payment.idempotency_key UNIQUE)

4.4. ’‘Idempotency Key (멱등성 키)’‘’‘’‘’‘’‘’’*

’‘같은 요청을 ’‘몇 번 보내도 ’‘같은 결과’‘’‘’‘’‘’‘’‘’‘’‘.

현실 시나리오:

  • 사용자가 결제 버튼 ’‘두 번 클릭’‘’‘’‘’’*
  • 네트워크 끊김 후 ’‘클라이언트 재시도’‘’‘’‘’‘’‘’’*
  • 모바일 백그라운드 → 다시 활성화 → ’‘재요청’‘’‘’‘’’

해법:

POST /api/v1/payments
Idempotency-Key: 6f8c4e2a-...  ← 사용자가 생성한 UUID
{
  "orderId": "ORD-2026-...",
  "amount": 35000
}

서버:

  • ’‘같은 키로 ’‘‘요청 오면’‘’‘’‘’‘’‘’’’‘이전 결과 그대로 반환’‘’‘’‘’‘’‘’’*
  • ’‘Stripe 의 ’‘전 API 가 ’‘‘이 패턴**’‘’‘’‘’‘’‘’‘’’

4.5. ’‘Read-Write 분리’‘’‘’’*

’‘카탈로그는 ’‘Read 가 ’‘Write 의 ’‘100-1000 배’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘.

분산 전략:

  • 검색 = ES 인덱스 (read 전용)
  • 상세 조회 = Redis 캐시 (TTL 1-5 분)
  • 재고 = Redis (실시간) + RDS (정확성 보장)
  • 주문 = RDS 마스터 (write) + Read Replica (조회)

’‘캐시 전략’‘’‘’‘*:

  • Cache Aside — read 시 ’‘캐시 미스 → DB → 캐시 쓰기’‘’‘’‘’‘’‘’‘’’*
  • Write Through — write 시 ’‘DB + 캐시 동시 갱신’‘’‘’‘’‘’‘’‘’‘’’
  • Write Behind — write 시 ’‘캐시만 즉시, ’‘DB 는 비동기*’‘’‘’‘’‘’‘’‘’‘’’*

5. ’‘가장 어려운 ’‘‘3 가지 영역’‘’‘’‘’‘’’*

5.1. ’‘재고 동시성’‘’’

문제: ’‘오후 8 시 라이브 방송 종료. ’‘한정 수량 상품 1 개’‘’‘’‘’‘’‘’‘’‘’’’‘5,000 명 동시 클릭’‘’‘’‘’‘’‘’‘. *’‘누가 가져가야 ’‘일관성 + 공정성 + 성능’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’’‘모두 만족하나?’‘’‘’‘’‘’‘’’*

해법 3 가지:

[A] DB Pessimistic Lock (SELECT ... FOR UPDATE)

  • 정확함, 단순함
  • ’‘처리량 한계 ~ 100-500 TPS’‘’‘’‘’‘’‘’‘’’*
  • 트랜잭션 길어지면 ’‘전체 락 대기’‘’‘’‘’‘’‘’’*

[B] Optimistic Lock (version 컬럼)

  • 처리량 좋음
  • ’‘충돌 시 ’‘재시도 부담*’‘’‘’‘’‘’‘’’*
  • ’‘경합 심하면 ’‘재시도 폭증*’‘’‘’‘’‘’‘’‘’’

[C] Redis 원자 연산 (DECR)

  • 처리량 ’‘최고 (10K+ TPS)’‘’‘’‘’‘’’*
  • 단일 명령 원자성 → ’‘락 없이 안전’‘’‘’‘’’
  • ’‘RDS 와 ’‘‘동기화 필요’‘’‘’‘’‘’‘’‘’’* (cron / outbox)
  • 선착순 이벤트 표준 패턴

5.2. ’‘결제 신뢰성’‘’‘’’*

시나리오 5 가지:

  1. ’‘결제 성공 → 콜백 늦게 옴 → 사용자 ’‘다시 결제 시도*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’*
  2. ’‘결제 성공 → 콜백 옴 → ’‘Order 서비스 다운*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’
  3. ’‘결제 성공 → 콜백 → ’‘배송 등록 ’‘‘중간에 ’‘예외’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’*
  4. ’‘결제 ’‘‘성공 → Kafka 발행 실패’‘’‘’‘’‘’‘’‘’‘’’*
  5. ’‘환불 → 일부만 처리됨’‘’‘’‘’‘’’*

해법 — Saga Pattern:

’‘여러 서비스 거치는 트랜잭션을 ’‘작은 단계로 ’‘‘쪼개고 ’‘각 단계마다 ’‘보상 (compensation) 정의’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘*.

[정상 흐름]
1. Order 생성 (PENDING)
2. Inventory 차감
3. Payment 결제
4. Order 확정 (PAID)
5. Shipping 등록

[중간에 실패하면 보상]
1. Order 생성 (PENDING)
2. Inventory 차감 ✅
3. Payment 결제 ❌ 실패
   ↓
[보상] Inventory 복구 + Order CANCELLED

Choreography Saga (분산 이벤트) vs Orchestration Saga (중앙 코디네이터) — ’‘처리 복잡성 / 디버깅 트레이드오프’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘*.

5.3. ’‘검색 품질’‘’’

’‘검색 = 매출 직결’‘’‘’‘’‘. ’‘100ms 지연 = ’‘매출 -1%*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’ (Amazon 공식 자료).

진화 단계:

시대 방법 한계
2000s RDB LIKE '%검색어%' 처리량 낮음, 의미 매칭 불가
2010s Elasticsearch BM25 키워드 매칭 좋음, ’‘*의도 파악 약함’‘’‘’‘’‘’‘’‘’‘’‘’‘’’
2020s dense embedding (BERT) ’‘의미 매칭 좋음’‘’‘’‘’‘’‘*, 비용 높음
2023+ Hybrid Search (BM25 + dense + RRF) ’‘둘 다 잡음’‘’‘’‘’‘’‘’‘’‘’’
2024+ Re-ranking (Cross-encoder) ’‘정확도 +20-40%’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’
2025+ LLM 기반 ’‘‘쿼리 확장 / 의도 분류’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’* 컨텍스트 풍부

현대 이커머스 검색의 ’‘3 단계 파이프라인**’‘’‘’‘’‘’‘’‘’‘’‘*:

1. Retrieval (Top-K, K=100-500)
   - Hybrid: ES BM25 + vector search
2. Re-ranking (Top-K → Top-20)
   - Cross-encoder 모델
3. Business rules (Top-20 → Top-N)
   - 재고 / 광고 / 개인화 가중치

6. ’‘한국 대표 사례’‘공개 자료 기반’‘’‘’‘’‘’‘’‘’’*

6.1. 쿠팡

  • AWS 기반 대규모 인프라
  • Java / Spring + Kafka
  • ’‘검색 RAG 도입’‘’‘’‘’‘’‘’’* (2024+, Coupang Engineering blog Search Recall Improvement using LLM 2nd-stage Re-Ranking 시리즈)
  • ’‘Amazon DNA’‘’‘’‘’‘’’* — ’‘Bar Raiser 면접, You Build It You Run It’‘’‘’‘’‘’‘’‘’‘’’

6.2. 네이버 쇼핑

  • 자체 인프라 + HyperCLOVA X (한국어 LLM)
  • ’‘검색의 한국어 ’‘의도 파악*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’ 강점
  • DEVIEW 2024’‘HyperCLOVA X 를 활용한 쇼핑 사례’‘’‘’‘’‘’‘’’*

6.3. 무신사

  • Spring + Elasticsearch + MySQL
  • AI 스타일링 + 이미지 임베딩’‘옷 사진 → 유사 상품’‘’‘’‘’’
  • 무신사 기술블로그’‘AI 검색 개편기’‘’‘’‘’‘’‘’’

6.4. 카카오톡스토어

  • 카카오톡 통합’‘사용자 폭증의 ’‘도전*’‘’‘’‘’‘’‘’‘’‘’‘’’
  • IF Kakao 발표 — ’‘*MSA 전환 사례’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’*

6.5. 당근마켓

  • 지역 기반 검색 — Geo Hash 인덱스
  • ’‘Hyperlocal 의 기술 도전’‘’‘’‘’‘’‘’‘’‘’’
  • ’‘당근 테크 블로그’‘’‘’‘’‘’‘’’

7. ’‘AI 가 ’‘‘이커머스를 ’‘어떻게 바꾸는가*’‘’‘’‘’‘’‘’‘’‘’‘’’

7.1. 검색의 ’‘자연어 화**’‘’‘’‘’‘’‘’’*

’‘“여름에 시원한 면 셔츠 화이트 컬러” 같은 ’‘자연어 쿼리’‘’‘’‘’‘’‘’’* 가 ’‘키워드 단위로 분해되지 않고 ’‘의미로 검색됨’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘Amazon Rufus, Walmart Sparky, Coupang 의 ’‘Search Recall* ’‘‘시리즈가 ’‘*대표 사례’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘*.

7.2. ’‘Agentic Shopping’‘’‘’’*

’‘AI 가 ’‘사용자 대신 ’‘여러 사이트 비교 → 추천 → 구매까지 자동화’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. ’‘OpenAI Operator (2025), Claude Computer Use, Google Project Astra 같은 ’‘agent 형 인터페이스’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘이커머스 ’‘플랫폼이 ’‘agent-friendly API 제공해야 하는 시대**’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘.

7.3. ’‘개인화 ↑’‘’‘’’

’‘Two-Tower 모델 + 임베딩 기반 추천’‘’‘’‘’‘’‘’’’‘Netflix, YouTube, Spotify 의 패턴이 ’‘이커머스로 확산’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. ’‘개인 history + 실시간 행동 + 글로벌 트렌드’‘’‘’‘’‘’‘’‘’’* 의 ’‘3 축 결합**’‘’‘’‘’‘’‘’‘*.

7.4. ’‘상담 자동화’‘’‘’‘’‘’‘’’*

’‘RAG 기반 챗봇이 ’‘FAQ + 주문 이력 + 정책 ’‘모두 참조하여 응답’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘1 차 상담 자동화율 60-80%’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘*.

7.5. ’‘가격·재고 ’‘예측**’‘’‘’‘’‘’‘’‘’‘’’*

’‘ML 모델이 ’‘수요 예측 → 재고 사전 배치 → 동적 가격 조정’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘Amazon 의 ’‘Anticipatory Shipping 특허’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’* (사용자가 주문하기 전에 ’‘미리 ’‘근처 창고로 ’‘‘옮김*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘*).

8. ’‘흔한 실수 ’‘‘7 가지’‘’‘’‘’‘’‘’’*

  1. ’‘MSA 너무 일찍 분리’‘’‘’‘’‘’‘’’’‘3 명 팀 + 7 개 서비스 = ’‘Distributed Monolith’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. ’‘모놀리스로 시작 → 경계 확실해진 후 분리*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’*
  2. ’‘Outbox 안 쓰고 ’‘Kafka 직접 호출’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’* — ’‘원자성 보장 안 됨**’‘’‘’‘’‘’‘’‘’‘’’*
  3. ’‘Idempotency Key 빠짐’‘’‘’‘’‘’‘’‘’‘’’* — ’‘결제 중복 사고’‘’‘’‘’‘’‘’‘’‘’’
  4. ’‘DB 락만 ’‘무조건 ’‘‘사용’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’’‘Redis 원자 연산이 ’‘적합한 케이스 놓침’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’*
  5. ’‘검색 = ES 만 ’‘‘사용’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’’‘dense embedding + re-rank 도입 늦음’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’
  6. ’‘Read-Write 분리 ’‘없이 ’‘대규모 운영’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’* — ’‘RDS 마스터 폭주 → 전체 다운’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’*
  7. ’‘모니터링 없이 ’‘‘배포’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’’‘문제 발생 시 ’‘어디서 ’‘‘터졌는지 모름*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’

9. ’‘이커머스 시스템의 ’‘다음 5 년*’‘’‘’‘’‘’‘’‘’‘’‘’‘’’*

  1. AI Agent 시대’‘상품 페이지가 ’‘사람만 보는 게 아니라 ’‘agent 가 ’‘파싱’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘MCP 같은 표준 등장*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’
  2. 결제 인프라 분산’‘Stripe / 토스 / Wise 같은 ’‘글로벌 결제 추상 레이어*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’
  3. 재고 실시간 통합’‘Omnichannel (온라인 + 오프라인 통합 재고)
  4. 검색 → 대화’‘대화형 쇼핑 인터페이스’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’
  5. 물류 자동화’‘로봇 창고 + 드론 / 자율주행 ’‘라스트 마일*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’*

10. ’‘결론’‘시스템 = 사람의 ’‘약속의 ’‘‘기술적 표현’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’

이커머스 시스템 아키텍처는 ’‘기술이 아니라 ’‘사람의 약속의 ’‘기술적 표현’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. ’‘돈은 정확하게 흐른다’‘’‘’‘’‘’‘’’ + ’‘재고는 두 명에게 ’‘같이 가지 않는다’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’* + ’‘주문 상태는 ’‘역행하지 않는다’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’* — ’‘’‘3 가지 약속을 ’‘컴퓨터로 표현’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’ 한 것이 ’‘MSA + 이벤트 + Outbox + Saga + 멱등성*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘*.

’‘좋은 이커머스 시스템 = ’‘사용자가 ’‘복잡함을 ’‘못 느끼는 시스템’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. ’‘복잡함은 ’‘시스템 안에 박혀 있어야 한다’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘사용자는 ’‘클릭 한 번에 ’‘주문이 가는 듯한 ’‘‘경험만 본다’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘’‘클릭 한 번 ’‘‘뒤에 ’‘15-30 개의 시스템이 ’‘동시에 ’‘‘살아 움직이는 것’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’* — ’‘그게 ’‘이커머스의 아름다움이자 어려움**’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘.

’‘AI 시대’‘’‘’’* — ’‘검색이 ’‘대화’’* 가 되고, ’‘결제가 ’‘agent 의 의사결정’‘’‘’‘’‘’‘’‘’‘’’ 이 되고, ’‘추천이 ’‘개인 큐레이션’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’ 이 되는 ’‘진화의 ’‘다음 단계’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘그러나 ’‘근본 약속 (돈·재고·시간) 은 ’‘‘변하지 않는다’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘. *’‘이커머스 시스템 아키텍처의 ’‘미래는 ’‘그 위에서 ’‘진화한다’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘.


더 읽을 거리

  • Designing Data-Intensive Applications — Martin Kleppmann (분산 시스템의 ’‘*현대 고전’‘’‘’‘’‘’‘’‘)
  • Microservices Patterns — Chris Richardson (Saga, Outbox 등 패턴 카탈로그)
  • Building Microservices — Sam Newman (MSA 도입 가이드)
  • Patterns of Enterprise Application Architecture — Martin Fowler (트랜잭션·동시성·캐싱)
  • Stripe API Documentation’‘Idempotency Key 의 ’‘산업 표준 구현*’‘’‘’‘’‘’‘’‘’‘’’*
  • Amazon Builder’s Library’‘대규모 분산 시스템 운영 노하우’‘’‘’‘’‘’‘’‘’‘’’
  • 한국 — Coupang Engineering Blog, NAVER DEVIEW, 카카오 IF Kakao, 토스 SLASH, 우아콘, 무신사 기술블로그, 당근마켓 테크 블로그

다음 글 예고: Outbox Pattern 실전 — *’‘Spring Boot + PostgreSQL + Kafka + Debezium 으로 ’‘Triple Idempotency 구현하기*’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’’