쿠팡의 대규모 트래픽 처리 전략 요약

대규모 트래픽 처리와 관련된 글들을 써보려고 합니다. 반응이 좋으면 쿠팡 뿐 아니라 라인과 카카오에서는 어떤 전략을 바탕으로 처리하고 있는지도 정리해볼게요. 목적: - 고가용성 (High Availability) - 고처리량 (High Throughput) - 지연시간 최소화 (Low Latency) 전략: 통합 NoSQL 데이터 스토리지를 사용 - 제품 정보 (Catalog) 와 가격 (Price), 재고 (Fulfillment) 등의 데이터를 통합 저장하여 한 번의 읽기 작업으로 데이터 처리를 할 수 있도록 한다. (관계형 데이터베이스를 썼다면 아마 많은 조인이 발생.) - 실시간 트랜잭션 업데이트가 아니라 최종적인 일관성을 지원하여 안정성을 높임. 캐시 적용 - 고성능 캐시를 사용하여 처리량 개선 및 지연시간 감소, 분산된 캐시 레이어로 대규모 트래픽 처리, 노드에 균등한 트래픽 분배. - 10 배의 처리량 개선과 1/3 의 지연시간 감소 - 캐시레이어는 60~100 개의 노드로 구성되어있고 분당 억단위의 요청을 처리하고 있음. - 유입되는 트래픽의 95% 를 캐시레이어에서 처리. 나머지 5% 는 통합 NoSQL 의 스토로지. 실시간 데이터 스트리밍 - 실시간 처리가 중요한 데이터를 위한 별도의 캐시 레이어 적용. - 쿠팡의 아키텍처는 실시간 데이터를 위한 캐시와 일반적인 캐시 이렇게 사용 중. - 캐시 무효화를 통한 실시간 캐시 업데이트. 통합 NoSQL 에 업데이트가 되는 시점에 알림 큐로 메시지를 보내고 업데이트 하는 식으로 처리함. 로컬 캐시 적용 - 고성능 캐시 레이어를 적용해도 쿠팡에서의 사전 예약 이벤트 같은 것들이 발생하면 사용자의 요청을 처리하기 힘들어진다. 이를 해결하기 위해 서버의 용량을 늘리는 것은 비효율 적이고, 특정한 경우에 그리고 일부 제품에서. 트래픽이 늘어나는 것이므로 로컬 캐시가 적합하다고 판단했음. - 로컬 캐시를 적용하는 경우에 GC 에 영향을 준다는 점과 캐시 무효화가 힘들다는 점을 고려해야함. 그래서 캐시 시간을 1분으로 하고, 실시간성이 중요한 데이터 보다는 최종적 일관성이 적용되는 데이터에만 적용. Non-Blocking I/O 적용 - NIO 기반 어플리케이션으로 변경하여 CPU 사용량 감소. 고가용성 전략 - 아키텍처에서 각 구성요소가 실패하더라도 다른 구성요소에 영향을 주지 않도록 함. 즉 cascading failures 가 일어나지 않도록. - Circuit Breaker 적용 - 보다 빠른 캐시 노드 장애 탐지를 위한 TCP 연결 속도 모니터링. 응답 시간은 보통 ms 수준이기 때문에 1초 이내에 응답이 없으면 장애 노드로 판별함. 이러한 전략들을 통해 쿠팡은 고성능, 고가용성 및 낮은 지연시간을 달성하여 대규모 트래픽을 효과적으로 처리하고 있습니다.

캐시를 활용한 대용량 트래픽 처리 성능 향상

Medium

캐시를 활용한 대용량 트래픽 처리 성능 향상

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 4월 27일 오후 7:10

 • 

저장 321조회 7,857

댓글 4

  • 유익하게 읽었습니다 좋은 정보 공유 감사합니다 라인과 카카오의 전략도 궁금합니다 🙂

    @unknown 안녕하세요~ 읽어주셔서 감사합니다. 라인과 카카오도 한번 써볼게요.

  • 좋은 글 감사합니다. Non-Blocking I/O 적용 - NIO 기반 어플리케이션으로 변경하여 CPU 사용량 감소. -> CPU 유휴 시간을 줄이는 것이니, CPU 사용량은 더 증가하게 되는 것이 맞지 않을까요?

    @todtod80 안녕하세요~ NIO 기반의 어플리케이션의 경우 idle 시간이 줄어들어서 일부 CPU 사용량도 줄어드는 것이 맞습니다. 다만 Blocking I/O 기반의 어플리케이션에서 많은 스레드를 관리하게 되는데요. 이런 경우에는 Context Switching 의 비용 때문에 CPU 사용량도 증가하게 됩니다.