아날로그 인시던트 스토리 철도 정원 테이블: 더 안전한 온콜 습관을 키우는 살아있는 종이 풍경
장난감 같지만 진지한 ‘철도 정원 테이블’을 활용해, 온콜·인시던트·신뢰성 개념을 종이 위의 살아있는 모델로 시각화하고 팀이 직접 보고, 만지고, 연습해 본 뒤 실제 시스템을 바꾸는 방법을 소개합니다.
소개
대부분의 온콜(on‑call) 교육은 슬라이드, 대시보드, 그리고 빽빽한 포스트모템 문서 안에만 존재합니다. 그 결과는 뻔합니다. 새로 합류한 엔지니어들은 추상적인 신뢰성 개념을, 새벽 2시에 호출을 받았을 때 마주하는 현실의 복잡함과 잘 연결하지 못합니다.
만약, 인시던트 워크숍을 선로, 분기기, 종이 언덕, 손으로 그린 역들로 가득한 테이블을 둘러싸고 진행할 수 있다면 어떨까요?
**“아날로그 인시던트 스토리 철도 정원 테이블”**은 의도적으로 저기술(low‑tech)이고 상상력은 고수준인, 온콜 습관을 가르치고 다듬기 위한 방식입니다. **살아있는 종이 풍경(living paper landscape)**이라고 생각해 보세요. 미니어처 철도 레이아웃이면서, 인시던트 시뮬레이터이자, 신뢰성 랩입니다.
전자장비도, 예산도 필요 없습니다. 종이, 마커, 테이프, 그리고 기꺼이 놀아보겠다는 마음이면 충분합니다. 이 장난스러운 셋업 아래에는 중요한 목표가 숨어 있습니다. 반복 연습, 명확한 시각화, 그리고 신뢰성 관점에서의 반복 개선을 통해 더 안전한 온콜 습관을 기르는 것입니다.
왜 온콜 교육에 아날로그를 쓰는가?
디지털 도구는 실제 인시던트 상황에서는 매우 유용하지만, 학습 단계에서는 부담스럽게 느껴질 수 있습니다. 아날로그 환경은 몇 가지 독특한 장점을 줍니다.
- 낮은 위험도: 실제 프로덕션을 망가뜨릴 일이 없습니다. 사람들은 더 편하게 실험하고, “초보 같은” 질문도 할 수 있습니다.
- 공유된 시야: 테이블을 둘러싼 모두가 같은 것을 봅니다. 탭 과부하도 없고, “잠깐, 지금 어느 대시보드 보고 있어?” 같은 말도 줄어듭니다.
- 촉각 기반 기억: 실제로 선로를 옮기고, 경로를 바꾸는 동작은 슬라이드를 보는 것보다 개념을 오래 남게 합니다.
- 접근 가능한 복잡도: 복잡한 시스템도 단순한 도형과 기호로 표현할 수 있습니다.
아날로그가 실제 툴을 대체하는 것은 아닙니다. 대신 실제 상황이 왔을 때, 사람들로 하여금 그 툴을 더 자신 있고, 더 생각 깊게 쓰도록 준비시키는 역할을 합니다.
철도 정원 테이블: 손으로 만질 수 있는 메타포
넓은 테이블 하나를 큰 종이로 덮었다고 상상해 봅시다. 그 위에 프로덕션 시스템을 표현하는 작은 철도 세계를 만듭니다.
- **선로(Tracks)**는 서비스와 주요 데이터 흐름에 대응합니다.
- **역(Stations)**은 중요한 사용자 접점이나 비즈니스 기능(결제, 로그인, 검색 등)을 나타냅니다.
- **분기기와 철도 교차점(Switches and junctions)**은 의존성, 로드 밸런서, 라우팅 결정 지점을 상징합니다.
- **터널, 다리, 측선(Tunnels, bridges, sidings)**은 큐, 캐시, 백그라운드 워커에 해당합니다.
- **신호(Signals)**는 알람(alerts)과 SLO(Service Level Objective)를 나타냅니다.
이렇게 하면, 다음을 담고 있는 살아있는 종이 풍경이 생깁니다.
- 토폴로지: 요소들이 어떻게 연결되어 있는지
- 크리티컬 패스: 사용자가 성공하기 위해 반드시 동작해야 하는 경로는 무엇인지
- 실패 지점: 자주 문제가 생기는 곳은 어디인지
모든 것이 종이 위에 있으니, 모델은 시스템만큼이나 쉽게 진화합니다. 새 마이크로서비스를 도입하면? 선로를 하나 더 그립니다. 의존성이 바뀌면? 노선을 다시 그려 연결을 바꿉니다.
온콜 습관을 ‘자라나는 것’으로 바라보기
모형 철도 레이아웃은 사실 완성이라는 게 없습니다. 애호가들은 수년 동안 새로운 선로, 풍경, 신호, 디테일을 계속 추가합니다. **온콜 실천(practice)**도 마찬가지여야 합니다.
다음처럼 생각하는 대신에:
- “그 인시던트는 해결했으니, 끝.”
이렇게 생각해 봅니다.
- “철도의 이 구간을 개선했으니, 어떻게 동작하는지 지켜보다가 또 조정하자.”
이 관점은 전통 공학에서 쓰이는 **신뢰성 성장 모델(reliability growth model)**과도 닮아 있습니다.
- 반복적으로 실패를 관찰한다 (인시던트, 히아리-핫(near miss), 시끄러운 알람 등)
- 거기서 배운다 (어떤 패턴이 반복되는가? 코드뿐 아니라 우리의 습관에서 무엇이 깨졌는가?)
- 시스템과 사람을 함께 조정한다 (툴링, 인력/스케줄, 런북, 교육)
- 반복한다, 그러면서 시간이 지날수록 신뢰성이 서서히 좋아지는 것을 지켜본다
철도 테이블은 이 과정을 눈에 보이게 만들어 줍니다. 몇 달이 지나면 실제로 다음과 같은 변화가 풍경 위에 드러납니다.
- 새 “신호”(알람)를 어디에 추가했는지
- 어디에 복선(double‑tracking)을 깔아(중복성 확보) 두었는지
- 어디에서 복잡한 분기들을 단순화했는지(의존성 감소)
온콜 역량은 더 이상 한 번에 끝나는 체크리스트가 아니라, 풍경처럼 자라나는 것이 됩니다.
선로, 분기기, 신호로 신뢰성을 시각화하기
신뢰성(reliability)과 가용성(availability)은 종종 수식이나 확률 분포로 설명됩니다. 물론 유용하지만, 피곤한 상태에서 호출을 받았을 때 바로 체화하기는 쉽지 않습니다.
아날로그 테이블은 **확률적 수학(stochastic math)**을 **물리적 직관(physical intuition)**으로 번역해 줍니다.
1. 선로: 신뢰성 경로로 보기
하나의 **단일 선로(single track)**만으로 중요한 역에 도달한다면, 그건 전형적인 **단일 장애 지점(SPOF, single point of failure)**입니다.
- 이 선로가 막히면, 어떤 기차(요청)도 지나갈 수 없습니다.
- 테이블에서는 그 구간을 빨간 카드로 덮어 보세요. 사용자는 거기서 멈춥니다.
복선(double‑tracking), 즉 평행한 두 선로는 중복성을 의미합니다.
- 한 선로가 고장 나도 역 자체를 완전히 잃지는 않을 수 있습니다.
- 여기서부터 액티브‑패시브 구성, 멀티 리전, 복제된 서비스 아키텍처와 어떻게 연결되는지 대화를 이어갈 수 있습니다.
2. 분기기: 위험한 인터페이스로 보기
모든 분기기나 교차점은 잠재적인 다음의 후보입니다.
- 설정 오류
- 레이턴시 핫스팟
- 인시던트 증폭 지점 (한 번의 실패가 여러 경로에 영향을 주는 곳)
각 분기기에 작은 스티키 플래그를 붙여, 인시던트가 역사적으로 많이 모였던 곳을 표시해 보세요. 시간이 지나면 팀은 이런 패턴을 눈으로 보게 됩니다. “우리가 제일 고생하는 곳은 인증(auth)과 결제가 만나는 이 교차점이구나.”
3. 신호: 알람과 SLO로 보기
선로 위에 **신호(signal)**를 작은 색 카드로 두세요.
- 초록: 상태 양호, 모니터링 잘 되어 있음
- 노랑: 모니터링은 있지만 시끄럽거나 상태가 불명확함
- 빨강: 모니터링이 부족하거나 자주 뜻밖의 문제가 발생함
이걸 계기로 이런 질문을 던질 수 있습니다.
- “어떤 실패는 우리가 알아차리기 전에 사용자가 먼저 겪고 있는가?”
- “어디에서 사소한 문제에 과도하게 알람을 보내고 있는가?”
이제 여러분은 인프라 지도뿐 아니라 가시성(Observability) 지도도 손에 쥐게 됩니다.
미니어처 철도처럼 테이블탑 익서사이즈 운영하기
풍경이 완성되면, 이를 활용해 반복 가능하면서도 몰입감 있는 테이블탑(tabletop) 인시던트 연습을 설계할 수 있습니다.
1. 노선 계획하기: 타임테이블로서의 런북
장애를 시뮬레이션하기 전에, 몇 가지 핵심 **열차 노선(train routes)**을 정의합니다.
- 노선 A: 비로그인 사용자 → 검색 → 상품 페이지 → 장바구니 담기 → 결제(Checkout)
- 노선 B: 로그인 사용자 → 대시보드 → 리포트 → 내보내기(Export)
이를 종이에 간단한 “타임테이블” 형식으로 적습니다.
- 서비스 X
- 그다음 서비스 Y
- 그다음 Z … 와 같은 식입니다.
이 노선들은 사실상 **위장된 런북(runbook)**입니다. 비즈니스에 중요한 시스템 경로를 명시적으로 드러내 줍니다.
2. 교란 시뮬레이션: 선로 장애 만들기
이제 통제된 혼돈을 도입합니다.
- 선로 구간을 빨간 카드로 덮으며 말합니다. “이 서비스가 다운됐습니다.”
- 신호를 빨강으로 뒤집습니다. “이 SLO가 위반됐습니다.”
- 분기기를 제거합니다. “이 설정 변경 때문에 라우팅이 깨졌습니다.”
온콜 역할을 하는 그룹에게 다음을 요청합니다.
- 어떤 노선(사용자 여정)이 영향을 받는지 찾기
- 누가 페이지를 받아야 하는지 결정하기 (어떤 팀이 어느 구간을 소유하는지)
- 처음 무엇을 확인할지 설명하기 (대시보드, 로그, 메트릭 등)
약간 시간을 재서 압박감을 줄 수도 있지만, 분위기는 처벌이 아닌 성찰적인 학습이 되도록 유지하는 것이 중요합니다.
3. 협조된 대응 연습: 스위칭과 우회
다음으로 조정과 협업 습관에 초점을 맞춥니다.
- 여러 선로가 동시에 망가질 때, 누가 우선순위를 정하고 의사결정을 내리는가?
- “역”(팀) 사이의 정보는 어떻게 공유되는가?
- 언제 **트래픽 우회(reroute)**를 할지, 언제 롤백을 할지, 언제 부분 장애를 선언할지 어떻게 결정하는가?
실제로 선로를 옮기거나, 기차를 다른 경로로 돌려 보세요.
- 임시 완화 방안(Feature Flag, Degradation Mode 등)을 논의합니다.
- 사용자 커뮤니케이션에 대해 이야기해 봅니다. 어떤 “역”에 상태 공지를 해야 할까요?
연습이 끝날 즈음이면, 팀은 기술적 조치뿐 아니라 커뮤니케이션, 책임, 의사결정에 대해서도 몸으로 연습해 보게 됩니다.
공학적 엄밀함과 창의적 모델링의 결합
철도 테이블은 장난감 그 이상이 될 수 있습니다. 여기에 전통적인 공학적 엄밀함을 장착하면서도, 놀면서 배운다는 특성은 그대로 유지할 수 있습니다.
인시던트의 ‘단면도’와 프로파일
테이블 옆에는 인시던트 단면도(cross‑section) 보드를 하나 둡니다.
- 중요한 인시던트마다, 해당 인시던트에 관련된 철도 구간만 따로 그립니다.
- 타임라인, 루트 코즈(root cause), 기여 요인(contributing factor)을 메모합니다.
- 그 후에 풍경에서 어느 선로, 신호, 분기기를 어떻게 조정했는지도 표시합니다.
이는 FMEA(고장 모드 및 영향 분석, Failure Mode and Effects Analysis) 같은 전통 공학 기법을, 더 친근한 시각 형태로 옮겨 놓은 셈입니다.
데이터 기반 신뢰성 분석
아날로그 모델을 실제 데이터와 연결할 수도 있습니다.
- 선로의 색 농도: 과거 실패 빈도
- 선로의 두께: 트래픽 양 또는 비즈니스 임팩트
- 스티커: 해당 구간과 관련된 분기별 인시던트 건수
이렇게 하면, Jupyter 노트북을 열지 않아도 리스크 맵핑과 우선순위 설정을 할 수 있습니다.
분석적 사고를 좋아하는 사람에게는 데이터로 가는 다리를, 시각적 사고를 선호하는 사람에게는 따라가기 쉬운 스토리를 제공하는 셈입니다.
새로운 온콜 관행을 위한 안전한 샌드박스
이 셋업은 위험도와 비용이 낮기 때문에, 실제로 적용하기 전에 온콜 시스템 변경을 실험해 보기 좋은 환경입니다.
예를 들면:
- 새로운 **알람 라우팅 규칙(alert routing rules)**을 테스트합니다. 선로 구간 옆에 각 팀 이름을 적어 두고, 장애 시나리오를 돌려 보세요.
- 새로운 교대(핸드오버) 프로세스를 시도해 봅니다. 연습 도중 교대 시간을 끼워 넣고, 어떤 정보가 전달되지 않고 사라지는지 관찰합니다.
- 새로운 인시던트 커맨더(incident commander) 역할을 프로토타입으로 만들어 봅니다. 누군가에게 다른 사람들이 말해주는 정보를 바탕으로 테이블 위의 기차와 신호를 움직이게 하세요.
이런 실천을 테이블 위에서 먼저 여러 번 다듬어, 모두가 자연스럽게 느껴질 때까지 반복할 수 있습니다. 그다음 실제 툴과 프로세스에 반영하면, 이미 동작 원리와 상호작용을 리허설해 본 상태가 됩니다.
핵심 원칙은 이것입니다. 실패하고 배우되, 프로덕션이 아니라 종이 위에서 하자.
시작하는 방법
처음부터 완벽할 필요는 없습니다. 목표는 **최소 기능 철도(Minimum Viable Railway)**입니다.
- 재료 모으기: 큰 종이, 색 마커, 테이프, 포스트잇, 인덱스 카드
- 단 하나의 핵심 사용자 여정을 맵핑하기: 주요 서비스를 역과 선로로 그립니다.
- 신호와 분기기를 몇 개 추가하기: 핵심 알람과 의존성을 표현합니다.
- 간단한 시나리오 하나 돌리기: “이 서비스가 다운되면—무슨 일이 벌어질까?”
- 리뷰하고 개선하기: 무엇이 헷갈렸는지, 무엇이 인사이트를 줬는지, 맵을 어떻게 바꾸고 싶은지 팀에게 물어봅니다.
시간이 지날수록, 실제 인시던트와 배운 교훈에 맞춰 풍경을 키워 나가세요. 모형 철도 애호가가 새로운 노선과 풍경을 조금씩 추가하듯이 말입니다.
결론
온콜 업무가 힘든 이유는 추상적 확률, 복잡한 시스템, 그리고 인간의 스트레스가 한데 뒤섞여 있기 때문입니다. 철도 정원 테이블—인프라를 종이 위의 살아있는 풍경으로 구현한 모델—은 이런 추상을, 팀이 함께 보고, 만지고, 직접 바꿔볼 수 있는 것으로 전환해 줍니다.
인시던트 대응 습관을 ‘완료해야 할 체크리스트’가 아니라 ‘자라나는 것’으로 보고, 신뢰성 성장 모델에서 아이디어를 빌려 오며, 엄밀한 분석과 창의적인 모델링을 섞어 쓰면, 더 안전하고 몰입도 높은 온콜 역량 성장 경로를 만들 수 있습니다.
완벽한 모델도, 큰 예산도 필요 없습니다. 필요한 건 테이블 하나, 몇 장의 종이, 그리고 눈에 잘 보이지 않던 당신의 시스템을—선로 한 줄씩—보이는 형태로 만들어 보겠다는 의지뿐입니다.