오늘날 우리가 사는 세상을 몇 개의 단어로 표현할 때 빠지지 않는 단어 중 하나가 ‘디지털’과 ‘상시연결’이다. 특히 우리가 삶 속에서 많은 사람들과 함께 살아가듯이 일상의 한 부분으로 자리잡은 ‘디지털 서비스’들도 다양한 서비스들과 중요하게 연결돼 있다. 이 덕분에 우리는 모바일 통신망에 장애가 나면 카페에서 커피 한 잔을 마시기 힘들어지고, 회사 업무가 이뤄지는 클라우드 서비스에 장애가 나면 회사의 업무는 물론, 협력사의 업무까지 멈추기 일쑤다.
이에 누구나 평온한 일상을 위해 언제까지고 완벽한 서비스가 나오기를 바라지만, 이는 사실 불가능하다. 그리고 어떤 서비스가 평온히 운영되는 것처럼 보이는 것은 잘 보이지 않는 어디선가에서 해결이 쉽지 않은 문제를 해결하기 위해 고민하는 누군가의 노력 덕분이다.
이렇게 자연히 발생하는 온갖 돌발 상황들이 사용자들에 잘 보이지 않게 만드는 기술과 노력들이 모여, 서비스 전체의 ‘가용성’으로 표현된다. 1년 중 장애 발생 시간의 비중으로 계산되는 이 가용성은 ‘99.9%’이면 1년 중 8시간 46분 정도는 장애가 나도 된다는 의미다.
이 ‘가용성’은 현실적으로 일정 수준 이상에서는 가용성을 높이는 데 드는 노력과 비용이 효과보다 훨씬 커지는 비효율을 만드는 만큼, 적절한 방향에서의 접근이 필요하다. 가용성을 높이는 대표적인 방법은 어떤 부품이나 시스템 한 대가 고장나도 주위에서 이를 대체할 수 있게 하는 ‘이중화’다. 하지만, 가용성을 다른 방향에서 생각하면 비싼 장비 이중화보다 고장나면 빨리 고치는 대응으로도 달성할 수 있다. 현실적으로는 어느 한 쪽 방향만으로의 접근으로는 제대로 된 고가용성을 달성하기는 불가능하다.
고가용성을 위한 기본 접근법 “모든 장애 예상 지점을 두 개로”
IT 하드웨어부터 시스템, 서비스까지 모든 부분에서 고가용성을 위한 기본 접근법은 모든 장애 예상 지점을 두 개로 만드는 ‘이중화’다. 이러한 설계는 기본적으로 확률에 약간의 행운을 담아 ‘같은 컴포넌트 두 개가 동시에 고장나지는 않을 것이다’라고 가정하고 만들며, 현실적으로도 효과가 검증된 방식이다. 이러한 고가용성 설계에서 기본 구성은 ‘두 개’지만, 시스템의 중요도에 따라서는 두 개 이상의 구성 요소를 갖추며 철저하게 대비하기도 한다.
비용이 중요한 PC에서는 같은 부품을 두 개 쓴다는 것을 잘 찾아볼 수 없지만, 서버 분야에서는 제법 사례가 많다. 파워 서플라이를 두 개 장착해 하나가 고장나도 바로 다른 한 쪽에서 이어받는 이중화 구성이나, 스토리지 구성에서 몇 개의 드라이브 중 한 개 정도가 고장나도 시스템이 멈추거나 데이터가 손상되는 일이 없는 ‘RAID(Redundant Array of Independent Disk)’ 구성이 좋은 예다. 좀 더 비싼 기술로는 시스템의 핵심 요소인 프로세서나 메모리가 고장나도 대처 가능한 기술이 있지만, 일반적인 x86 서버에서는 잘 사용되지 않는다.
인프라와 데이터센터 수준에서도 이러한 ‘이중화’는 기본이다. 데이터센터 기본 설계 중에는 전력 공급부터 서로 다른 변전소에서 각자 받고, 변전과 배전 시설도 두 개를 갖춰, 결과적으로는 서버의 파워 서플라이에 서로 다른 전력 소스가 공급되게 하는 것이 기본이다. 여기에 무정전전원장치(UPS)도 각 라인별로 갖추는 게 정석이지만, 두 라인 중 한 쪽만 갖춰도 짧은 장애에서는 효과를 볼 수 있다.
이중화의 범위를 좀 더 넓히면 ‘재해복구(DR)’ 환경이나 서비스 이중화 등에 이른다. 모든 서비스를 어느 특정 데이터센터에서 운영하다가 지진이나 화재 등 천재지변이 나거나, 일대의 정전이나 통신두절 상황이 발생할 때, 완벽히 복제된 상태의 예비 데이터센터로 이를 넘겨 서비스를 복구한다는 시나리오다. 그리고 이러한 구성에서 유연성을 극한까지 올린 것이 글로벌 단위로 서비스되는 클라우드 서비스다.
물론 이런 물리적 이중화를 통한 가용성 확보에서는 특정 장애 원인이 발생하면 최대한 빨리 해결해야 한다는 전제가 필요하다. 파워 서플라이가 이중화된 서버라도 두 개의 파워 서플라이가 모두 고장나면 전원이 꺼지고, 스토리지의 RAID는 일정 개수 이상의 드라이브가 고장나면 데이터가 모두 손실된다. 이에 시스템이 당장 잘 돌아간다고 해도 주기적인 확인과 관리가 필수적이다.
가용성을 위한 또 다른 접근법 “장애로 인한 충격 최소화”
높은 가용성을 위한 또 다른 접근법은 아예 어떤 식으로든 장애가 날 수 있다는 점을 인정하고, 이를 얼마나 빨리 복구할 수 있느냐에 초점을 맞추는 방식이다. 이는 앞서 소개한 ‘가용성’의 기준이 1년 중 몇 시간이나 장애가 허용되는지를 최대한 활용하는 접근법이기도 하다. 극단적인 예로, 매장의 POS나 감시 카메라를 위한 엣지 서버에 이상이 생겨 교체하는 데 8시간이 걸렸다 해도, 이 시스템의 가용성은 여전히 ‘99.9%’ 이상이다.
이에, 상황에 따라서는 하드웨어 수준에서부터 이중화를 통한 고가용성을 갖추는 것보다 장애가 생겨도 이를 빠르게 인식, 신속히 사람을 보내 교체하고 서비스를 이어나갈 수 있게 조치하는 것이 더 합리적인 방법이다. 사실 이중화가 되어 있지 않은 일반적인 PC도 몇 년 정도 끄지 않고 써도 별 문제가 없는 경우가 흔한 만큼, 모든 시스템에 이중화를 위한 비용을 지출하기보다 고장난 시스템들을 빠르게 교체하는 것이 더 효율적인 방법일 수도 있는 것이다.
이러한 접근법은 가용성이 중요하게 여겨지는 클라우드 데이터센터에도 많이 사용된다. 예를 들면, 메타가 사용하는 OCP(Open Compute Project) 시스템의 기본 서버는 이중화가 고려돼 있지 않다. 대신, 이중화는 데이터센터 전반의 서비스 수준에서 갖춰져 있어, 전체 서비스에서 서버 몇 대 정도가 갑자기 고장난다고 해도 서비스 전체에는 영향이 없게 돼 있다. 이 때, 고장난 서버는 전원을 끄고 제거한 다음, 새로운 서버를 장착하고 전원을 넣으면 네트워크에 접속되면서 자동으로 서버가 설정되고 작업을 받아와 서비스에 참여하는 형태다.
소규모 엣지 데이터센터에서도 이러한 접근법은 제법 유용하다. 부피와 전력소비량, 발열에 민감한 환경에서 크기가 작은 장비들을 넣고, 문제가 생긴 경우 신호를 받아 빠르게 현장에 출동해 하드웨어 장비만을 교체하면, 설정은 네트워크 연결 이후 자동으로 이뤄지는 식으로 만들 수 있을 것이다. 고장난 서버에서 처리해야 할 작업들은 근처의 서버들로 잠깐 옮겨서 처리할 수도 있다. 이러한 접근법은 장애 신호를 빠르게 받아 물리적으로 대응할 수 있다면 가용성 확보에도 충분히 경쟁력을 기대할 수 있을 방법이다.
물론 이러한 방법을 사용하는 데도 몇 가지 전제가 필요하다. 먼저, 하드웨어 시스템과 데이터가 분리돼 있어야 하고, 데이터는 장비 내부 뿐만 아니라 외부에도 저장이 되어 있어야 할 것이다. 하지만 이러한 전제는 그리 갖추기 어려운 것만은 아니고, 오히려 어떤 상황에도 갖춰야 할 필수적인 부분들이다. 또한 최근 주목받는 AI 기반 예측 관리 기술은 대부분의 문제를 실제 일어나기 전에 사용자의 일반적인 사용 시간과 상관 없는 ‘정기 정비’ 시간에 미리 대비할 수 있게 하며, 이런 경우 사용자의 체감 가용성은 ‘100%’에 근접할 것이다.
우리 일상에서의 ‘가용성’ 극대화, 약간의 ‘대안’으로도 가능
우리의 일상에서 PC나 스마트폰 등 디지털 디바이스가 고장나거나, 인터넷 연결이나 서비스 장애로 일상에 곤란을 겪는 경우도 ‘가용성’ 문제로 볼 수 있겠다. 또한 우리의 일상 속에서 모든 시간의 가치가 동등하지는 않을 것이기 때문에 실제 수치적인 가용성과 체감하는 불편함의 차이도 충분히 있을 수 있다. 그리고 이런 곤란함은 약간의 ‘준비’ 정도로 제법 많은 부분을 해결할 수 있는 만큼, 여유 시간이 있을 때 미리 준비해 두는 것도 좋을 것이다.
PC 사용 중 가장 난감한 상황이라면 어제까지 잘 쓰던 PC가 오늘 갑자기 제대로 켜지지 않는 경우일 것이다. 갑자기 이런 상황이 닥친 경우 어디서부터 문제를 해결할지 막막해지는데, 소프트웨어 문제라면 보통은 시간 문제상 ‘재설치’와 ‘복원’의 이지선다가 된다. 재설치의 경우 윈도 설치용 USB 메모리를 넣고 부팅해 완전히 처음부터 설치할 수도 있고, 기존 환경을 덮어 쓸 수도 있는데, 시간이 중요하다면 기존 환경을 덮어 쓰는 쪽이 현실적일 것이다.
‘복원’의 경우는 대기업의 브랜드 PC에 같이 제공되는 시스템 복원이나 초기화 기능을 사용할 수도 있지만, 윈도의 시스템 이미지 복원 기능을 통해 잘 쓰고 있는 상황을 저장해 두었다가 유용하게 쓸 수 있다. 혹은 윈도의 기본 시스템 복원 기능이 시스템의 큰 변화가 있을 때마다 복원 지점을 만들어 두는데, 이를 활용할 수도 있겠다. 이 외에도 예전 ‘고스트’ 같은 이미지 기반 복원 솔루션들도 있는데, ‘클론질라(Clonezilla)’ 등 무료로 사용할 수 있는 것들도 있다.
PC에 저장된 데이터는 상황에 따라 찾기 힘들 수도 있는 만큼, 다시금 ‘백업’의 중요성이 강조된다. 언제나 인터넷에 연결된 요즘 PC에서 가장 편리한 백업 방법은 역시 외부 클라우드나 네트워크 스토리지(NAS)로 자료를 자동 복사하는 ‘동기화’ 기능이다. 특히 클라우드의 동기화 기능에서 ‘버전 관리’ 기능을 잘 사용하면, 랜섬웨어가 PC의 데이터를 모두 암호화해 버렸더라도 데이터를 살릴 수 있는 방법이 있다. 정말 중요한 자료라면 3군데 이상 복사해 두고, 네트워크 연결 없이도 사용할 수 있도록 준비해 두는 것이 좋다.
클라우드 서비스의 장애에 대한 피해는 ‘서비스 수준 계약(SLA)’으로 해결해야 하는데, 계약 수준을 높일 수록 비용이 높아진다. ‘99.9%’ 계약이라면, 1년 중 언제 어떤 사고가 터져도 연간 8시간 45분 이내면 계약상으로는 피해 보상이 어려울 수 있다. 의외로 클라우드 서비스 장애는 여러 가지 이유로 자주 일어나지만, 장애에 대한 대처는 약간의 여유를 가지고 기다리는 정도밖에 없다. 관련된 서비스를 직접 운영하는 것이 꼭 정답은 아니라는 것이다.
이 외에도 일상의 ‘가용성’ 을 위한 부분에서는 지금까지 우스갯소리로 지나쳤지만 도움이 될 만한 부분도 있다. 예를 들면, 가족들이 모두 다른 무선 통신사를 가입하면 가족할인은 받기 힘들지언정 어느 한 통신사의 통신망에 장애가 발생했을 때 온 가족이 곤경에 빠지는 경우는 막을 수 있다. 그리고 스마트폰의 페이 서비스만 믿지 않고, 지갑에는 실물 카드 두 장 정도와 약간의 현금을 함께 넣어 두는 것도 곤란한 상황을 피하는 데 제법 도움이 된다.
권용만 기자 yongman.kwon@chosunbiz.com
댓글0