시스템 성능, 확장성, 가용성
정의
시스템이 주어진 작업을 얼마나 빠르고 효율적으로 처리할 수 있는지를 나타냅니다.
주요 지표
- 처리량 (Throughput): 단위 시간당 처리 가능한 작업 수.
- 응답 시간 (Response Time): 요청에 대한 응답까지 걸리는 시간.
- 지연 시간 (Latency): 데이터 전송이 시작되고 목적지에 도달할 때까지의 시간.
개선 방법
- 하드웨어 업그레이드: CPU, 메모리, 네트워크 대역폭 개선.
- 캐싱: Redis, Memcached 등을 사용해 자주 사용하는 데이터를 메모리에 저장.
- 비동기 처리: 작업을 동기적으로 처리하지 않고 비동기적으로 분산.
2. 확장성 (Scalability)
정의
시스템이 증가하는 부하를 처리할 수 있도록 확장될 수 있는 능력입니다.
유형
- 수직 확장 (Vertical Scaling): 단일 서버의 성능을 높이는 방식.
- 수평 확장 (Horizontal Scaling): 서버의 수를 늘려 부하를 분산하는 방식.
주요 고려 사항
- 비용: 수직 확장은 고성능 하드웨어 비용 증가, 수평 확장은 추가 서버 비용 발생.
- 부하 분산 (Load Balancing): 확장된 서버 간 트래픽을 균등하게 배분.
- 데이터 동기화: 여러 서버 간 데이터 일관성을 유지.
개선 방법
- Auto Scaling: 트래픽 변화에 따라 서버를 자동으로 늘리거나 줄이는 기능.
- 분산 시스템 설계: 데이터베이스 샤딩, 마이크로서비스 아키텍처 등.
3. 가용성 (Availability)
정의
시스템이 지속적으로 작동 가능하며, 장애 상황에서도 서비스를 제공할 수 있는 능력입니다.
주요 지표
- Uptime: 시스템이 가동 중인 시간의 비율.
- MTTF (Mean Time To Failure): 평균적으로 시스템이 실패 없이 작동하는 시간.
- MTTR (Mean Time To Repair): 장애 발생 시 복구까지 걸리는 시간.
개선 방법
- 이중화 (Redundancy): 주요 구성 요소를 중복 설정하여 장애 시 대체 가능.
- 장애 조치 (Failover): 장애 발생 시 자동으로 대체 서버로 전환.
- 모니터링 도구 사용: Prometheus, Grafana, CloudWatch 등으로 실시간 상태 감시.
성능, 확장성, 가용성의 상호 관계
- 성능: 현재 시스템의 효율성을 보장.
- 확장성: 성능 저하 없이 부하를 처리할 수 있도록 준비.
- 가용성: 서비스의 연속성을 보장.
확장성을 통해 성능 저하를 방지하고, 가용성을 통해 장애 발생 시에도 안정적인 서비스를 제공합니다.