개념 자료

고가용성·재해 복구

서버는 고장 나고, 데이터센터는 정전되고, 사람은 실수로 데이터를 지웁니다. 고가용성은 이런 일이 생겨도 서비스를 계속 돌아가게 하는 것이고, 재해 복구는 그래도 멈췄을 때 정해 둔 시간 안에 되살리는 것입니다. 클라우드 프로바이더마다 이름은 다르지만 뼈대는 같습니다. 뼈대를 먼저 보고, 프로바이더마다 다른 점은 장마다 따로 봅니다.

프로바이더를 고르면 장마다 그 프로바이더의 서비스 이름과 다른 점을 함께 보여 줍니다. 지금은 어느 프로바이더에도 묶이지 않은 일반 용어로 설명합니다.

01

장애는 반드시 난다: 가용성 숫자와 단일 장애점

가용성은 서비스가 쓸 수 있는 상태였던 시간의 비율입니다. 99.9%는 꽤 높아 보이지만 1년으로 바꾸면 약 8시간 45분 멈춘다는 뜻입니다. 9가 하나 늘 때마다 허용되는 멈춤은 10분의 1로 줄고, 그만큼 비용과 설계가 어려워집니다.

가용성1년에 멈추는 시간한 달에 멈추는 시간
99%약 3일 15시간약 7시간
99.9%약 8시간 45분약 43분
99.95%약 4시간 22분약 22분
99.99%약 52분약 4분
99.999%약 5분약 26초

이어 붙이면 낮아지고, 나란히 두면 높아진다

서비스는 여러 구성 요소가 이어져 있습니다. 웹 서버, 앱 서버, DB를 차례로 거쳐야 응답이 나간다면 셋이 모두 살아 있어야 합니다. 그래서 전체 가용성은 각 구성 요소 가용성의 곱입니다. 99.9%짜리 셋을 이으면 약 99.7%로 떨어집니다. 반대로 같은 서버를 두 대 나란히 두면 둘 다 멈춰야 멈추니 그 계층은 99.9999%까지 올라갑니다(두 대의 장애가 서로 독립이라고 가정할 때). 아래 그림에서 계층마다 두 대로 늘려 보세요.

전체 가용성
99.7% (연 약 26.3시간)

웹 → 앱 → DB 를 거쳐야 서비스가 된다 · 왼쪽 위 = 계층별 가용성

각 구성 요소가 99.9%여도 셋을 이어 붙이면 셋 다 살아 있어야 하니 전체는 99.7%로 떨어집니다. 반대로 같은 서버를 두 대 나란히 두면 둘 다 멈춰야 멈추니 그 계층은 99.9999%가 됩니다. (장애가 서로 독립이라고 가정한 계산입니다.)

하나만 멈춰도 전체가 멈추는 지점을 단일 장애점이라고 합니다. 고가용성 설계는 단일 장애점을 찾아 하나씩 없애는 일입니다. 서버만이 아닙니다. DB, 로드 밸런서, 네트워크 경로, 심지어 "이 서버의 설정을 아는 사람 한 명"도 단일 장애점일 수 있습니다.

SLA는 보장이 아니라 보상 약속

클라우드 서비스마다 SLA(서비스 수준 협약)로 월 가동률을 약속합니다. 그런데 SLA는 "반드시 이만큼 돌아간다"는 보장이 아니라, "못 지키면 요금 일부를 크레딧으로 돌려준다"는 약속입니다. 멈춘 시간의 손실을 메워 주지는 않으니, 내 서비스의 가용성은 설계로 만들어야 합니다. 같은 서비스라도 서버 한 대일 때보다 여러 영역에 나눠 둘 때 SLA가 더 높습니다.

시험 단골 계산: 직렬은 곱하기(99.9% × 99.9% ≈ 99.8%), 이중화는 1 − (1 − a)² (99.9% 두 대 → 99.9999%). "가장 비용 효율적으로 가용성을 높이려면" → 가장 약한 단일 장애점부터 이중화합니다.

문제에 이런 표현이 나오면 → 이렇게 고른다

  • “하나가 멈추면 전체가 멈추는 구성 요소”단일 장애점 (SPOF)
  • “99.9% 구성 요소 세 개를 직렬로 연결한 전체 가용성”약 99.7% (곱하기)
  • “같은 서버를 두 대 두면 가용성이”높아진다 — 둘 다 멈춰야 멈춤
  • “SLA를 못 지켰을 때 받는 것”서비스 크레딧 (손실 보상 아님)
  • “99.99% 가용성의 1년 다운타임”약 52분

단일 장애점을 없애려고 서버를 두 대로 늘렸습니다. 그런데 그 두 대가 같은 건물에 있다면 어떨까요?

02

장애의 크기: 서버, 영역, 리전

장애는 크기가 다릅니다. 서버 한 대의 디스크가 고장 나기도 하고, 데이터센터 한 곳이 정전·화재·네트워크 장애로 통째로 멈추기도 하며, 드물게 지역 전체가 자연재해나 대규모 장애로 멈추기도 합니다. 한 번의 장애가 영향을 미치는 범위를 장애 범위(blast radius)라고 합니다.

클라우드는 이 범위를 가용 영역과 리전으로 나눠 보여 줍니다. 리전은 서울·도쿄 같은 지역이고, 그 안에 전원·냉각·네트워크가 서로 독립된 데이터센터 묶음인 가용 영역이 여럿 있습니다. 영역끼리는 동기 복제가 될 만큼 가깝고(지연 몇 밀리초), 한 영역의 재해가 다른 영역에 번지지 않을 만큼은 떨어져 있습니다.

