동굴 다이빙이 분산 시스템에 대해 가르쳐 준 것

발행: (2026년 4월 24일 AM 01:32 GMT+9)
9 분 소요
원문: Dev.to

Source: Dev.to

(번역할 텍스트를 제공해 주시면 한국어로 번역해 드리겠습니다.)

다이빙을 계획하고, 그 계획대로 다이빙한다

오픈 워터에서는 문제가 생기면 바로 위로 올라갑니다. 수면은 언제나 바로 앞에 있고, 몇 번 발차기만 하면 도달할 수 있는 확실한 탈출구입니다.

하지만 동굴에서는 “위”라는 개념이 없습니다. 당신과 공기 사이에는 수백 미터에 달하는 암석과, 들어온 특정 경로가 있을 수 있습니다. 1시간 동안 침투한 끝에서 문제가 발생한다면, 해결책은 여전히 1시간 동안 되돌아 수영하는 것입니다—당신이 남은 가스와 빛, 그리고 침착함을 가지고 직접 헤쳐 나가야 합니다.

따라서 기술 다이버는 물에 들어가기 모든 것을 계획합니다:

  • 각 단계별 가스량(최악의 경우와 그 이후 최악의 경우를 위한 예비량 포함)
  • 전환 지점
  • 감압 스케줄
  • 장비 고장 및 발생 시 누가 무엇을 할지
  • 팀 위치, 신호, 실종 다이버 절차

머피의 법칙은 농담이 아니라 설계 입력입니다.

규칙: 다이빙을 계획하고, 계획대로 다이빙한다. 물속에서 즉흥적으로 행동하지 않습니다; 육지에서 뇌에 산소가 충분하고 시간 압박이 없을 때 이미 결정한 것을 실행합니다.

소프트웨어도 같은 함정에 빠지기 쉽고, 대부분의 팀이 그 함정에 빠집니다. “프로덕션에서 해결하자”는 “80 m에서 해결하자”와 같은 엔지니어링 변명입니다. 때때로 운이 좋을 수도 있지만, 대부분은 그렇지 않습니다.

중요한 작업—용량 계획, 고장 모드 분석, 런북, 롤백 절차, 온콜 로테이션, 의존성 매핑—은 시스템에 부하가 걸리기 , 사고가 발생하기 , 누구도 스트레스를 받기 에 이루어집니다. 사고는 새로운 생각을 시작하는 시간이 아니라, 이미 생각해 둔 것을 실행하는 시간입니다.

그리고 다이빙과 마찬가지로, 계획이 실패를 없애지는 못합니다. 다만 실패가 발생했을 때 이미 문서화된 대처 방안을 가지고 있다는 점을 보장할 뿐입니다.

실패는 연쇄적으로 발생한다. 첫 번째가 아니라 두 번째 실패를 대비하라.

다이버를 죽이는 것은 보통 첫 번째 문제 자체가 아니라, 첫 번째 문제에 대한 공황 반응이 두 번째 문제를 일으키는 것이며—두 번째 문제는 당신이 준비되지 않은 상황이다.

분산 시스템에서도 마찬가지다. 데이터베이스 속도가 느려지는 것이 시스템을 무너뜨리는 원인이 아니라, 복구 중인 데이터베이스를 수백 개의 서비스 인스턴스가 쏟아지는 재시도 폭풍이 시스템을 무너뜨린다.

훌륭한 다이버는 복합 실패에 대비해 훈련한다:

  • 전등이 꺼지고 그리고 가스가 부족한 상황
  • 라인이 끊기고 그리고 시야가 탁해진 상황

훌륭한 시스템도 복합 실패에 대비하도록 설계된다:

  • circuit breakers
  • exponential backoff with jitter
  • bulkheads
  • graceful degradation

첫 번째 실패가 드물어서가 아니라, 첫 번째에 대한 당신의 대응으로 촉발된 두 번째 실패가 실제 피해가 발생하는 지점이기 때문이다.

전환 압력은 차단기이다

동굴 다이빙을 하기 전에 “전환 압력”(turn pressure)을 계산합니다—그 압력은 목표물에 얼마나 가까이 있든지 간에, 들어가기를 멈추고 나오기 시작하는 탱크 압력입니다. 이는 절대 협상할 수 없는 기준이며, 감에 의존해 진행할 수 없습니다.

차단기 역시 같은 방식으로 작동합니다. 차분하고 명확한 판단을 할 수 있을 때 미리 한계치를 정해 둡니다. 한계치가 작동하면, 시스템은 논쟁할 여지 없이 바로 방향을 바꿉니다.

두 경우 모두 가장 어려운 부분은 동일합니다: 명확히 생각하고 정해 놓은 자신의 한계를, 상황이 그 한계를 뛰어넘고 싶게 만들 때에도 받아들이는 것입니다.

체크리스트는 당신을 구원하기 전까지는 어리석게 보인다

제가 존경하는 모든 동굴 다이버는 사전 잠수 체크리스트를 사용합니다. 그들이 잊어버려서가 아니라, 스트레스 상황에서는 누구나 잊어버리기 때문입니다. 체크리스트는 과거의 차분한 자신이 남겨두어 미래의 스트레스를 받는 자신을 보호하는 것입니다.

런북도 마찬가지입니다. 사고가 발생했을 때 명령을 기억하려고 하는 순간이 아닙니다. 새벽 2시에 배포할 때 롤백 절차를 즉석에서 만들려고 하는 순간이 아닙니다. 조용할 때 적어두세요. 소란스러울 때 읽어보세요.

실제 교훈

두 분야 모두 같은 불편한 진실을 가르칩니다: 대부분의 재난은 행복한 경로만이 유일한 경로라고 가정한 사람들에 의해 미리 설계됩니다.

동굴에서 살아남게 하는 습관은 토요일 새벽 3시에 시스템을 가동하게 하는 습관과 동일합니다:

  • 중복
  • 차분한 한계
  • 복합 실패에 대한 계획
  • 현재 자신의 직감보다 과거 자신의 체크리스트를 신뢰하기

복장은 다르지만, 실패의 물리학은 동일합니다.

분산 시스템이든 동굴 다이빙이든 관심이 있다면, 여러분이 발견한 겹치는 부분을 듣고 싶습니다. 얼마나 많은 분야가 같은 답을 향해 수렴하는지 항상 놀랍습니다.

0 조회
Back to Blog

관련 글

더 보기 »