클라우드, 손해 안 보고 제대로 쓰려면? ② – 고가용성 기능들

지금 클라우드를 쓰고 있는데 고가용성이 뭔지 모르신다면?
팥 없는 찐빵을 먹는 것과 다름없어요!

(혹은 김치 없이 라면 먹기, 갈릭 디핑소스 없이 피자 먹기…)

참으로 안타까운 일이 아닐 수 없는데요. 고가용성은 클라우드가 ‘클라우드 다운’ 특성을 활용해 얻을 수 있는 혜택이자 큰 장점이거든요.

고가용성은 예기치 못한 상황에서도 시스템이 계속 정상 운영될 수 있는 특성을 뜻해요. 클라우드는 갑자기 사용자 접속이 몰리는 상황을 대비하거나 서버에 장애가 났을 때 알아서 딱! 대처할 수 있어서 고가용성을 확보하기 수월해요. 어떤 기능으로 확보할 수 있는지 대표적인 방법 3가지를 소개해 드릴게요.

로드밸런서: 나눠서 보내!
오토 스케일링: 늘렸다 줄였다 해!
HA 솔루션: 똑같은 걸로 바꿔치기해!

 
로드밸런서: 나눠서 보내!

로드밸런서란?

로드밸런서는 특정 서버에 트래픽이 몰리지 않도록 하는 기능입니다. 서버에 트래픽이 들어오면 어떻게 나눌지 미리 정해둔 방법(알고리즘)에 따라 운영 중인 서버로 트래픽을 분산합니다.

로드밸런서는 트래픽이 들어오면 여러 서버에 나누어 주는데요. 서버에 트래픽이 과도하게 몰리면 서버가 느려지거나 다운될 수 있거든요. 마치 일하는 사람이 여럿인데 한 사람에게만 일이 몰리지 않도록 일을 나눠 주는 거죠.

로드밸런서는 트래픽이 들어오면 어떻게 나눌지 방법을 미리 정해 두는데요. 운영 중인 서비스 특성에 따라 적절한 방법을 고를 수 있어요. 여기에서는 3가지만 소개해 드리고 더 자세한 내용은 [로드밸런서(Load Balancer)의 개념과 특징] 콘텐츠를 참고해 주세요:

▶ 라운드로빈(Round-Robin) 방식: 골고루 보내!
– 서버에 들어온 트래픽을 순서대로 돌아가며 처리하는 방식
– 서버들이 비슷한 스펙을 가지고 있는 경우에 적절

▶ 최소 연결 방식(Least-Connection): 안 바쁜 곳에 보내!
– 트래픽이 들어온 순간 트래픽을 가장 적게 처리하고 있는 서버에 보내는 방식
– 서버에서 처리 중인 트래픽이 일정하지 하는 경우에 적절

▶ IP 해시(IP Hash) 방식: 담당 서버로 곧장 보내!
– 트래픽이 들어오면 해당 트래픽의 IP 주소와 매칭되어 있는 담당 서버로 보내는 방식
– 접속자 수가 많아 트래픽을 더 빠르게 분산하려는 경우에 적절

서비스를 운영하기 위해 여러 대의 서버를 사용하는 곳이라면 물리 서버, 클라우드 서버 상관없이 로드밸런서가 활용되고 있어요. 그만큼 로드밸런서는 ‘고가용성 기본 템’이라고 볼 수 있는데요.

그런데 만약 트래픽이 너무 많이 몰리면 여러 서버로 나누어 보내도 소용없을 수 있어요. 이런 경우에는 서버 자체 늘려야 해요. 여기서 클라우드의 진가를 엿볼 수 있어요. 바로 ‘오토 스케일링’ 기능에서요!
 

오토 스케일링: 늘렸다 줄였다 해!

오토 스케일링이란?

