Rain Lag

종이 지도만 있는 인시던트 지하철 노선도: 겹겹이 쌓인 장애 속에서 손에 쥔 경로를 그리는 법

정적인 아키텍처 다이어그램 대신, 지하철처럼 겹겹이 겹친 ‘라이브 노선도’ 관점과 공유된 뷰, 피드백 루프를 활용해 복잡한 마이크로서비스 장애를 탐색하는 방법을 다룹니다.

종이 지도만 있는 인시던트 지하철 노선도: 겹겹이 쌓인 장애 속에서 손에 쥔 경로를 그리는 법

모든 게 불타고 있을 때, 대부분의 팀이 가장 먼저 꺼내 드는 건 사실상 종이로만 존재하는 지하철 노선도입니다. 마지막 업데이트가 몇 분 전이 아니라 석 달 전인, 정적인 아키텍처 다이어그램이죠.

그 사이, 우리가 디버깅하려는 실제 시스템은 출퇴근 시간의 구글 지도에 더 가깝습니다. 끊임없이 변하고, 트래픽으로 막혀 있고, 보이지 않는 우회로와 예고 없는 도로 폐쇄로 가득한 상태죠.

정적인 다이어그램동적인 현실의 괴리가 많은 고통스러운 인시던트의 중심에 있습니다. 인시던트를 배선도 읽기가 아니라 도시를 길 찾아 다니는 것에 가깝게 취급한다면 어떨까요? 실시간으로 경로를 그리고, 경유지를 공유하고, 장애를 피해 우회할 수 있게 도와주는 **라이브, 다층 구조의 ‘인시던트 지하철 노선도’**가 있다면 어떨까요?

이 글에서는 레이어드 뷰, 공유 지도, 피드백 루프, 나아가 위상수학과 매듭 이론에서 차용한 관점까지 활용해, 복잡한 마이크로서비스 아키텍처에서 더 나은 인시던트 대응 도구를 설계하는 방법을 살펴봅니다.


레이어: ‘지형도’와 ‘위성지도’ 사이를 전환하기

현대 시스템은 단 하나의 다이어그램으로 이해하기에는 너무 복잡합니다. 하나의 글로벌 뷰는 결국 둘 중 하나가 되기 쉽습니다.

  • 너무 상위 레벨: Payments라는 박스 하나만 있는 그림 (인시던트 대응 시 전혀 도움 안 됨)
  • 너무 하위 레벨: 마이크로서비스 노드 300개, 엣지 1,200개짜리 그래프 (인시던트 상황에서는 마비 요인)

그래서 레이어와 다중 뷰가 필수입니다.

구글 지도를 떠올려 봅시다.

  • 거리(길) 뷰: 길 안내, 턴바이턴 내비. 로컬 디테일.
  • 지형도 뷰: 고도, 지형. 구조적 맥락.
  • 위성 뷰: 실제 위성 사진. 현실의 원본.

인시던트 대응에도 비슷한 레이어 접근이 필요합니다.

  • 비즈니스 플로우 레이어 – 사용자 여정(예: “체크아웃”, “회원가입”, “환불”)
  • 서비스 토폴로지 레이어 – 서비스, 의존성, 데이터 스토어
  • 런타임 헬스 레이어 – 지연(latency), 에러, 포화도, SLI
  • 변경(Change) 레이어 – 배포, 설정 변경, 피처 플래그

이 레이어들을 빠르게 전환할 수 있어야, 사고 대응자가 인지 부하 없이 질문에 답할 수 있습니다.

  • “사용자 여정의 어디에서 깨지고 있지?” → 비즈니스 플로우
  • “어떤 서비스들이 관여돼 있지?” → 토폴로지
  • “실제로 어디가 열화(degrade)되고 있지?” → 런타임 헬스
  • “뭐가 바뀌었지?” → 변경 레이어

핵심은 모든 것을 하나의 다이어그램에 욱여넣는 게 아니라, 서로 일관되고 연결된 레이어들을 제공하는 것입니다. 마치 같은 도시를 겹쳐 놓은 여러 장의 지도처럼요.


공유 표준 지도: 같은 도시, 같은 랜드마크

심각한 인시던트가 터지면, 여러 팀에서 사람들이 한 통의 화상 회의에 몰려듭니다.

  • SRE
  • 백엔드 / 프론트엔드 엔지니어
  • 데이터베이스 전문가
  • 프로덕트 오너

문제는 각 그룹이 서로 다른 멘탈 모델을 들고 온다는 데 있습니다. 다이어그램도 다르고, 같은 서비스를 부르는 이름도 다르고, “크리티컬 패스”에 대한 인식도 다릅니다. 이는 마치 모두가 제각각 비공식 지도를 들고 구조 작업을 하려는 상황과 같습니다.

여기서 **공유된, 표준화된 시스템 “지도”**가 게임을 바꿉니다.

  • 서비스, 경로, 크리티컬 플로우에 대한 **공식 이름(canonical name)**을 정리하고
  • 게이트웨이, 코어 서비스, 공유 DB 같은 공통 랜드마크를 제공하며
  • 대응자가 경로, 경유지, 현재 위치를 표시하고 공유할 수 있게 합니다.

