본문 바로가기

단순용어정리/web

[단순용어] 가용성 | 시스템이 정상적으로 작동 가능한 비율

반응형

가용성이란?

가용성은 시스템이 정상적으로 작동할 수 있는 비율을 의미한다. 예를 들어, 웹사이트의 가용성이 99.99%라면, 1년 동안 26.3일 동안만 장애가 발생한다는 의미이다(가용성 구하기는 하단에서 구하고 있음).

 

쉽게 설명하자면, 가용성은 시스템이 멈추지 않고 돌아가는 비율이라고 할 수 있다. 현실적으로 100% 가용성은 불가능하지만, 가용성을 높이기 위해 노력하면 시스템의 안정성과 신뢰성을 높일 수 있다.

 

흔히, 대기업 채용에서 대용량 트래픽을 안정적으로 처리한 경험 등을 고려하는 것도 결국 대규모 서비스가 365일 내내 정상적으로 운영되도록 하기 위한 즉, 가용성을 높이기 위한 노력을 해왔는지 알아보기 위해서라고 할 수 있다.

 

그리고 우리가 애플리케이션을 개발 할 때 예외처리를 잘해야 하는 것도 결국 가용성과 연관되어 있다. 예외처리가 제대로 되어 있지 않다면, 해당 에러로 인해서 시스템 전체가 다운된다면, 그 자체로 가용성에 직접적으로 악영향을 미치는 요소가 될 것이다.

개인적인 생각이지만, 대용량 트래픽 처리에 대한 경험을 얻기 위해서 어떤 노력을 했는지를 증명하기 위한 방식은 꼭 대규모 서비스를 운영해본 경험에서 나올 필요는 없다고 생각된다. 대규모 트래픽을 직접 다뤄보지 않았다고 하더라도, 그러한 상황을 가정하고 가용성을 높이기 위한 개인적인 경험이 중요하다고 본다. AWS 의 로드밸런서를 사용해서 트래픽 부하를 분산하는 것도 결국 대규모 트래픽을 안정적으로 처리하기 위한 경험 중 하나이기도 하고.

 

가용성을 높이기 위한 방법(간략)

장애에 대비한 시스템 구성

시스템을 장애에 대비하여 구성하면, 장애가 발생하더라도 시스템이 정상적으로 작동할 수 있는 비율을 높일 수 있다. 예를 들어, 로드 밸런서를 사용하여 여러 대의 서버에 트래픽을 분산시키면, 특정 서버가 장애가 발생하더라도 다른 서버가 트래픽을 처리할 수 있다. 그리고 제일 기본이 되는 것은 예외처리를 잘 해두는 것이 있다.

 

참고로 로드밸런서는 하나의 서버에 트래픽이 몰리는 것을 막기 위해서, 서버의 복제본이 여러 개 있을 때, 트래픽을 분산처리하여 복제 서버에 리디렉션하는 역할을 수행하는 도구이다. 일상적인 예로 들자면, 은행에서 여러 개의 청구소가 있을 때, 하나의 청구소에 고객이 몰리는 것을 방지하기 위해 대기표를 뽑도록 하는 것이 있다. 

 

시스템의 모니터링

시스템을 실시간으로 모니터링하여 장애를 조기에 감지하고 대응하면, 장애로 인한 피해를 줄일 수 있다.  AWS 의 라이트세일에서 로드밸런싱 기능을 추가할 때 헬스 체킹이라는 기능이 있다. 해당 기능이 활성화되면, 특정 시간 마다 API 요청 등을 통해서 서버가 정상적으로 실행되고 있는지 확인하는데 이러한 부분도 실시간 모니터링에 해당할 수 있겠다. 그 

 

자동 복구

 장애가 발생하더라도 자동으로 복구할 수 있는 시스템을 구성하면, 장애로 인한 피해를 최소화할 수 있다.

 

가용성 구하기

가용성을 측정하는 방식은 다양할 수 있다. 그럼에도, 단순하게 구할 수 있는 공식은 다음과 같다. 

가용성 = (정상 작동 시간 / 총 사용 시간) * 100%


예를 들어, 시스템이 1년 동안 8760시간 중 8744시간 동안 정상적으로 작동했다면, 가용성은 다음과 같이 계산될 수 있다.

가용성 = (8744 / 8760) * 100% = 99.97%


즉, 이 시스템은 1년 동안 16시간 동안만 장애가 발생했다는 의미한다.

이 때, 가용성을 계산 시 총 사용 시간을 정확하게 계산해야 한다. 총 사용 시간에는 시스템이 중단된 시간도 포함된다. 예를 들어, 시스템이 정기적인 업데이트로 인해 1시간 동안 중단되었다면, 총 사용 시간은 8760 - 1 = 8759시간 정도이다.

 

이러한 점을 봤을 때 가용성이라는 것은 결국 장애가 발생하여 시스템이 멈추는 시간이 길어질 수록 떨어진다. 가용성을 높이기 위한 다양한 방법들은 결국 시스템(ex. 홈페이지 등)이 오랫동안 정상적으로 실행되도록 하기 위한 방법들인 것으로 이해할 수 있다.

 

참고자료

https://ko.wikipedia.org/wiki/%EA%B0%80%EC%9A%A9%EC%84%B1

https://docs.aws.amazon.com/ko_kr/wellarchitected/latest/reliability-pillar/availability.html

반응형