Rain Lag

아날로그 장애 대응 기차역 샌드 테이블: 손으로 옮기고 만지는 종이 지형으로 장애를 리허설하기

종이 기반의 저기술 “샌드 테이블”로 시스템을 눈앞에 펼쳐 놓고 장애 대응을 연습하면, 숨겨진 의존성을 드러내고, 조직의 대비 문화를 더 강하게 만들 수 있다.

소개

디지털 시스템은 결국 끈질기게 아날로그적인 방식으로 실패합니다.

알람이 쏟아지고, 사람들이 우르르 모이고, 커뮤니케이션 채널은 막히고, 누군가는 잘못된 팀을 태그합니다. 까맣게 잊고 있던 핵심 의존성이 갑자기 장애 전체를 좌우하는 존재가 되기도 합니다. 이 혼란 대부분은 어떤 대시보드에서도 한눈에 보이지 않습니다.

여기서 등장하는 것이 바로 아날로그 장애 대응 기차역 샌드 테이블입니다.

군대에서 쓰는 샌드 테이블(sand table)과 기차 모형 레이아웃에서 아이디어를 가져온 이 방법은, 종이·포스트잇·실·옮길 수 있는 조각들로 만든 물리적이고 촉감적인 인프라·워크플로우 모형입니다. 이걸 이용해 장애 상황을 슬로 모션으로 리허설합니다. 실제에 가까운 장애를 단계별로 천천히 밟아 가면서, 모두가 한 테이블을 둘러싸고 같이 대응 과정을 연기해 보는 겁니다.

저기술이고, 싸고, 놀라울 만큼 강력합니다.

이 글에서는 장애 대응 샌드 테이블이 무엇인지, 어떻게 작동하는지, 왜 효과적인지, 그리고 당신의 조직에서 어떻게 직접 만들어 활용해볼 수 있는지를 살펴보겠습니다.


아날로그 장애 대응 기차역 샌드 테이블이란 무엇인가?

기차역 관제실을 떠올려 보세요. 선로, 분기기, 기차들이 그려진 큰 패널이 있고, 거기서 운행을 통제하는 모습 말입니다. 이제 그 기차들을 다음과 같은 것들로 바꿔 봅시다.

  • 서비스와 마이크로서비스
  • 데이터베이스와 큐
  • 외부 벤더와 API
  • 사용자 세그먼트와 클라이언트
  • 팀, 역할, 커뮤니케이션 채널

그리고 이 세계 전체를 종이, 인덱스 카드, 테이프, 실, 움직일 수 있는 작은 토큰들로 만들어 보세요.

그게 바로 장애 대응 샌드 테이블입니다. 시스템을 물리적이고 움직일 수 있는 지형으로 표현한 것이죠.

핵심 특징은 다음과 같습니다.

  • 촉감적이고 물리적이다: 사람들이 테이블을 둘러싸 앉거나 서서, 조각을 옮기고, 선을 그리며, 실제로 손가락으로 가리키며 이야기합니다.
  • 저기술이다: 특별한 소프트웨어는 필요 없습니다. 종이와 마커면 충분합니다.
  • 시나리오 기반이다: 인시던트 리스폰스 테이블탑(tabletop) 연습처럼, 장애 시나리오를 플레이하는 데 사용합니다.
  • 협업적이다: 엔지니어, SRE, 지원, 프로덕트, 리더십이 모두 같은 그림을 공유합니다.

연습할 때 각자 대시보드와 다이어그램만 들여다보는 대신, 참가자들은 시스템 안으로 직접 들어갑니다. 구성요소를 옮기고, 실패를 시뮬레이션하고, 어떻게 대응할지 몸으로 연기해 보는 겁니다.


왜 대시보드와 다이어그램만으로는 부족한가?

이미 아키텍처 다이어그램, 런북(runbook), 대시보드가 있을 겁니다. 그런데 왜 굳이 가위와 테이프까지 동원해야 할까요?

기존 도구들은 대체로 이렇습니다.

  • 추상적이다: 다이어그램은 정적이고 자주 오래됩니다. 대시보드는 메트릭은 보여주지만, 관계는 잘 보여주지 못합니다.
  • 개별적이다: 각자 자기 화면만 봅니다. 공유된 이해는 암묵적일 뿐, 명시적으로 드러 나지 않습니다.
  • 시간에 쫓긴다: 실제 인시던트 중에는 시스템이 실제로 어떻게 움직이는지 천천히 들여다볼 여유가 거의 없습니다.

