Cloud Modernization 04
리전과 가용 영역으로 이해하는 클라우드 고가용성의 출발점
데이터 센터, 가용 영역, 리전이 모두 위치 개념처럼 보여서 장애 대비와 어떤 관계가 있는지 헷갈린다.
근거 · 교안 p13-p16
1장: 데이터 센터: 클라우드의 심장을 들여다보다
솔라의 태블릿 화면에는 짧은 문장 하나가 덩그러니 떠 있었다. ‘가용 영역은 하나의 리전 안에서 재해로부터 안전하도록 서로 격리된 논리적인 데이터 센터 그룹이다.’ 솔라는 문장을 소리 내 읽어봤다가, 눈으로 다시 훑었다가, 결국 미간을 찌푸렸다. 아는 단어들인데, 조합된 문장은 머릿속에 그림을 그려주지 않았다.
“언니, 잠깐 이것 좀 봐봐.”
거실 반대편에서 책을 읽던 루나가 고개를 들었다.
“데이터 센터, 가용 영역, 리전. 전부 그냥 ‘위치’를 말하는 것 같단 말이야. 데이터 센터는 건물. 가용 영역은 그 건물이 여러 개 모인 동네. 리전은 그 동네가 있는 도시. 그냥 크기만 다른 거 아니야? 그런데 왜 이게 ‘재해로부터 안전’하고 ‘고가용성’ 같은 어려운 말이랑 연결되는지 모르겠어.”
솔라는 답답한 듯 태블릿 화면을 톡톡 쳤다. 그녀의 머릿속에서 세 단어는 그저 지도 위의 크고 작은 점들일 뿐이었다.
루나는 솔라 옆으로 다가와 태블릿을 들여다보았다. 잠시 문장을 읽어보던 루나가 조용히 말했다.
“그렇게 생각할 수 있겠다. 단어들이 겹쳐 보이니까. 좋아, 솔라. 그럼 우리 가장 작은 점부터 직접 여행해 볼까? 상상 속으로.”
“여행?”
“응. 잠깐 눈 감아봐. 우리가 지금 클라우드의 가장 중심, 딱 한가운데로 들어가는 거야.”
솔라는 반신반의하며 눈을 감았다.
“자, 문이 열린다.” 루나의 차분한 목소리가 들려왔다. “제일 먼저 뭐가 느껴져?”
솔라는 상상에 집중했다. “음… 뭔가 ‘웅’ 하는 낮은 소리가 계속 들리고, 공기는 엄청 시원해. 서늘할 정도로.”
“맞아. 수만 대의 컴퓨터가 내뿜는 열을 식히느라 거대한 냉방 장치가 쉴 새 없이 돌아가고 있거든. 이제 눈을 떠봐. 뭐가 보여?”
솔라는 상상 속에서 눈을 떴다. 눈앞에는 끝도 보이지 않는 거대한 공간이 펼쳐져 있었다. 그리고 그 공간을 가득 메운 것은, 천장까지 닿을 듯한 검은색 캐비닛들이었다. 캐비닛마다 작은 불빛들이 깜빡이며 살아있는 것처럼 보였다.
“와… 이게 다 뭐야?”
“저게 바로 서버 랙(Server Rack)이야. 우리가 매일 쓰는 앱, 지금 보고 있는 영상, 친구와 나누는 메시지, 그 모든 걸 처리하는 작은 컴퓨터들이 저 캐비닛 안에 빽빽하게 들어차 있어. 클라우드의 ‘뇌’라고 할 수 있지.”
루나는 상상 속 솔라의 손을 이끌고 다른 곳을 가리켰다. “그럼 저쪽은 어떨까? 서버만큼이나 중요해. 저기엔 우리의 사진, 문서, 게임 데이터 같은 소중한 정보들이 저장되는 스토리지 장비들이 모여 있어. 클라우드의 ‘기억’을 담당하는 곳이야.”
솔라는 거대한 도서관에 온 것 같다고 생각했다. 다만 책 대신 데이터가 빼곡히 꽂혀있는. 서버와 스토리지를 둘러보니, 바닥과 천장을 거미줄처럼 뒤덮은 두꺼운 케이블 다발이 눈에 들어왔다.
“그럼 이 선들은?”
“아주 중요한 걸 봤네. 그게 바로 네트워크 장비들이야. 뇌와 기억을 연결하고, 또 우리를 이 데이터 센터와 연결해 주는 ‘신경망’이지. 저게 없다면 서버와 스토리지는 그냥 외딴섬에 갇힌 고철 상자가 될 뿐이야.”
그제야 솔라에게 희미하던 그림이 선명해졌다. 데이터 센터는 그냥 ‘건물’이나 ‘장소’가 아니었다. 서버, 스토리지, 네트워크라는 세 가지 핵심 요소가 유기적으로 얽혀 끊임없이 작동하는 거대한 기계이자, 살아있는 유기체에 가까웠다. 클라우드의 심장부 그 자체였다.
“아….” 솔라가 나지막이 탄성을 내뱉으며 현실로 돌아왔다. “그냥 텅 빈 공간에 컴퓨터 몇 대 있는 게 아니었구나. 서버, 스토리지, 네트워크가 모여서 하나의 목적을 위해 일하는 ‘시설’이었네.”
“바로 그거야.” 루나가 부드럽게 미소 지었다. “데이터 센터는 ‘어디’에 있느냐는 위치 정보이기 이전에, 컴퓨팅과 데이터를 처리하고 저장하는 ‘기능’의 집약체인 거지.”
솔라는 다시 한번 태블릿의 문장을 보았다. ‘가용 영역은 … 데이터 센터 그룹이다.’
데이터 센터가 무엇인지 명확해지자, 새로운 질문이 고개를 들었다.
“언니, 이제 데이터 센터가 뭔지는 확실히 알겠어. 거대한 클라우드의 심장. 그런데 가용 영역이 이 심장들을 모아놓은 ‘그룹’이라면… 그냥 더 큰 심장이 된 거잖아? 심장 하나가 멈췄을 때를 대비해서 여러 개 두는 건 알겠는데, 그걸 그냥 한곳에 모아두면 무슨 의미가 있지? 큰 화재라도 나면 다 같이 멈추는 거 아니야?”
2장: 가용 영역: 장애를 격리하고 내결함성을 높이는 클라우드 설계
루나는 말없이 머그컵 두 개를 가져와 거실 테이블 위에 놓았다. 마치 한 바구니에 모든 것을 담듯, 두 컵은 서로 맞닿을 정도로 바싹 붙어 있었다.
그 모습은 데이터 센터들을 한데 모아둔다는 개념에 대한 솔라의 의구심을 그대로 옮겨놓은 듯했다. 강력한 심장 여러 개를 한곳에 모아두면, 한꺼번에 멈춰버릴 위험도 커지는 게 아닐까? 아무리 봐도 이상한 설계였다.
“솔라, 이게 네가 상상하는 ‘가용 영역’이야. 데이터 센터 A, 데이터 센터 B.” 루나는 컵 하나씩을 가리켰다. “여기에 뜨거운 코코아를 붓다가 실수로 쏟았다고 해보자.”
루나는 손으로 컵 위를 덮는 시늉을 했다.
“그럼… 둘 다 젖겠지.” 솔라가 당연하다는 듯 대답했다.
“맞아. 한 컵에 생긴 문제가 바로 옆 컵까지 영향을 주지. 만약 이게 데이터 센터라면, A 데이터 센터의 정전이나 화재가 B 데이터 센터에까지 영향을 미칠 수 있다는 뜻이고. 네가 걱정한 그대로야.”
그러고 나서 루나는 한쪽 머그컵을 들어 테이블 반대편 끝으로 옮겼다. 이제 두 컵 사이에는 어른 한 명이 누워도 될 만큼의 거리가 생겼다.
“하지만 클라우드 설계자들은 다르게 생각했어. ‘그룹’이라는 단어 때문에 우리가 종종 오해하지만, 가용 영역은 이런 모습에 더 가까워.”
솔라는 멀찍이 떨어진 두 컵을 번갈아 보았다. 그냥 컵 두 개가 있을 뿐인데, 방금 전과는 전혀 다른 그림이었다.
“자, 이제 다시 코코아를 쏟아볼까?” 루나가 처음 컵이 있던 자리를 가리키며 말했다. “데이터 센터 A에 예상치 못한 정전이 발생했어.”
솔라의 눈이 동그래졌다. “……데이터 센터 B는 멀쩡하네.”
“바로 그거야. 이게 ‘격리(Isolation)’의 힘이야.” 루나가 말했다. “가용 영역 안의 데이터 센터들은 서로 다른 전력 공급망과 네트워크, 냉각 설비를 사용해. 물리적으로도 수 킬로미터씩 떨어져 있어서 한 곳에 홍수나 정전, 화재가 발생해도 다른 곳은 영향을 받지 않도록 설계되지.”
솔라는 무릎을 탁 쳤다. “아! ‘그룹’이라고 해서 다닥다닥 붙어있는 아파트 단지 같은 걸 생각했는데, 그게 아니라 독립된 단독주택이 하나의 ‘마을’로 묶인 거구나! 집 하나가 정전돼도 옆집은 불이 켜져 있는 것처럼!”
“정확한 비유야. 덕분에 우리는 서비스를 만들 때, 한 데이터 센터가 멈추더라도 다른 데이터 센터가 즉시 그 일을 이어받게 할 수 있어. 사용자는 아무런 문제도 느끼지 못하고. 이렇게 일부 구성 요소에 장애가 발생해도 전체 시스템은 계속 작동하는 능력을 ‘내결함성(Fault Tolerance)’이라고 불러. 그리고 내결함성은 서비스가 항상 사용 가능한 상태, 즉 ‘고가용성(High Availability)’을 만드는 핵심 열쇠지.”
솔라는 한동안 말이 없었다. 그녀의 머릿속에서 ‘데이터 센터 그룹’이라는 단어가 해체되고 재조립되고 있었다. 그냥 묶음이 아니었다. 목적을 가진, 의도적으로 격리된 설계였다.
솔라는 다시 태블릿을 들었다. 아까는 의미 없이 흩어져 있던 단어들이 이제 제자리를 찾아 빛나기 시작했다.
‘가용 영역은 … 재해로부터 안전하도록 서로 격리된 논리적인 데이터 센터 그룹이다.’
“이제 알겠다.” 솔라가 고개를 끄덕였다. “왜 ‘격리된’이라는 말이 붙었는지. 그리고 왜 ‘논리적인’ 그룹인지도. 물리적으로는 떨어져 있지만, 우리는 그걸 ‘고가용성을 위한 하나의 단위’라는 논리로 묶어서 사용하는 거니까.”
생각이 명쾌해지자 새로운 자신감이 붙었다. 솔라는 의기양양하게 말했다.
“좋았어! 그럼 내 서비스를 만들 땐, 한 데이터 센터는 서울에 두고, 다른 하나는 아주 멀리 부산에 둬야겠다. 그러면 서울에 큰 지진이 나도 부산은 안전하니까, 이게 최고의 내결함성 설계 아니야?”
3장: 리전: 클라우드 서비스의 지리적 독립성과 재해 복구 전략
솔라의 의기양양한 목소리가 가라앉자, 거실에는 잠시 정적이 흘렀다. 그녀의 머릿속에서는 이미 서울과 부산에 세워진 완벽한 이중 데이터 센터가 돌아가고 있었다. 지진에도 끄떡없는, 궁극의 서비스.
루나는 가만히 솔라의 얼굴을 들여다보다가, 태블릿을 들어 화면을 켰다. 테이블 위를 비추던 따뜻한 조명 대신, 화면에서 뿜어져 나오는 서늘한 빛이 두 사람 사이의 공기를 바꿨다. 화면에 나타난 것은 복잡한 회로도가 아닌, 익숙한 한반도 지도였다. 루나는 지도 위의 서울과 부산에 각각 작은 점을 찍었다.
“서울에서 부산까지. 직선거리로 약 325킬로미터네.” 루나가 화면에 표시된 숫자를 읽었다. “네 말대로 서울에 큰 재해가 생겨도 부산은 안전할 확률이 높지. 아주 멀리 떨어뜨려 놓았으니까.”
“그치? 완벽한 격리잖아.” 솔라가 어깨를 으쓱했다.
“하지만 솔라, 네 서비스는 서울과 부산에 있는 두 데이터 센터가 서로 끊임없이 대화해야 해. 한쪽 심장이 멈추면 다른 쪽이 즉시 대신 뛰어야 하니까. 이 둘이 대화하는 데 시간이 얼마나 걸릴까?”
루나는 ‘대화’라는 단어에 힘을 주어 말했다.
“시간? 컴퓨터끼리인데… 거의 바로 되지 않아?”
“빛의 속도도 한계가 있으니까. 서울과 부산 사이의 네트워크 통신에는 눈에 보이지 않는 미세한 지연 시간(latency)이 생겨. 아주 짧은 시간이지만, 실시간으로 데이터를 복제하고 장애를 감지해야 하는 시스템에게는 매우 긴 시간일 수 있어. 사용자가 버튼을 눌렀는데, 서울 서버가 멈춘 순간 그 정보가 부산까지 전달되지 못하면 데이터가 사라질 수도 있는 거야.”
솔라의 표정이 미묘하게 굳었다. 완벽하다고 생각했던 설계에 예상치 못한 균열이 보이기 시작했다. 안정성을 위해 선택한 ‘거리’가 오히려 실시간 동기화의 발목을 잡을 수 있다는 사실을 처음 깨달았다. 가용 영역 안의 데이터 센터들이 서로 수 킬로미터 이내의 가까운 거리에 있는 이유가 있었다. 빠른 응답 속도로 완벽하게 동기화하며 ‘하나의 시스템’처럼 움직이기 위해서였다.
“아… 그럼 서울-부산 조합은 내결함성을 위한 설계로는 별로인 거네. 너무 멀어서.”
“‘고가용성’을 위한 설계로는 단점이 명확하지. 하지만 네 아이디어의 핵심, 즉 ‘아주 멀리 떨어뜨려 놓는다’는 생각은 클라우드 설계의 또 다른 중요한 축이야.”
루나는 지도 화면을 축소했다. 한반도가 작아지고, 동아시아가, 그리고 곧 전 세계 지도가 화면에 나타났다. 서울 주변에 작은 원이 하나 그려져 있었고, 도쿄, 싱가포르, 오하이오, 프랑크푸르트 등 세계 각지에도 비슷한 원들이 표시되어 있었다.
“이게 바로 **리전(Region)**이야. AWS가 전 세계 주요 거점에 만들어 놓은 데이터 센터들의 거대한 클러스터지. 우리가 지금까지 이야기한 가용 영역들은 바로 이 리전이라는 큰 울타리 안에 여러 개가 들어 있어.”
루나는 서울 리전과 도쿄 리전을 차례로 가리켰다.
“중요한 건, 이 리전들은 서로 완전히 독립적이라는 거야. 서울 리전의 전력망, 네트워크, 심지어 관리 시스템까지 도쿄 리전과는 아무런 연관이 없어. 한 국가 전체에 영향을 미치는 대규모 지진, 전쟁, 혹은 인터넷망 마비 같은 최악의 재난이 발생해서 서울 리전 전체가 멈추더라도, 도쿄 리전은 아무 영향 없이 멀쩡히 돌아가.”
그 순간 솔라의 머릿속에서 모든 조각이 맞춰졌다.
데이터 센터. 가용 영역. 리전. 이것은 단순히 크기가 다른 위치의 나열이 아니었다. 서로 다른 종류와 규모의 ‘장애’에 대비하기 위한 계층적 방어 전략이었던 것이다.
- 가용 영역(AZ) 내의 복제: 데이터 센터 하나의 장애(정전, 화재)에 대비. 고가용성을 위한 전략. (빠른 응답 속도가 핵심)
- 리전(Region) 간의 복제: 한 지역 전체의 재난(지진, 국가적 네트워크 마비)에 대비. **재해 복구(Disaster Recovery)**를 위한 전략. (지리적 독립성이 핵심)
솔라는 자신의 서울-부산 아이디어가 왜 어색했는지 이제 명확히 알았다. 고가용성과 재해 복구라는 두 가지 다른 목표를 하나의 방법으로 해결하려 했던 것이다.
“알겠다…! 그러니까 내 서비스 사용자 대부분이 한국에 있다면, 일단 서울 리전 안에서 여러 가용 영역에 서비스를 분산 배포해야 하는 거구나. 그래야 평소에 빠르고, 작은 장애가 나도 서비스가 끊기지 않으니까.”
솔라는 흥분하며 태블릿을 자기 쪽으로 끌어당겼다. 그녀는 화면 위에 가상의 서비스 아키텍처를 그리기 시작했다.
“그리고… 만에 하나 서울에 정말 큰일이 생기는 걸 대비해서, 내 소중한 사용자들의 데이터를 지키려면, 도쿄나 다른 리전에 주기적으로 데이터를 백업해두는 거야. 즉시 서비스를 재개하진 못하더라도, 모든 걸 잃지는 않게. 이게 바로 ‘리전 전략’이구나!”
솔라는 방금 자신이 그린 간단한 도식을 뿌듯하게 바라봤다. 서울 리전 안에 동그라미 두 개(AZ-A, AZ-B)를 그리고, 그 둘을 실선으로 연결했다. 그리고 서울 리전 전체를 감싸는 큰 원에서 도쿄 리전으로 향하는 점선 화살표를 그렸다. ‘백업’이라고 작게 써넣는 것도 잊지 않았다. 막연했던 ‘위치’라는 단어들이 이제 각자의 역할을 가진 전략적 카드가 되어 그녀의 손안에 놓여 있었다. 클라우드 고가용성의 출발점이 바로 여기, 이 계층적 구조에 대한 이해로부터 시작된다는 것을 깨닫는 순간이었다.