Skip to content

Latest commit

 

History

History
71 lines (56 loc) · 4.4 KB

availability.md

File metadata and controls

71 lines (56 loc) · 4.4 KB

가용성 - 시스템이 다운되지 않고 정상 운영되는 시간의 비율

  • 가용성은 신뢰있는 시스템에 대한 지표로써 많이 사용된다.
  • 이러한 가용성 지표도 어떻게 정의하느냐에 따라 다양한 가용성 측정 방식이 있다.
  • 이에 대해 살펴보고 현재 프로젝트에서 어떤 지표로 적용하면 인사이트를 줄 수 있는지 확인해보자.

시간을 기준으로 한 가용성

<위키백과>

가용성(可用性, Availability)이란 서버와 네트워크, 프로그램 등의 정보 시스템이 정상적으로 사용 가능한 정도를 말한다.
가동률과 비슷한 의미이다. 가용성을 수식으로 표현할 경우, 가용성(Availability)이란 정상적인 사용 시간(Uptime)을
전체 사용 시간(Uptime+Downtime)으로 나눈 값을 말한다.
이 값이 높을수록 "가용성이 높다"고 표현한다. 가용성이 높은 것을 고가용성(HA, High Availability)이라고 한다.
  • 가용성 = Uptime / Uptime + Downtime
  • 사이트 신뢰성 엔지니어링 에서는 조금 더 디테일하게 정의한다.
  • 가용성 = Uptime / Uptime + (unplanned) Downtime
  • 즉 계획되지 않은 갑작스러운 Downtime 을 의미한다. 예를 들어 배포를 위해 서버를 내리고 바꾸는 과정은 Downtime 에 들지 않는다는 것이다.
<트랜잭션 처리의 원리 중..>

TP 시스템에 필요한 중요한 요구사항은 시스템이 항상 가동상태를 유지해야 한다는 것이다.
이것은 가용성이 매우 높은 시스템이어야 한다는 뜻이다. 그런 시스템을 흔히 '24 * 365' 라고도 하는데,
매일 24시간 연간 365일, 즉 연중 무휴로 가동하는 시스템이라는 의미이다.
 가용성이 높은 시스템이란 정확하게 가동되면서 기대하는 결과가 나오는 시스템이다. 가용성은 두 가지 요인에
의해서 감소한다. 한 요인은 시스템에 장애가 발생하는 비율이다. 장애라는 말은 시스템이 잘못 응답하거나 응답을
하지 않음을 의미한다.
  시스템의 다른 조건이 같을 때 장애가 자주 발생한다면 그 시스템은 가용성이 낮은 시스템이다. 또 하나의
요인은 복구시간이다. 시스템의 다른 조건이 같을 때 장애가 발생한 후에 시스템을 복구하는 데 걸리는 시간이
길수록 시스템의 가용성은 낮아진다.
  이런 개념은 평균가동시간 (mean time between failure, MTBF)와 평균복구시간 (mean time to repair, MTTR)
로 표현된다.
 평균가동시간은 장애가 발생하기 전에 시스템이 가동되는 평균시간이다. 평균가동시간은 시스템 신뢰성의 척도다.
평균복구시간은 장애가 발생한 후에 시스템을 수리하거나 복구하는 데 걸리는 시간이다.
 이들 두 척도를 이용하여 가용성을 `MTBF / MTBF + MTTR` 로 정의할 수 있다.
  그러므로 가용성은 신뢰성이 증가할수록, 복구시간이 감소할수록 향상된다.
  • 가용성 = 평균가동시간 / 평균가동시간 + 평균복구시간

요청 성공률을 기초로한 가용성

  • 사이트 신뢰성 엔지니어링에서는 시간 기준의 가용성의 대안으로 요청 성공률에 기초한 가용성을 정의한다.
  • 가용성 = 성공한 요청 수 / 전체 요청 수
  • 예를 들어 하루에 250만 개의 요청을 처리하는 시스템의 경우 하루에 발생하는 에러가 250개 이내라면, 일일 가용성 목표치 99.99%를 달성할 수 있다.
  • 구글에서는 현재 요청 성공률을 기초로한 가용성 지표를 설정하여 사용중이다.
  • 이유는 구글의 서버들은 전 세계에 분산되어 있기 때문에 (장애분리) 전체 시간 중 최소 일부는 항상 정상 동작중인 상태라 업타임과 관련된 지표들이 크게 인사이트로 다가오지 않아서 요청 성공률을 기반으로 가용성을 정의한다.

가용성 향상

  • 구글에서는 다음을 기준으로 삼아 목표 가용성 수준을 결정한다.
1) 사용자는 어느 정도 수준의 서비스를 기대하는가?
2) 이 서비스가 수익과 직접적으로 연관이 있는가?
3) 유료 서비스 인가 아니면 무료 서비스인가
4) 시장에 경쟁자가 있다면 그 경쟁자는 어느 정도 수준의 가용성을 제공하는가
5) 이 서비스[]

참고)