아날로그 샌드 테이블은 디지털 도구가 놓치기 쉬운 부분을 채워 줍니다.

1. 몸으로 느끼는 이해 (Embodied Understanding)

“데이터베이스” 카드 하나를 옮겼는데, 여섯 개 서비스에 실로 연결되어 있는 걸 직접 보면, 의존성 스프로울(sprawl)이 머릿속 개념이 아니라 몸으로 느껴지는 현실이 됩니다.

2. 공유된 멘탈 모델

방 한가운데 딱 하나의 모델만 있습니다. 모두가 말 그대로 “같은 페이지”를 보고 있고, 서로의 가정을 즉석에서 질문하고 수정할 수 있습니다.

3. 성찰을 위한 공간

시나리오를 슬로 모션으로 돌립니다. 언제든 멈추고, 되감고, “여기서 정말로 무슨 일이 일어날까?”를 물어볼 수 있습니다. 페이저 알람이 쏟아지는 상황에서는 거의 불가능한 일입니다.


샌드 테이블은 실제로 어떻게 진행되는가?

샌드 테이블 세션은 일종의 라이브 액션 테이블탑 연습이라고 보면 됩니다.

1단계: 지형 만들기

먼저 다음을 맵핑합니다.

  • 핵심 구성요소: 서비스, 데이터 스토어, 큐, 캐시, 외부 API
  • 사용자 진입 지점: 웹, 모바일, 파트너, 내부 도구
  • 주요 의존성: 네트워크, DNS, 아이덴티티 프로바이더(IdP), 클라우드 리전
  • 팀과 역할: 온콜 SRE, 인시던트 커맨더, 고객 지원, 커뮤니케이션, 프로덕트

구체적인 재료가 잘 먹힙니다.

  • 구성요소와 팀: 인덱스 카드나 포스트잇
  • 연결과 데이터 플로우: 색깔 있는 실이나 테이프
  • 고객이나 요청: 토큰이나 작은 물체들
  • 중요도나 소유권: 색깔을 달리 표시

목표는 완벽한 정밀 모형이 아니라, 유용하면서도 손으로 다룰 수 있는 근사치를 만드는 것입니다.

2단계: 장애 시나리오 선택

구체적이고 현실적인 장애를 하나 만듭니다. 예를 들면:

  • 리전 A의 기본 데이터베이스가 read‑only 모드로 전환된다
  • 서드파티 결제 프로세서가 간헐적으로 타임아웃 난다
  • DNS 오구성으로 API에 접속할 수 없게 된다
  • 내부 인증 서비스(auth service)가 부분적으로 장애가 나서 일부 사용자에게 500을 반환한다

시나리오를 카드에 적고 다음을 정의합니다.

  • 초기 조건: 시간대, 트래픽 부하, 진행 중인 캠페인 등
  • 초기 증상: 알람, 사용자 제보, 대시보드에 보이는 신호
  • 알려진 미지들(Known unknowns): 시작 시점에 애매하거나 모호한 것들

3단계: 단계별로 플레이하기

이제 전체 그룹이 함께 다음을 진행합니다.

  1. 장애 트리거: 고장 난 컴포넌트 카드를 옮기거나 뒤집어 상태 변화를 표시합니다.
  2. 신호 시뮬레이션: 관련 서비스나 대시보드 위치에 “알람” 토큰을 둡니다.
  3. 역할 배정: 인시던트 커맨더, 커뮤니케이션 담당, 1차 대응자, SME(Subject-Matter Expert) 등을 정합니다.
  4. 몇 분짜리 라운드 단위로 대응을 연기합니다.
    • 지금 이 시점에 각 역할이 보는 것은 무엇인가?
    • 누가 누구에게, 어떤 채널(예: Slack, 전화)로 이야기하는가?
    • 어떤 액션을 취하는가? (예: 페일오버, 피처 플래그 조정, 롤백, 대외 커뮤니케이션)

결정 사항은 토큰과 카드를 실제로 옮기며 표현합니다.

  • “고객 요청” 토큰이 데이터베이스까지 도달하지 못하고 멈춘다
  • “메시지” 토큰이 고객 지원에서 인시던트 채널로 이동한다
  • 누군가 문서를 보기로 하면 “런북” 카드가 테이블 위로 올라온다

4단계: 정보 흐름과 조정(코디네이션) 관찰

