시스템 설계: 대규모 시스템을 위한 아키텍처 원칙
|
1 min read
수백만 명의 사용자가 동시에 접속해도 안정적인 서비스를 제공하기 위한 TPS 관리, 확장성(Scalability), 그리고 가용성 설계 원칙을 정리합니다.
1. 핵심 지표: TPS (Transactions Per Second)
대규모 시스템에서 일일 접속자 수(DAU)보다 중요한 것은 **초당 트랜잭션 수(TPS)**입니다. 시스템이 1초에 얼마나 많은 요청을 처리할 수 있는지를 나타내며, 특히 트래픽이 몰리는 피크 타임의 TPS를 견디도록 설계하는 것이 용량 계획(Capacity Planning)의 핵심입니다.
2. 부하 분산과 확장 전략
예상치 못한 트래픽 급증에 대응하기 위한 방법들입니다.
- Scale-out (수평 확장): 저렴한 서버를 여러 대 추가하여 부하를 나눕니다. 클라우드 환경에서는 이를 자동화한 **오토 스케일링(Auto Scaling)**이 필수입니다.
- 로드 밸런싱: 여러 대의 서버로 요청을 골고루 배분합니다.
- 대기열(Queue) 도입: 갑작스러운 부하를 메시지 큐에 담아 순차적으로 처리함으로써 시스템 마비를 방지합니다.
3. 가용성과 안정성 설계
- 단일 장애 지점(SPOF) 제거: 특정 부품 하나가 고장 났을 때 전체 시스템이 멈추지 않도록 이중화(Redundancy)를 수행합니다.
- 데이터 분산: 데이터베이스 부하를 줄이기 위해 샤딩(Sharding)이나 복제(Replication)를 활용합니다.