지금 50대 이상인 분들은 기억하실지 모르겠지만, 아주 옛날에는 컴퓨터를 끄기 전에 ‘하드 파킹’ 프로그램이란 걸 썼습니다. 당시엔 하드디스크를 갑자기 끄면 망가질 수 있어서, 끄기 전에 헤드를 기본위치로 옮기는 프로그램이 있었습니다.
지금은 모든 하드디스크들이 자동 파킹을 지원해서 따로 하드 파킹 프로그램을 돌릴 필요는 없지만, 아직도 그냥 전원 코드를 뽑아서 컴퓨터를 끄는 사람은 거의 없습니다. 대개 윈도우의 종료버튼을 눌러서 컴퓨터를 끕니다. 사실 요즘엔 갑자기 전원 코드를 뽑는다고 해도 컴퓨터에 별 지장은 없습니다. 하지만, 혹시나 하드디스크나 보드가 망가질 가능성도 있고, 또 프로그램들과 OS의 상태를 안전하게 저장하는 과정을 위해 종료버튼이 있습니다.
그런데, 엄청나게 많은 컴퓨터가 묶여있는 데이터센터는 어떨까요?
사실 데이터센터의 컴퓨터들은 거의 24시간 돌아갑니다. 하지만, 이 안의 모든 컴퓨터들이 다 정상이란 법은 없습니다. 워낙 많은 컴퓨터들이 상시 돌아가는 상황이기에, 예상치 않은 다양한 오류가 생기는 컴퓨터들도 있기 마련입니다.
클라우드 컴퓨팅은 설계부터 언제 어딘가가 작동이 안 될 수 있다는 것을 가정하고 만듭니다. 클라우드 컴퓨팅의 장점은 어떤 컴퓨터가 제대로 작동을 안 하거나 어떤 하드디스크가 망가졌다 하더라도 다른 컴퓨터나 다른 하드디스크가 그걸 대체할 수 있도록 되어 있습니다.
그런데, 만일 데이터센터가 통째로 날라가면 어떻게 될까요?
사실 마이크로소프트사가 애저의 데이터센터를 새로 론칭할 때, 마지막으로 하는 테스팅은 데이터센터의 전원을 내리는 일입니다. 한마디로 데이터센터에 들어오는 가장 큰 전원코드를 갑자기 뽑아버리는 겁니다. 그리고는 얼마 후 다시 전원을 켭니다.
이때 모든 기능이 전원코드를 뽑기 직전처럼 자연스럽게 작동해야 합니다. 물론 전원이 안 들어간 동안에는 그 데이터센터의 모든 기능이 안 됩니다. 하지만 그 동안에도 다른 곳의 데이터센터들은 모든 기능이 정상적으로 작동해야 합니다. 또 전원코드를 다시 꼽았을 때, 데이터센터의 모든 컴퓨터들과 거기에서 돌고 있는 애저의 서비스들이 전원코드를 뽑기 직전의 상태로 자동으로 돌아가야 합니다. 하지만, 이게 말처럼 쉽지는 않습니다.
예로 PC방에서 게임을 하다가 어떤 기자가 게이머들의 인내를 시험하고자 PC방의 전원을 내렸다고 칩시다. 그러면 PC방 손님들은 막 욕을 하며 난리를 치겠지요. 그런데 그 기자가 다시 전원을 올리면, 손님들은 바로 전원을 내리기 직전에 플레이하던 상태로 돌아갈까요? 돌아갈 수도 있지만, 게임에 따라 플레이한 기록이 없어질 수도 있습니다.
애저 클라우드는 데이터센터가 통째로 날라갔다가 다시 복구가 되어도, 자동으로 이전 상태로 돌아가도록 설계가 되었습니다. 물론 이는 애저의 자체 서비스가 그렇다는 것이고, 애저를 쓰는 유저들은 마이크로소프트에서 권장하는 디자인으로 서비스를 설계해야 합니다.
이렇게 재난 상황이 왔다가 다시 복구가 되었을 때, 모든 기능이 자동으로 정상 복구되도록 하는 걸 재해 복구 (DR, disaster recovery)이라고 합니다. 재해 복구가 제대로 되도록 시스템을 설계하는 것이 단순하지는 않습니다. 데이터의 백업뿐 아니라, 메모리 상태의 스냅숏을 수시로 저장한다던지, 로그를 기록해서 복구할 때 이용하게 한다던지 등등 많은 부분을 고려해야 하고, 또 실제로 테스트를 해야 합니다.
문제는 클라우드 컴퓨터의 고객이 데이터센터의 전원을 직접 뽑아서 테스트할 수는 없기에, 클라우드 서비스가 시뮬레이션을 제공해야 합니다. 마이크로소프트의 애저의 경우 다양한 재해 시뮬레이션 서비스를 제공해서, 고객들 스스로가 DR을 테스트하고 설계할 수 있도록 도와주고 있습니다.