플레이하면서 다음을 눈여겨봅니다.

  • 정보가 어디에서 모이거나 막히는가?
  • 누가 과부하되는가? (너무 많은 선이 한 역할이나 시스템에 몰릴 때)
  • 어떤 의존성이 사람들을 놀라게 하는가?
  • 팀 간 가정이 어디서 다른가?

이 지점에서 샌드 테이블의 장점이 빛납니다. 특정 구역이 유난히 혼잡해지거나, 토큰이 한참을 이리저리 왔다 갔다 할 때, 그게 곧 눈에 보이는 병목입니다.

5단계: 되돌아보고 개선점 수집

시나리오가 끝나면 명시적으로 디브리핑합니다.

  • 무엇이 잘 작동했는가?
  • 어디에서 속도가 느려지거나 혼란이 있었는가?
  • 어떤 런북이나 대시보드가 없었거나 불명확했는가?
  • 어떤 커뮤니케이션 패턴이 도움이 되었고, 어떤 건 방해가 되었는가?

이걸 구체적인 변경사항으로 연결합니다.

  • 런북을 수정·추가
  • 온콜 로테이션이나 에스컬레이션 경로 조정
  • 알람·대시보드 추가 및 개선
  • 팀 간 인터페이스 정리

시간이 지나며 세션을 반복하다 보면, 기술적인 부분과 사람·프로세스 모두에 대해 점진적 개선 사이클이 만들어집니다.


효과적인 샌드 테이블을 위한 설계: 시스템 사고에서 얻은 교훈

좋은 샌드 테이블은 좋은 시스템 설계 원칙을 반영합니다. 몇 가지 원칙이 특히 도움이 됩니다.

1. 기능뿐 아니라 신뢰성을 모델링하라

“해피 패스” 플로우만 그리지 마세요. 신뢰성 관련 요소를 1급 객체로 취급해야 합니다.

  • 레플리카, 페일오버 경로, 백업을 표현합니다.
  • SLO를 나타냅니다. (특히 중요한 경로에 표시하는 식으로)
  • 운영 도구(Observability 스택, 피처 플래그, CI/CD)도 포함합니다.

이렇게 하면 대화의 중심이 항상 회복탄력성과 안정성에 머물게 됩니다.

2. 인터페이스를 명시적으로 드러내라

모든 경계를 하나의 인터페이스로 취급합니다.

  • 마이크로서비스 간 경계
  • 우리 시스템과 외부 벤더 사이의 경계
  • 팀 간 경계 (SRE ↔ 프로덕트, 지원 ↔ 엔지니어링)

각 인터페이스를 지나가는 것들을 라벨링합니다.

  • 데이터 타입
  • 계약(Contract): SLA/SLO 등
  • 커뮤니케이션 채널: Slack, PagerDuty, 이메일 등

이 과정에서, 애매하거나 허술한 인터페이스가 장애 시점에 어디서 문제를 일으킬지 자연스럽게 드러납니다.

3. 여러 스케일을 동시에 포용하라

추상화 레벨별로 시각적 단서를 줍니다.

  • 상위 레벨: 사용자 여정과 핵심 비즈니스 플로우
  • 중간 레벨: 서비스와 데이터 스토어
  • 하위 레벨: 자주 문제를 일으키는 핵심 컴포넌트(캐시, 메시지 브로커 등)

모든 디테일을 다 넣을 필요는 없습니다. 대신, 고장 모드조정 패턴을 이해할 만큼의 정밀도만 확보하면 됩니다.

4. 크로스펑셔널 참여를 환영하라

인시던트는 언제나 사회기술적(socio-technical)입니다. 다음과 같은 사람들을 끌어들입니다.

  • 엔지니어와 SRE
  • 고객 지원 및 커스터머 석세스
  • 프로덕트와 마케팅 (사용자 영향과 대외 커뮤니케이션)
  • 인시던트 매니저나 리더십(필요하다면)

각 그룹은 시스템의 다른 부분을 봅니다. 샌드 테이블은 이런 다양한 관점을 충돌의 원인이 아니라 핵심 자산으로 바꿔 줍니다.


왜 이런 저기술 방식이 그렇게 잘 먹히는가?

단순함에도(혹은 단순하기 때문에) 아날로그 샌드 테이블은 실제로 큰 가치를 제공합니다.

1. 복잡성과 의존성을 더 잘 시각화