오토 스케일링은 미리 정해둔 기준에 맞는 상황이 되면 알아서 서버를 늘리는 기능입니다. CPU와 메모리 사용량 및 네트워크 순간 트래픽을 모니터링하기 때문에 변화에 바로바로 대응할 수 있습니다.

오토 스케일링은 클라우드 서버 수를 상황에 맞게 자동으로 늘렸다 줄였다 하는 기능이에요. 필요한 때 서버 개수를 쉽고 빠르게 늘릴 수 있는 건 오직 클라우드만 할 수 있는 일이에요. 그래서 오토 스케일링은 클라우드에 최적화된, 한 마디로 “클라우드가 클라우드 했다!”라고 볼 수 있는 기능이에요.

오토 스케일링은 특정 상황이 되면 서버를 얼마만큼 알아서 늘리라고 정해둘 수 있어요. 특정 상황은 CPU, 메모리와 같은 서버 자원의 사용량이나 네트워크의 순간 트래픽을 기준으로 정하는데요. 예를 들면 ‘CPU 평균 사용률이 70% 이상 사용되는 상태가 5분 동안 지속되면 서버를 3대를 증가한다’와 같이 정할 수 있어요.

오토 스케일링을 활용하면 서버 자원이 얼마나 사용되는지를 주기적으로 점검해요. 그리고 정해둔 기준에 맞는 상황이 되면 알아서 서버를 늘렸다 줄였다 하는데요. 덕분에 토 스케일링은 트래픽이 계속해서 변해도, 갑자기 어떤 시점에 트래픽이 확 몰려도 바로바로 대응이 가능해요.

특히 이런 서비스를 운영하고 있다면 오토 스케일링이 효과적이에요:

– 하루 중 특히 저녁에 유저 접속이 몰리는 게임 서비스
– 명절이나 시즌 할인 행사에 고객이 많이 몰리는 대형 쇼핑몰
– 신규 출시 등 트래픽이 얼마나 될지 예측하기 어려운 서비스 등

한편 오토 스케일링을 활용하면 고가용성을 확보할 뿐만 아니라 클라우드 비용을 아낄 수도 있어요.트래픽이 늘어나서 서버를 늘렸다가도 트래픽이 줄어들면 알아서 서버를 삭제할 수 있거든요. 즉, 필요한 만큼 서버를 쓰고 쓴 만큼 돈을 낼 수 있어 비용 효율적이에요.
 

HA 솔루션: 똑같은 걸로 바꿔치기 해!

HA 솔루션이란?

HA 솔루션은 시스템에 장애가 나도 서비스가 중단되지 않도록 미리 똑같은 서버를 마련해 대비하는 기능입니다. 장애가 발생하면 그 즉시 미리 준비한 서버로 대체하여 운영합니다.

로드밸런서와 오토 스케일링만 사용한다고 모든 장애를 대비할 수 있을까요? 안타깝게도 그렇지는 않아요. 앞서 설명 드린 것처럼 로드 밸런서는 트래픽이 너무 많이 몰리면 동작하지 않을 수 있어요. 오토 스케일링도 늘리려는 서버 자체가 고장 나버리면 무용지물이 될 수 있고요. 

로드밸런서와 오토 스케일링이 혹시 모를 서비스 중단을 예방하는 데 큰 도움이 되는 것은 사실이지만 모든 장애를 방지할 수 있는 건 아니에요. 그렇기 때문에 장애가 났을 때 어떻게 할지 대비책을 세우는 것도 고가용성을 확보하는 데 중요해요.

HA 솔루션은 장애가 날 걸 대비하고 있다가 실제로 장애가 나면 알아서 조치해주는 기능이에요. HA 솔루션은 현재 서비스를 운영하는 서버(=Active 서버)와 똑같은 ‘도플갱어 서버(=Standby 서버)’를 미리 만들어 두는 방식인데요. 서버에 문제가 생겨 장애가 나면 그 즉시 문제 있는 서버를 도플갱어 서버로 자동으로 바꿔서(=페일오버, Failover) 운영해요.

