system-architecture-example
견고하고 확장 가능한 시스템 아키텍처를 담고 있습니다. 이 구조를 기반으로 한 시스템 설계 설명서를 정리 합니다.
시스템 아키텍처 설계 설명서
이 아키텍처는 고가용성, 확장성 및 낮은 지연 시간을 목표로 하는 마이크로서비스 기반 분산 시스템입니다. 크게 사용자 요청 처리, 메타데이터 관리, 미디어 처리, 그리고 데이터 분석 계층으로 나뉩니다.
1. 진입점 및 트래픽 제어 (Entry Layer)
- Client & CDN: 사용자는 클라이언트를 통해 접속하며, 정적 콘텐츠(이미지, 썸네일 등)는 CDN을 통해 캐싱되어 지연 시간을 최소화합니다.
- Load Balancer (LB): 들어오는 트래픽을 여러 API 게이트웨이로 분산하여 시스템 부하를 관리합니다.
- API Gateways: 서비스의 "대문" 역할을 하며 인증, 권한 부여, 속도 제한(Rate Limiting), 로깅 및 요청 변환을 수행합니다.
2. 핵심 서비스 계층 (Core Services)
이 시스템은 제어 흐름과 데이터 흐름을 명확히 분리합니다.
- Metadata Server: 사용자 정보, 파일 정보, 권한 등 제어 관련 로직을 담당합니다.
- Block Server: 실제 대용량 데이터(이미지, 비디오 등)의 업로드 및 스트리밍을 관리합니다.
3. 메타데이터 및 스토리지 관리 (Storage Layer)
데이터의 일관성과 빠른 조회를 위한 다층 구조를 가집니다.
- Metadata Cache (Redis/Memcached): 빈번하게 액세스되는 메타데이터를 메모리에 저장하여 DB 부하를 줄입니다.
- Partitioning & Sharding: 데이터가 방대해질 것에 대비해 Shard Manager와 Directory-based partitioning을 통해 데이터를 여러 DB 노드에 분산 저장합니다.
- Metadata DB Cluster: 실제 관계형 또는 비정형 데이터를 저장하는 클러스터입니다.
4. 미디어 및 검색 시스템 (Media & Search)
- Video Processing Pipeline: 비디오 업로드 시 Video Queue를 거쳐 Worker들이 인코딩, 압축, 해상도별 변환 작업을 수행한 후 최종 저장소(VidStore)에 저장합니다.
- Search System (ElasticSearch): Search Results Aggregator를 통해 대량의 메타데이터 속에서 사용자가 원하는 콘텐츠를 빠르게 검색할 수 있도록 인덱싱을 제공합니다.