서비스, 큐, 사용자 플로우가 테이블 위에 펼쳐지고, 실이 사방으로 교차하는 모습을 보면 복잡성이 구체적인 현실로 다가옵니다. 사람들은 곧장 다음과 같은 것들을 발견합니다.

  • 숨겨진 단일 장애 지점(SPOF)
  • 과부하된 공용 컴포넌트
  • 핵심 사용자 여정이 지나치게 복잡한 경로를 따라가는 경우

2. 드물지만 위험한 이벤트를 위한 안전한 연습장

심각한 장애는 드물지만, 한 번 터지면 파급력이 큽니다. 실제 고통을 겪지 않고 경험을 쌓기가 어렵습니다. 샌드 테이블은 다음을 연습할 수 있는 안전한 샌드박스를 제공합니다.

  • 인시던트 선언
  • 역할 핸드오프
  • 불확실성 속에서의 의사결정
  • 이해관계자와의 커뮤니케이션

3. 대비와 학습 문화를 강화

정기적인 세션은 장애 대비를 일회성 캠페인이 아니라 습관으로 만듭니다. 팀은 점점 다음과 같이 변합니다.

  • 실패에 대해 더 열린 대화를 나누고,
  • 인시던트 이후 학습(Postmortem/Lessons Learned)을 당연하게 여기고,
  • 안정성과 신뢰성을 특정 팀(SRE)의 일이 아니라 모두의 책임으로 인식합니다.

4. 누구나 접근 가능하고 저렴하다

큰 예산이나 화려한 트레이닝 플랫폼이 필요 없습니다.

기본 도구만 있으면 됩니다.

  • 종이, 인덱스 카드, 포스트잇
  • 마커, 테이프, 실
  • 평평한 탁자 하나

덕분에 스타트업부터 대기업까지, 조직 규모와 상관없이 시도해 볼 수 있습니다.


시작하기: 간단한 레시피

반나절이면 첫 샌드 테이블 세션을 진행할 수 있습니다.

  1. 핵심 사용자 여정 하나를 고른다
    예: “사용자가 로그인해서 구매를 완료한다.”

  2. 그 여정에 필요한 만큼만 시스템을 맵핑한다
    주요 서비스, 데이터 스토어, 외부 의존성을 포함합니다.

  3. 5–10명을 초대한다
    가능하면 크로스펑셔널로 구성하고, 아키텍처를 잘 아는 사람을 최소 한 명 포함합니다.

  4. 집중된 시나리오를 정의한다
    예: “결제 프로바이더가 전체 거래의 30%에서 성능 저하를 보인다.”

  5. 30–45분 정도 시뮬레이션을 진행한다
    중간중간 멈춰서, 실제로는 어떻게 동작할지 서로 확인합니다.

  6. 연습에 쓴 시간만큼 디브리핑에 투자한다
    런북, 알람, 프로세스 변경사항을 구체적으로 적어 둡니다.

그 다음에는 다음 세션 일정을 잡으세요. 세 번, 네 번 반복할수록 샌드 테이블 자체도, 조직의 대응 역량도 함께 정교해집니다.


결론

현대의 인시던트는 결코 기술적인 문제만이 아닙니다. 인프라, 소프트웨어, 사람, 그리고 압박 속의 커뮤니케이션이 교차하는 지점에서 사건이 발생합니다.

아날로그 장애 대응 기차역 샌드 테이블은 그 전체 시스템을 눈으로 보고, 몸으로 리허설할 수 있는 방법을 제공합니다. 아키텍처를 손으로 옮길 수 있는 지형으로 바꾸면, 팀은 다음을 할 수 있게 됩니다.

  • 복잡한 의존성을 시각화하고,
  • 현실감 있는 장애 시나리오를 연습하며,
  • 정보 병목과 조정(코디네이션) 공백을 발견하고,
  • 런북과 사람·프로세스를 모두 점진적으로 개선할 수 있습니다.

필요한 것은 종이, 테이프, 그리고 몇 시간의 집중된 시간뿐입니다.

회복탄력성과 신뢰성을 중요하게 생각한다면, 다음 실제 장애가 터질 때까지 기다리며 시스템과 조직의 진짜 모습을 시험해 보지 마세요. 오늘 바로 샌드 테이블을 만들고, 팀을 모아, 리허설을 시작해 보십시오.

아날로그 장애 대응 기차역 샌드 테이블: 손으로 옮기고 만지는 종이 지형으로 장애를 리허설하기 | Rain Lag