클라우드를 처음 접했을 때 가이드 문서에서 가장 헷갈리고 이해 못했던 부분이 바로 High Availability 라는 부분이었다.

물론 주니어여서 와닿지 않은 부분도 있었지만 이 부분은 서버 개발자로써 연마해나갈 수록 이해의 폭이 달라지는 내용이었던 것 같다.


 HA(High Availability) 란 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다.


 일반적으로 1년 동안의 기간에 계획된 이벤트를 제외하고 장애시간을 5분 이내로 허용한다는 의미의 5 Nines, 99% 의 매우 높은 수준을 목표로 한다. 이를 위해서는 시스템의 모든 부분이 미리 잘 설계되어야 하며, 실제로 사용되기 전에 완전히 테스트가 이루어져야 한다.


 서버 & 클라우드에서 고가용성을 유지하기 위한 대표적인 전략 중 하나는 Cluster를 구조하는 것으로, 이를 통해 한쪽에 장애가 발생하더라도 다른 서버들이 업무를 대신 수행함으로써 시스템 장애를 손쉽게 복구할 수 있다.


 독립적인 디스크를 RAID 형태로 배치하는 디스크 미러링, 여분의 네트워크나 SAN(Storage Area Network)의 완비 등이 요구된다.

HA Cluster 는 주기적으로 heartbeat를 네트워크에 보냄으로써 health check를 모니터링한다.


 장애 복구를 위해 최대한 빠르게 실패를 전달하고, 다른 한 개의 노드에서, 그리고 그마저도 실패하면 전체 노드가 발생한 장애에 대해 시도하는 방식으로 복구를 시도한다



서버개발자에게 매우 중요한 내용이지만, DevOps 가 아닌 Develop 에 집중하는 엔지니어라면 잘 모를 가능성이 크다. 개발자이면서도 운영 및 인프라 전반에 대해 포괄적인 지식이 필요해보인다.



+ Recent posts