피드로 돌아가기
InfoQInfrastructure
원문 읽기
분당 600만 요청을 견디는 Shopify의 고가용성 Liquid 테마 시스템
Presentation: Theme Systems at Scale: How To Build Highly Customizable Software
AI 요약
Context
비기술자도 수정 가능한 고도의 커스터마이징 기능과 BFCM 기간 분당 600만 건의 트래픽 처리를 동시에 만족해야 하는 상충하는 요구사항 발생. 렌더링 결과물의 다양성을 보장하면서도 대규모 트래픽 상황에서 낮은 응답 시간을 유지해야 하는 성능 병목 해결이 필수적이었던 상황.
Technical Solution
- Liquid 템플릿 언어를 통한 UI 구조와 비즈니스 로직의 분리로 유연한 커스터마이징 환경 구축
- Merchant DB의 쓰기 작업은 Synchronous하게 처리하여 데이터 정합성을 보장하는 구조 설계
- Store DB로의 데이터 복제를 Asynchronous하게 처리하여 쓰기 지연이 읽기 성능에 미치는 영향 최소화
- Shop ID 기반의 Re-sharding을 통한 Multi-tenancy 아키텍처 적용으로 데이터베이스 부하 분산
- Core Web Vitals 지표를 노출하여 테마별 성능 가시성을 확보하고 최적화 지점 파악
- App Developer를 위한 Theme Extension 구조를 도입하여 핵심 코어 수정 없이 기능을 확장하는 플러그인 모델 채택
실천 포인트
1. 대규모 트래픽 환경에서 커스텀 설정이 필요할 때, 설정 변경(Write)과 실제 렌더링(Read) 사이의 데이터 경로를 분리했는가?
2. 테넌트 증가에 따른 DB 부하를 해결하기 위해 Shop ID 기반의 물리적 Sharding 전략을 검토했는가?
3. 외부 확장 기능을 제공할 때 코어 로직을 건드리지 않는 Extension 아키텍처를 설계했는가?