배치
장애
배치
가용 영역 두 곳에 한 대씩
결과
서비스 유지

서버 두 대를 어디에 두느냐에 따라 버티는 장애의 크기가 달라진다

두 대를 서로 다른 가용 영역에 나눠 두었기 때문에, 한 가용 영역이 통째로 멈춰도 다른 쪽이 받습니다. 대부분의 서비스가 목표로 하는 기본 구성입니다.

배치서버 고장영역 장애리전 장애비용·복잡도
한 영역에 여러 대버틴다멈춘다멈춘다낮음
여러 영역에 나눠서버틴다버틴다멈춘다보통 — 대부분의 기본값
여러 리전에 나눠서버틴다버틴다버틴다높음 — 복제 지연·비용

대부분의 운영 서비스는 여러 영역을 기본으로 합니다. 같은 리전 안이라 지연이 작아 DB를 동기 복제할 수 있고, 영역 장애까지 버팁니다. 리전 장애까지 버텨야 하는 경우(법·규제, 매우 큰 서비스)에만 여러 리전으로 넓히고, 그 방법이 7장의 재해 복구 전략입니다.

문제에 이런 표현이 나오면 → 이렇게 고른다

  • “데이터센터 하나가 멈춰도 서비스 유지”여러 가용 영역에 나눠 배치
  • “지역 전체 재해에도 서비스 유지”다른 리전에 사본 (재해 복구)
  • “서버 두 대를 같은 영역에 둔 구성의 약점”영역 장애에 함께 멈춘다
  • “영역 간 동기 복제가 가능한 이유”같은 리전 안이라 지연이 작다
  • “한 번의 장애가 영향을 주는 범위”장애 범위 (blast radius)

어디까지 버틸지 정하려면 먼저 목표가 있어야 합니다. 멈춰도 되는 시간과 잃어도 되는 데이터는 얼마일까요?

광고

03

무엇을 얼마나 지킬지: RTO와 RPO

재해 복구를 설계할 때 가장 먼저 정하는 숫자가 둘 있습니다. RPO(복구 시점 목표)는 "장애가 났을 때 얼마만큼의 데이터를 잃어도 되는가"를 시간으로 적은 것이고, RTO(복구 시간 목표)는 "얼마나 오래 멈춰 있어도 되는가"입니다.

장애 시점을 가운데 두고 보면 쉽습니다. 뒤로 마지막으로 데이터를 지켜 둔 지점(마지막 백업이나 복제)까지가 잃는 데이터, 즉 RPO입니다. 앞으로 서비스를 다시 열 때까지가 멈춘 시간, 즉 RTO입니다. 아래 그림에서 데이터를 지키는 법과 되살리는 법을 바꿔 보세요.

데이터 지키는 법
되살리는 법
RPO
24시간
RTO
8시간

장애 시점을 기준으로 뒤로 RPO, 앞으로 RTO · 시간 눈금은 로그, 숫자는 예시

RPO는 "장애가 났을 때 얼마만큼의 데이터를 잃어도 되는가"를 시간으로 적은 것입니다. 하루에 한 번 백업이면 장애 직전까지 쌓인 최대 24시간치를 잃을 수 있습니다. RTO는 "얼마나 오래 멈춰도 되는가"입니다. 새로 만들고 백업에서 복원는 약 8시간이 걸린다고 가정했습니다. 둘 다 짧을수록 비용이 큽니다.

RPORTO
묻는 것잃어도 되는 데이터는 몇 분·몇 시간치인가멈춰도 되는 시간은 몇 분·몇 시간인가
정하는 것백업 주기, 복제 방식되살리는 방식, 대기 환경의 준비 정도
0에 가까우면실시간(동기) 복제가 필요이미 돌고 있는 대기 환경이 필요

두 목표는 기술이 아니라 사업이 정합니다. 주문 시스템은 1분만 멈춰도 손해가 크고 주문 하나도 잃으면 안 되지만, 사내 리포트 시스템은 하루 멈춰도 괜찮을 수 있습니다. 목표를 짧게 잡을수록 비용이 커지니, 시스템마다 손실과 비용을 따져 정합니다. 복구에 드는 비용이 장애로 잃는 것보다 크다면 그 목표는 너무 높게 잡은 것입니다.

"최대 15분의 데이터 손실을 허용" → RPO 15분. "4시간 안에 서비스 재개" → RTO 4시간. RPO는 "데이터", RTO는 "시간(멈춤)"으로 기억합니다.

문제에 이런 표현이 나오면 → 이렇게 고른다

  • “장애 시 허용 가능한 최대 데이터 손실”RPO (복구 시점 목표)
  • “장애 후 서비스를 재개해야 하는 최대 시간”RTO (복구 시간 목표)
  • “하루 한 번 백업만 하는 시스템의 RPO”최대 24시간
  • “RPO를 0에 가깝게”실시간(동기) 복제
  • “RTO·RPO를 짧게 잡을수록”비용이 커진다

목표를 정했으니 이제 멈추지 않게 만들 차례입니다. 먼저, 요청이 갑자기 몰릴 때 서버가 버티게 하는 법부터 봅니다.

Pro 전용

여기까지 무료로 읽을 수 있어요

나머지 5개 장은 Pro 구독자에게 열려 있어요. 장마다 3D 그림과 "문제에 이런 표현이 나오면" 정리가 이어지고, 마지막 장에서는 직접 풀어 보며 확인합니다.

  1. 04확장과 오토스케일링
  2. 05복제와 DB 장애 조치
  3. 06백업과 복원
  4. 07재해 복구 전략 네 가지
  5. 08복원력 설계와 점검