Source: ByteByteGo
1️⃣ Load Balancing (로드 밸런싱)
들어오는 트래픽을 여러 서버에 분산시키는 기술
- 특정 서버에 과부하 방지
- 가용성 및 확장성 향상
- 예: L4/L7 Load Balancer, Nginx, ALB
핵심: 한 서버에 몰리지 않게 분산
2️⃣ Caching (캐싱)
자주 사용하는 데이터를 메모리에 저장해 응답 속도 개선
- DB 부하 감소
- 지연시간(Latency) 감소
- 예: Redis, Memcached
핵심: 자주 쓰는 건 빨리 꺼내자
3️⃣ CDN (Content Delivery Network)
정적 파일을 전 세계 엣지 서버에 분산 저장
- 사용자와 가까운 서버에서 다운로드
- 웹사이트 로딩 속도 개선
- 예: Cloudflare, Akamai
핵심: 지리적으로 가까운 곳에서 전달
4️⃣ Message Queue (메시지 큐)
생산자와 소비자를 비동기로 분리하는 구조
- 시스템 간 결합도 감소
- 트래픽 버퍼 역할
- 예: RabbitMQ, Kafka
핵심: 바로 처리하지 말고 큐에 넣어라
5️⃣ Publish–Subscribe (Pub/Sub)
하나의 메시지를 여러 소비자가 동시에 받는 구조
- 이벤트 기반 시스템에 적합
- 느슨한 결합 구조
- 예: Kafka Topic, Google Pub/Sub
핵심: 한 번 발행, 여러 명 수신
6️⃣ API Gateway
클라이언트 요청의 단일 진입점
- 라우팅
- 인증
- 속도 제한
- 프로토콜 변환
핵심: 모든 요청은 관문을 통해
7️⃣ Circuit Breaker
하위 서비스 장애 시 호출을 차단하는 패턴
- 연쇄 장애 방지
- 일정 임계치 이상 실패하면 자동 차단
- 예: Resilience4j
핵심: 망가진 서비스는 잠시 차단
8️⃣ Service Discovery
실행 중인 서비스 인스턴스를 자동 추적
- 동적 IP 환경에서 필수
- 마이크로서비스 아키텍처 핵심
- 예: Consul, Eureka
핵심: 서비스 위치를 자동으로 찾기
9️⃣ Sharding (샤딩)
대규모 데이터를 여러 노드에 분산 저장
- 특정 shard key 기준 분할
- DB 확장성 확보
핵심: 데이터를 나눠서 저장
🔟 Rate Limiting
일정 시간 내 요청 횟수 제한
- DDoS 방지
- 과부하 보호
- 예: Token Bucket, Leaky Bucket
핵심: 너무 많이 요청 못 하게 막기
1️⃣1️⃣ Consistent Hashing
노드가 추가/삭제될 때 데이터 재배치 최소화
- 캐시 서버 분산 구조에 많이 사용
- 노드 변동에 강함
핵심: 노드 변경 시 재정렬 최소화
1️⃣2️⃣ Auto Scaling
트래픽에 따라 자동으로 서버 수 조절
- CPU, 메모리, 요청 수 기준
- 비용 최적화
핵심: 필요할 때 늘리고, 한가하면 줄이기
전체 구조 관점
영역 관련 개념
확장성 Load Balancing, Auto Scaling, Sharding
성능 Caching, CDN
안정성 Circuit Breaker, Rate Limiting
비동기/이벤트 Message Queue, Pub/Sub
마이크로서비스 API Gateway, Service Discovery
분산 시스템 Consistent Hashing
한 문장 요약
이 12개 아키텍쳐는 확장성 + 안정성 + 성능 + 분산 시스템 설계의 기본 골격이다.