다음과 같은 인시던트를 상상해봅시다.

  • 이런 경로를 그릴 수 있습니다: Ingress → API Gateway → Auth → Orders → Payments → Billing DB
  • 여기서 웨이포인트(경유지)를 찍습니다: “에러 스파이크 시작 지점: Payments
  • 각 홉마다 라이브 오버레이로 현재 지연, 에러율, 요청량이 보입니다.

이제 모두가 같은 지도 위의 같은 경로를 보고 있습니다. 더 이상 “누가 들고 온 다이어그램이 더 맞냐”를 두고 논쟁할 필요가 없습니다.

이 공유 지도는 다음과 같은 기반이 됩니다.

  • 신규 엔지니어 온보딩 속도 향상
  • 장기 인시던트에서 팀 간 핸드오프를 더 명확하게
  • 공통 프레임 위에 경로·관찰 기록이 쌓이므로 사후 분석(post-incident analysis) 품질 향상

피드백 루프: 지도가 거짓말하는 지점을 잡아내기

아무리 공들여 그려도, 지도는 항상 현실과 어긋나기 마련입니다. 서비스는 추가되고, 경로는 바뀌고, “임시” 해킹은 영구 구조가 되어버립니다.

구글 지도는 이를 자동 피드백 루프로 다룹니다.

  • 크라우드소싱 리포트로 학습합니다. (“도로 폐쇄”, “사고 발생”)
  • 실제 단말기의 GPS 트레이스로 현실을 추론합니다. (실제 속도, 자주 사용되는 우회로)
  • 사용자 행동에 맞춰 지도를 **계속 정렬(alignment)**합니다.

우리 인시던트/시스템 지도에도 비슷한 루프가 필요합니다.

실용적인 방법 몇 가지를 보겠습니다.

  • 트레이스 기반 토폴로지: 설계 문서가 아니라, 실제 요청 트레이스와 로그에서 서비스 의존성 그래프를 구성·업데이트합니다.
  • 런타임 검증(Runtime verification): 실제 호출 경로가 기대와 다를 때 감지합니다. (예: “절대 DB에 직접 붙지 않는다”고 했던 서비스가 어느 날 갑자기 DB와 직접 통신하는 경우)
  • 사용자 리포트 신호화: 고객 티켓, 채팅 리포트, synthetic 체크 등을 지도에 연결합니다. (“X 리전에 있는 사용자들이 Y 플로우를 완료하지 못함”)

이 피드백 루프들은 다음을 가능하게 합니다.

  • **숨은 결합(hidden coupling)**과 섀도우 디펜던시를 드러내고
  • 다이어그램 상에서 잘 보이지 않던 싱글 포인트 오브 페일러를 발견하며
  • 인시던트 지도가 의식적으로 살아 움직이며 진화하게 만들고, “형식상 한 번 만들고 끝”인 문서를 넘어서게 합니다.

변경 내장: 트래픽, 공사, 우회로

좋은 길찾기 도구는 지도를 보여주는 것에 그치지 않습니다. 다음도 함께 보여줍니다.

  • 트래픽: 정체, 느려진 구간
  • 공사: 차선 축소, 차단 구간
  • 우회로: 실시간으로 제안되는 대체 경로

이를 시스템 관점으로 옮기면 다음과 같습니다.

  • 트래픽 = 부하 & 지연: QPS 스파이크, 큐 깊이 증가, 응답 시간 증가
  • 공사 = 변경 사항: 배포, 스키마 마이그레이션, 설정 변경, 피처 플래그 토글
  • 우회로 = 리라우팅: 서킷 브레이커, 폴백 경로, 강등 모드(degraded mode), 페일오버

효과적인 인시던트 내비게이션을 위해, 툴링은 다음을 지원해야 합니다.

  1. “트래픽”에 대한 경고(알림)

    • Orders 서비스의 요청 지연이 기준선 대비 3배 증가했습니다.”
    • Billing 워커 풀의 큐 깊이가 임계값을 초과했습니다.”
  2. “공사”를 맥락과 함께 노출

    • “에러 스파이크 5분 전에 Payments 서비스가 버전 4.2.7로 배포되었습니다.”
    • “리전 us-east에 트래픽 100%를 대상으로 새 피처 플래그가 켜졌습니다.”
  3. 가이드된 “우회로” 지원

    • “새 Pricing 서비스로 트래픽의 20%만 라우팅합니다.”
    • “크리티컬하지 않은 플로우에 한해 Primary DB 대신 Read Replica로 read를 페일오버합니다.”

이 모든 것들이 지도 위에서 보이어야 합니다. 대시보드, 채팅 로그, 위키에 따로따로 흩어져 있으면 안 됩니다. 목표는 대응자가 교통 체증, 진행 중인 공사, 제안된 우회로를 한 화면에서 보고, 그중 가장 안전한 경로를 선택할 수 있게 해주는 것입니다.


이벤트 포털: 인시던트 여정을 위한 중앙 허브

