필요성
- 성능 저하와 사용자 증가
- 가용성과 신뢰성
- 비즈니스 성장과 확장성
수직 확장
- 기존 서버 성능을 업그레이드하여 처리 능력 향상
- 장점
- 간단한 적용 : 기존 시스템을 크게 변경하지 않고, 서버의 하드웨어 성능만 업그레이드하면 성능 향상
- 적은 복잡성 : 시스템 아키텍쳐 변경하지않고 관리 간단
- 단점
- 물리적 한계 : 수직 확장은 하드웨어의 물리적 한계에 도달하면 더 이상 확장할 수 없음
- 단일 장애 지점 : 한 서버에 모든 것을 집중시키면, 그 서버에 장애가 발생하면 전체 시스템이 멈출 수 있음
- 장점
수평 확장
- 여러 대의 서버를 추가하여 처리 능력을 분산시키는 방식
- 각 서버가 동일한 작업을 수행하며, 로드 밸런서를 통해 요청을 여러 서버에 분산하여 처리
- 장점
- 무한한 확장성 : 트래픽 증가에 유연하게 대응
- 고가용성 : 한 서버에 문제 생겨서 나머지 서버가 계속 운영가능
- 단점
- 복잡한 아키텍쳐 : 서버 간 데이터 동기화나 일관성 문제를 해결해야함
- 데이터 일관성 문제 : 여러 서버에서 동시에 데이터를 처리할 때 일관성 문제가 발생할 수 있음
- 장점
결국
데이터 일관성, 복잡성 증가, 비용문제를 해결해야함
소규모에서 대형으로 발전하기
- 소규모는 Monolithic 구조로 시작 (사용자가 증가할수록 시스템 성능이 떨어짐)
- 수직 확장 적용 : cpu, 메모리, 디스크 용량 등을 업그레이드 (트래픽 증가계속하면 서버 성능을 더이상 업그레이드할수없음 (물리적한계)
- 수평 확장 적용 : 여러대 서버로 트래픽 분산, 로드 밸런서를 사용해 사용자 요청을 여러 대의 서버로 분산 (고가용성, 서버 유연하게 확장)
- 데이터베이스 분산 및 샤딩 : 데이터베이스 병목현상 해결, 각 샤드가 독립적으로 데이터 처리
- 캐싱 적용 : 자주 사용되는 데이터 최적화 (Redis, Memcached같은 시스템 사용) : 사용자 응답시간 빠르고 데이터베이스 요청 줄어듬
- 마이크로 서비스 도입 : 각 기능을 독립적인 서비스로 분리 운영, 각 서비스가 독립적으로 배포, 확장가능, 유연성 증가
- 비동기 이벤트 처리 : 실시간으로 처리하지 않고 비동기적으로 처리, 주요 트랜잭션이 완료된 후 시간이 오래 걸리는 작업은 메시지 큐로 전달, 응답성을 높이고 시스템을 효율적으로 운영
'Backend' 카테고리의 다른 글
| 카프카 (5) | 2025.02.13 |
|---|---|
| Redis 개념 (0) | 2025.02.09 |
| 분산 시스템 (0) | 2025.02.03 |
| 대규모 트래픽 처리 (0) | 2025.02.03 |
| 비동기 처리 시스템의 이해 (2) | 2025.02.02 |