IT STUDY LOG

[성능 테스트] 01. 가용성과 확장성 본문

devops bootcamp 4/DevOps 인프라 관리

[성능 테스트] 01. 가용성과 확장성

roheerumi 2023. 6. 6. 14:13

# 학습 목표

  • 시스템의 가용성과 확장성을 평가할 수 있다.
  • 부하 테스트의 목적을 이해할 수 있다.
  • Throughput과 Latency의 개념을 이해할 수 있다.
  • 시스템의 병목이 발생하는 주요 원인과 대책을 이해할 수 있다.
  • SLO를 설정하고, 이를 기반으로 부하 테스트를 진행하고, 달성 여부를 파악할 수 있다.

# 학습 내용

1.  가용성과 확장성 평가

- 시스템 설계 시 가용성과 확장성을 염두하고 설계하는 것이 중요

- 다수의 노드를 가진 분산 시스템, 또한 서버리스 아키텍처 등을 통해 가용성과 확장성을 확보할 수 있음

가용성

- 가용성(Availability)이란 시스템이 정상적으로 사용 가능한 정도

- 정상적인 사용시간(Uptime)을 정상사용시간과 사용불가 시간을 합친 전체사용시간(Uptime + Downtime)으로 나눈 값을 표현하며, 예를 들어 가용성 99.95%는 약 1년에 4시간 22분의 다운타임이 됨

- 위의 수식에 따라서 서비스 사용 불가능 시간을 최소로 만들어야 가용성이 향상

- 가용성의 핵심은 바로 단일 장애점(Single Point of Failure)을 없애는 것이어야  함. 즉, 어떤 한 노드가 장애가 발생해도, 동일한 처리 능력을 가진 다른 노드로 대체될 수 있어야 하며 이를 위해 필요한 것이 바로 시스템 확장

 

확장성

- 확장 가능한 시스템: 요구되는 시스템의 성능에 따라 동적으로 서버 구성이 변경되고, 시스템 처리 능력을 최적화할 수 있는 시스템을 의미

  • 시스템의 처리 능력을 확장하는 방법: 하나의 머신에서 메모리나 CPU를 늘리는 수직 확장(Scale Up), 머신의 인스턴스 수를 늘리는 수평 확장(Scale Out)
  • 수직 확장은 한계가 있으므로, 수평 확장이 가능할 때 확장성이 좋다고 평가
  • AWS와 같은 클라우드 사업자가 확장성을 보증하는 경우도 존재하며 기본적으로 AWS 등에서 제공하는 서버리스 서비스들은 확장성이 좋음

- 수직 확장을 고려할 경우 다운타임이 발생하여 가용성이 떨어지며, 성능 제한이 있으므로 반드시 한계를 이해해야 함

Comments