피드로 돌아가기
The Unit That Crossed a Boundary: Mars Climate Orbiter, 1999
Dev.toDev.to
Infrastructure

단위 미스매치로 인한 1.93억 달러 규모의 우주선 손실 및 인터페이스 설계 교훈

The Unit That Crossed a Boundary: Mars Climate Orbiter, 1999

Vivian Voss2026년 5월 20일10intermediate

Context

Lockheed Martin의 임펄스 계산 소프트웨어와 JPL의 궤도 계산 소프트웨어 간의 데이터 인터페이스 불일치 발생. Interface Specification 상의 Metric 단위 요구사항이 런타임으로 강제되지 않은 설계적 허점이 존재함.

Technical Solution

  • Imperial 단위(pound-force seconds)를 Metric 단위(newton-seconds)로 오인한 데이터 해석 구조 제거
  • 문서 기반의 Specification을 넘어 런타임에 단위를 검증하는 강제적 제약 조건 도입 필요
  • 개별 시스템의 Unit Test를 넘어 시스템 간 데이터 흐름을 검증하는 End-to-End Test 체계 구축
  • 데이터 전송 시 값(Value)과 단위(Unit)를 결합한 명시적 타입 정의로 암묵적 가정 배제
  • 이상 징후 발견 시 공식적인 Anomaly Investigation으로 격상시키는 에스컬레이션 프로세스 정립

Impact

  • 예측 고도 226km 대비 실제 고도 57km 진입으로 인한 기체 소실
  • 1.93억 달러의 제작비 및 총 3.27억 달러 규모의 미션 실패

1. 외부 시스템 연동 시 데이터 타입뿐만 아니라 물리적 단위(Unit)를 명시적으로 정의했는가?

2. 인터페이스 명세서가 단순 문서가 아닌 코드 수준의 Runtime Validation으로 구현되었는가?

3. 격리된 Unit Test 외에 전체 데이터 파이프라인을 검증하는 End-to-End 테스트가 존재하는가?

4. 2진수(GiB)와 10진수(GB) 등 모호한 표준 용어를 명확한 IEC 표준 접두사로 구분하여 사용하고 있는가?

원문 읽기