가용성(Availability)
-
컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율을 의미함
-
가용성 계산 공식: (가동 시간 / 총 시간) × 100%
-
고가용성을 유지하는 것은 모든 게임/서비스에서 대단히 중요한 목표
-
9의 개수에 따른 가용성 등급으로 추산한 시간표
장애 복구 시간 (RTO: Recovery Time Objective)
-
시스템 장애 발생 후 정상 운영 상태로 복구되는 데 허용되는 최대 시간
-
비즈니스 연속성 관점에서 중요한 지표
-
짧을수록 시스템의 가용성이 높다는 의미
데이터 손실 허용 시간 (RPO: Recovery Point Objective)
-
장애 발생 시 허용 가능한 최대 데이터 손실 시간
-
마지막 백업 시점과 장애 발생 시점 사이의 허용 가능한 데이터 손실 범위를 정함
이중화/다중화(Duplexing)
-
무언가를 이중으로 두는 기술
( 이렇게 무언가를 여러 개로 구성하는 걸 다중화라 부름 ) -
결함을 감내하여 가용성을 높이기 위한 가장 기본적이고 대표적인 방법
-
대부분 문제가 발생할 경우 시스템 전체가 중단될 수 있는 대상인 단일 장애점(SPOF: Single Point Of Failure)을 이중화 하는 방식
-
Active - Active
-
이중화 된 두 시스템 모두를 가동 상태로 두는 구성 방식
-
부하를 분산시킬 수 있고, 두 시스템이 함께 가동되므로 성능상의 이점이 있음
( 리소스 효율적 사용, 성능 최적화 ) -
한 시스템에 문제가 발생하면 순간적으로 다른 시스템에 부하가 급증할 수 있음
( 복잡한 동기화 필요, 장애 시 즉각적인 대응 어려움 )
-
-
Active - Standby
-
이중화된 시스템 중 하나는 가동하고, 다른 시스템은 백업 용도로 대기 상태로 두는 이중화 구성 방식
-
예비된 스탠바이 시스템으로 자동 전환되는 기능을 장애 극복 기능(failover)라고 함
( 즉각적인 장애 대응, 단순한 구조 ) -
다른 하나가 백업용이므로 리소스를 비효율적으로 사용하게됨
-
Load balancing
-
로드 밸런싱은 부하를 의미하는 단어인 로드와 균형 유지를 나타내는 단어인 밸런싱이 합쳐진 의미
-
서버에 과도한 트래픽이 몰리면 온갖 문제가 발생할 수 있음
-
서버를 다중화했더라도 트래픽을 고르게 분산해야 가용성이 높아짐
-
로드 밸런서는 일반적으로 이중화나 다중화된 서버와 클라이언트 사이에 위치함
-
클라이언트들은 로드 밸런서에 요청을 보내고, 로드 밸런서는 해당 요청을 각 서버에 균등하게 분배해줌
-
보통 로드 밸런서에 의해 서버의 건강 상태를 주기적으로 모니터링하고 체크하는 Health Check가 이루어짐
-
부하가 균등하게 분산되도록 부하 대상을 선택하는 방법을 로드 밸런싱 알고리즘이라 부름
-
로드 밸런서는 사용되는 Layer의 레벨에 따라 L4 로드 밸런서, L7 로드 밸런서 등이 있음
L4 Load Balancer
-
TCP/IP와 UDP(전송 계층) 프로토콜을 통해 부하를 분산시키는 모델
-
패킷의 헤더 정보만을 이용하기에 처리 속도가 빠름
-
사용하는 정보가 적기에 기능성 및 유연성이 제한적임
-
실시간 트래픽 처리가 중요한 서비스에 적합
L7 Load Balancer
-
HTTP 등 상위 레벨(응용 계층) 프로토콜을 이용해 요청의 내용을 분석하고 이에 따라 부하를 분산하는 모델
-
응용 계층의 정보를 분석하기에 처리 속도가 상대적으로 느림
-
응용 계층의 정보를 이용하기 때문에 여러 기능을 구현할 수 있음
-
애플리케이션 레벨의 로드 밸런싱이 필요한 서비스에 적합
Health Check
-
서버의 건강 상태를 주기적으로 모니터링하고 체크하는 기능
-
밸런서는 서버의 상태를 알기 위해 설정된 간격으로 서버를 폴링하고, 실패한 서버를 풀에서 제거함
알고리즘 종류
-
Round Robin
-
가장 단순한 로드 밸런싱 방식
-
서버에 순차적으로 요청을 분배
-
구현이 쉽고 간단하나 서버의 실제 부하를 고려하지 못함
-
-
Least Connections
-
현재 연결 수가 가장 적은 서버로 요청을 분배
-
서버의 실제 부하를 고려한 방식으로 효율적임
-
연결 수만으로 판단하므로 연결의 복잡성을 고려하지 못함
-
-
Weighted Round Robin
-
서버의 성능에 따라 가중치를 부여하여 요청 분배
-
고성능 서버에 더 많은 요청 할당
-
서버의 성능 차이를 고려한다는 장점이 있으나 가중치 설정의 복잡성이 문제임
-
-
IP Hash
-
클라이언트의 IP 주소를 해시값으로 변환하여 서버 선택
-
같은 클라이언트의 요청은 항상 같은 서버로 전달
-
세션 유지에 유용하나 서버 간 부하 불균형 발생 가능
-
한줄 평 + 개선점
-
오늘은 알고리즘 관련 공부를 많이하면서 시간이 빠르게 지나갔다..
-
여러 비트 연산이나 소수 구하는 법들을 정리했는데 방법이 너무 다양해서 머리가 터질 것 같았다.