**이벤트 포털(Event portal)**은 지금까지 이야기한 것들이 모두 모이는 장소입니다. 중앙의 인터랙티브 공간으로서 다음을 가능하게 합니다.

  • 마이크로서비스와 데이터 플로우의 토폴로지 시각화
  • 프로듀서/컨슈머 간 이벤트 스트림과 계약(Event contract) 조회
  • **인시던트를 시스템을 가로지르는 여정(journey)**으로 추적

이상적인 설계라면, 인시던트 도중에 다음을 할 수 있습니다.

  • 새로운 인시던트 여정을 시작합니다. 증상(“체크아웃 실패”), 영향받는 리전, 의심되는 엔트리 포인트를 정의합니다.
  • 서비스 그래프를 클릭해가며, 라이브 메트릭과 최근 변경 사항을 확인합니다.
  • 지도에 관찰 내용을 주석으로 남깁니다. 예: “이 시점에 Auth 에러 스파이크와 시간 상관관계 있음”.
  • 특정 노드·엣지에 가설과 실험(실행한 조치)을 연결합니다.

시간이 지나면서 이 포털은 실시간 도구를 넘어, 과거 여정들의 기억 저장소가 됩니다.

  • “최근 Orders 관련 인시던트 3건에서, 실제 병목은 항상 Inventory였다.”
  • “이 경로는 지연 회귀(latency regression)에 자주 연루된다. 근본 설계 개선이 필요할 수 있다.”

느슨하게 연결된 런북과 대시보드 더미 대신, **스트레스 상황에서 시스템이 실제로 어떻게 동작하는지를 그려낸 살아 있는 지도(atlas)**를 갖게 되는 셈입니다.


위상수학, 매듭 이론, 그리고 숨은 구조를 보는 법

복잡한 시스템은 종종 얽힌 실타래처럼 느껴집니다. 꼬여 있고, 불투명하며, 이성적으로 분석하기 어려운 덩어리죠. 수학에서는 이런 것들을 오래전부터 연구해 왔고, 그 중 하나가 바로 **위상수학(topology)**과 **매듭 이론(knot theory)**입니다.

인시던트 대응을 위해 정교한 정리(theorem)를 들이댈 필요까지는 없지만, 몇 가지 개념은 꽤 유용합니다.

  • 연결 성분(connected components): 시스템의 어느 부분이 진짜로 격리되어 있고, 어느 부분은 항상 함께 움직여야 하는가?
  • 절점(cut point, articulation point): 제거하면 그래프가 분리되는 노드 — 전형적인 싱글 포인트 오브 페일러.
  • 교차와 브레이드(crossings, braids): 여러 플로우가 소수의 공유 서비스를 통해 서로 엮여 지나갈 때, 미묘한 경합(contention)이나 락스텝(lockstep) 장애 패턴이 드러납니다.

아키텍처를 그냥 박스와 화살표가 뒤엉킨 그림이 아니라, 의미 있는 구조를 가진 그래프로 바라보면 다음이 가능해집니다.

  • 병목 지점(choke point) 찾기: 매개 중심성(betweenness centrality)이 높은 노드
  • 작은 변화가 광범위한 영향을 미치는 취약 서브그래프 식별
  • 재시도나 피드백 루프를 가둬버리는 예상치 못한 사이클 발견

좋은 인시던트 지도와 포털은 이러한 구조를 시각적으로 분명하게 드러내야 합니다. 굳이 이를 ‘위상수학’이라고 부르지 않아도 되지만, **위상적 사고방식(topological thinking)**에서 얻는 이점은 큽니다.


결론: 종이 지도만 들고 가는 시대는 끝났다

정적인 아키텍처 다이어그램은 액자에 넣어 벽에 걸어두는 지하철 노선도와 같습니다. 보기에는 그럴듯하지만, 지금 타고 있는 열차가 갑자기 역과 역 사이에서 멈춰버렸을 때는 아무 쓸모가 없습니다.

오늘날의 복잡한 마이크로서비스 기반 시스템에서 인시던트를 제대로 탐색하려면 다음이 필요합니다.

  • 상위 플로우와 하위 디테일 사이를 전환할 수 있는 레이어드 뷰
  • 크로스 펑셔널 팀이 같은 랜드마크를 보며 협업할 수 있는 공유 표준 지도
  • 지도를 현실과 계속 정렬시키는 자동 피드백 루프
  • 트래픽, 공사, 우회로를 함께 드러내는 변경 인지(change awareness) 내장
  • 인시던트 여정을 위한 동적인 허브 역할을 하는 이벤트 포털
  • 숨은 구조와 취약성을 드러내는 위상 기반 시각화

이것들이 결합되면, 인시던트 대응은 더 이상 어둠 속에서 더듬는 일이 아니라, 손 안의 라이브·지능형 지도를 들고 익숙한 도시를 탐색하는 경험에 가까워집니다.

이제 종이 지도만 있는 인시던트 지하철 노선도를 은퇴시키고, 당신의 시스템이 오래전부터 필요로 해왔던 라이브, 다층 구조의 노선도를 만들 때입니다.

종이 지도만 있는 인시던트 지하철 노선도: 겹겹이 쌓인 장애 속에서 손에 쥔 경로를 그리는 법 | Rain Lag