본문 바로가기

프로그래밍/클라우드

카카오 먹통사태로 알아보는 고가용성, 장애내구성, 재해복구의 차이

고가용성, 장애 내구성, 재해복구가 비슷한 어감으로 혼용되어 쓰이는 경우가 있는 것 같다.

이번 기회에 확실하게 정리하고 넘어가 보고자 한다.

 

 

- 고가용성(High Availability): 장애 상황을 해결하고 서비스를 지속할 수 있는 능력
- 장애 내구성(Fault Tolerance): 장애 상황에도 서비스를 지속할 수 있는 능력
- 재해 복구 (Disaster Recovery): 장애 상황에서 정상 서비스를 제공할 수 있도록 복구하는 것

 

 

최근 '카카오 먹통 사태'를 예로 들어보겠다.

SK C&C 판교 데이터센터 한 곳에서 화재가 발생했다. 이로 인해 대부분의 카카오 계열 서비스들이 동시에 오랜 시간 동안 중단되었다.

 

이는 장애 내구성이 지켜지지 않은 것이다. 장애 내구성이 지켜졌다면, 데이터센터 한 곳에서 불이 났을지라도 서비스는 중단 없이 지속적으로 정상 동작했을 것이다.

 

그렇다면 고가용성 설계는 되어있었을까?

고가용성 시스템이 구축되었다면 지금처럼 단일 장애 상황이 발생했을 때 해당 장애 지점을 자동으로 제거하고 복구절차가 진행되었을 것이다. 하지만 이번 사태의 경우 복구가 즉시 자동화되지 않았다. 물론 고가용성을 완전히 고려하지 않았다고 말할 수만은 없다. 카카오의 경우는 아래와 같이 공식 입장문을 밝혔다.

 

 

 

카카오는 모든 데이터를 국내 여러 데이터센터에 분할 백업하고 있으며, 외부 상황에 따른 장애 대응을 위한 이원화 시스템을 가지고 있습니다.  이번 화재가 발생한 직후, 카카오는 해당 사실을 인지하고 즉시 이원화 조치 적용을 시작했습니다. 다만 이번과 같이 데이터센터 한 곳 전체가 영향을 받는 것은 이례적인 상황으로, 해당 조치를 적용하는데 예상보다 오랜 시간이 소요되고 있습니다.

 

 

 

 

"이원화 시스템"을 가지고 있다고 하였으나 데이터센터 한 곳에 모여있었던 것으로 파악된다. 가용 영역(AZ)의 분리가 되지 않아 발생한 문제이다. 결국에는 데이터 센터 한 곳이 불능 상태에 빠진 상황에서 모든 서비스가 다운되어버리는 사태가 발생하였으며, 개발자들이 열심히 야근을 하며 손수 시스템 복구를 직접 할 수밖에 없었을 것이다.

 

이것이 바로 재해 복구이다. 장애가 발생했고, 서비스가 다운되어서, 복구를 진행하는 것이다. 물론 데이터베이스야 별도로 백업되어있겠지만 서비스의 복구까지 오랜 시간(오랜 야근)이 소요된다는 차이가 있다.

 

최근 클라우드나 인프라 관련 포스팅을 올리며 '카카오 사태'를 자주 예시로 들게 되었던 것 같다.

지금 쓰는 티스토리 블로그도 카카오에서 ♥을 담아 만드는데.. 혹시 내 블로그.. 블랙리스트에 오른다거나.. 그렇진 않겠지?? ㄷㄷ (사랑해요 카카오)

그만큼 고가용성 시스템의 설계가 중요하고 규모가 큰 서비스일수록 더욱 단단히 대비해야 한다고 생각하기 때문이다.

물론 그만큼 비용적인 이슈가 함께 따라오겠지만 말이다..

 

아마존 CTO인 Werner Vogels가 이런 말을 하기도 했다.

 

"Everything fails, all the time."

장애는 언제나 생기기 마련이다. 이번 사건을 계기로 카카오에서도 보다 적극적인 투자와 탄탄한 설계가 이루어지기를 바란다.