덕분에 서비스 사용자는 장애가 나더라도 그 사실을 모른 채 계속 서비스를 이용할 수 있어요. 서비스가 중단되더라도 아주 잠깐 중단되는 정도로 피해를 줄일 수 있고요.
 

고가용성을 위한 기능들, 비싼 건 아닐까?

고가용성을 최대한 끌어내려면 클라우드의 특성과 기능을 잘 이해하고 활용하는 것이 중요해요. 그런데 이런 생각이 드실 수도 있어요.

???: 고가용성이 중요한 건 알겠는데 비용이…

물론 비용과 같은 현실적인 부분도 무시할 수 없어요. 실제로 HA 솔루션은 장애 상황을 철저하게 대비해 주는 만큼 비용이 비싼 편인데요. 하지만 단순히 기능을 사용하는 비용만 따져서는 곤란해요. 고가용성을 확보하지 못해 장애가 발생했을 때 나타나는 각종 피해도 함께 따져야 하거든요.

2020년 정보 기술 인텔리전스 컨설팅(ITIC) 조사에 따르면, 조사에 응한 직원 수 1,000명 이상의 대기업 98%가 서비스가 단 1시간만 중단되어도 최소 100만 달러, 우리 돈으로 약 13억 원의 손해가 난다고 말했어요. 직원 수 200명에서 500명 사이의 중소, 중견기업 절반(47%)도 똑같이 대답했고요.

게다가 서비스가 중단되어 생기는 소송 비용이나 벌금까지 생각한다면 고가용성을 확보하는 데 드는 비용보다 확보하지 못해 생기는 피해가 훨씬 더 클 수 있어요. 결국 고가용성을 확실하게 챙기는 것이 어쩌면 비용을 최소화하는 일이라고 할 수 있어요.
 

고가용성, 확실히 챙기고 싶다면?

고가용성을 위한 기능을 도입하느냐 마느냐는 마치 총 싸움을 할 때 방탄 조끼를 입느냐 마느냐의 문제와 같아요. 방탄 조끼를 입었다고 해서 절대로 죽지 않는 건 아니에요. 하지만 방탄 조끼 덕분에 치명상이 경상으로 끝날 수도 있고, 심지어는 아무런 피해도 입지 않을 수 있어요.

고가용성을 위한 기능을 도입하는 일도 마찬가지예요. 서비스 중단을 100% 완벽하게 막기 위해서라기 보다는 어쩔 수 없이 돌발 상황이 발생하더라도 그 피해를 최소화하기 위한 일이에요.

한편 기능을 도입하는 것만큼이나 중요한 것이 인프라 구성을 정확히 이해하는 일인데요. 지금 우리 서비스의 서버나 네트워크가 어떻게 구성되어 있는지를 정확히 알고 그에 맞게 기능을 설정해야 고가용성을 확보할 수 있어요. 각 기능이 제대로 동작할 수 있는 인프라 환경이 아니라면 기능을 도입해도 고가용성을 보장할 수 없거든요. 인프라 구성과 이해에 대해서는 또 다른 콘텐츠로 설명 드릴게요!

오늘은 고가용성을 위한 대표 기능 3가지를 소개해 드렸는데요. 사실 서비스 중단에 대비하고 고가용성을 확보하는 더 근본적인 방법도 있어요. 바로 클라우드에 클라우드를 더하는 방법이에요.어떤 방법인지는 다음 편에서 알려드리도록 할테니 기대해 주세요!


🙉 요점만 간단히

✔️ 로드밸런서는 특정 서버에 트래픽이 몰리지 않게 해주는 기능이에요.

✔️ 오토 스케일링은 클라우드 서버 수를 상황에 맞게 자동으로 늘렸다 줄였다 하는 기능이에요.

✔️ HA 솔루션은 장애가 날 걸 대비하고 있다가 실제로 장애가 나면 알아서 조치해주는 기능이에요.