
1960년대 냉전 시대, 미국과 소련은 우주를 향한 치열한 경쟁을 펼쳤습니다. 이 과정에서 NASA는 금성 탐사를 위해 매리너 1호를 발사했지만, 단 하나의 기호 누락으로 인해 1,850만 달러라는 막대한 손실을 입게 됩니다. 천공카드로 프로그래밍하던 시대, 작은 실수가 어떻게 거대한 재앙으로 이어졌는지, 그리고 이 실패가 어떻게 인류의 달 착륙 성공으로 이어졌는지 살펴보겠습니다.
오버바 하나가 만든 1,850만 달러의 교훈
1962년 7월 22일, 약 5,400여 개의 부품으로 구성된 매리너 1호는 금성 주위를 비행하며 대기 환경에 대한 데이터를 수집할 예정이었습니다. 그러나 발사 직후 아틀라스 로켓의 비행 시스템에 오류가 발생했고, 예상 궤도와 달리 불안정한 궤도로 진입하며 통제 불능 상태에 빠지게 되었습니다. 결국 매리너 1호는 항로와 민가가 있는 육지에 추락하는 참사를 막기 위해 발사된 지 239초 만에 안전 책임자의 자폭 명령에 따라 대서양 위에서 파괴되고 말았습니다.
발사 책임 운영 기관이었던 NASA는 5일에 걸쳐 이 사고에 대한 원인을 분석했는데, 그 결과는 놀랍게도 단 하나의 기호 때문인 것으로 밝혀졌습니다. 발사체에 탑재된 소프트웨어 속 궤도 진입용 수식에 들어가 있어야 할 오버바 하나가 누락되어 있었던 것입니다. 당시 아틀라스 발사체는 관제소 컴퓨터의 명령을 지상 레이더를 통해 하달받으며 안전 궤도에 진입하는 방식을 채택하고 있었는데, 이 명령에는 약간의 지연 시간이 발생하기에 발사체의 소프트웨어가 지연되는 시간 동안 스스로 궤도의 평균값을 계산해 안전 궤도를 유지해야 했습니다.
그러나 평균값을 구하는 수식에 필요한 기호인 오버바가 빠지게 되자 제대로 값을 구하지 못한 매리너 1호가 제멋대로 움직이게 되면서 결국 궤도 진입에 실패한 것입니다. 이 누락된 기호 하나로 인해 NASA는 현재 가치로 무려 2억 달러에 가까운 손실을 입게 되며 세상에서 가장 비싼 기호 값을 지불했다는 세간의 조롱을 받게 되었습니다. 과학이란 것이 정량화하고 기호가 중요하기 때문에 이런 일이 발생한 것입니다. 컴퓨터 프로그래머를 열받게 하기 위해서는 세미콜론(;)을 콜론(:)으로 다 바꿔버리라는 말이 있을 정도로 하나하나의 기호의 의미가 크며, 특히 수학적으로 계산이 들어가고 정교해야 하는 우주선을 만드는 작업일 때에는 더더욱 그렇습니다.
| 항목 | 내용 |
|---|---|
| 발사 날짜 | 1962년 7월 22일 |
| 자폭까지 소요 시간 | 239초 |
| 사고 원인 | 오버바 기호 누락 |
| 손실 비용 | 1,850만 달러 (현재 가치 약 2억 달러) |
| 원인 분석 기간 | 5일 |
천공카드 프로그래밍 시대의 치명적 한계
거대한 프로젝트에서 어째서 기호 하나를 빼먹는 실수를 할 수 있었는지 의문이 들 수 있지만, 키보드를 통해 한 번의 소스 코드를 쉽게 수정할 수 있는 오늘날과 달리 당시의 프로그래머들은 무려 수만 장에 달하는 천공카드를 사용해 데이터를 수 주간에 걸쳐 일일이 기입해야만 했습니다. 개발을 해본 입장에서 천공카드로 프로그래밍을 해서 우주선을 쏘아올렸다는 사실은 정말 대단하게 느껴집니다.
천공카드는 종이에 구멍을 뚫어 정보를 저장하는 방식으로, 그 위치 하나하나가 의미로 전달되어서 커다란 기계가 움직였습니다. 이 지루한 과정에서 오류를 단번에 찾아내기란 결코 쉬운 일이 아니었습니다. 문서 하나도 작성하면 다시 보면 오타가 보이고 다시 보면 실수가 보이는데, 카드로 한 코딩은 오죽했을까 싶습니다. 개발자로서 아예 버그 없이 오류 없이 프로그래밍을 짜야 하고 테스트를 많이 거치지도 못하고 한 번의 실행으로 성공해야 하는 것은 정말 생각만 해도 끔찍하고 무서운 공포입니다.
흥미로운 사실은 저 때 생긴 카드를 덧붙여가며 수정을 해나가는 과정 때문에 오류를 다시 수정하여 올리는 작업을 '패치(patch)'라고 하는 용어가 생겨났다는 것입니다. 얼마나 많은 고생과 꼼꼼함이 필요한 작업이었을까 상상이 됩니다. 비싼 기호 값은 치렀지만 과학자들의 열정과, 정해진 약속으로 큰 기계를 움직이는 힘이 정말 신비롭고 경이롭게 느껴집니다. 그런데 그 많은 코드 중에서 하나만 실수한 것도 신기한 일입니다.
| 천공카드 시대 | 현대 프로그래밍 |
|---|---|
| 수만 장의 카드에 수 주간 기입 | 키보드로 즉시 입력 및 수정 |
| 오류 발견이 극도로 어려움 | 실시간 오류 검출 가능 |
| 한 번의 실행으로 성공해야 함 | 반복적인 테스트 가능 |
| 수정 시 카드 덧붙임 (패치의 유래) | 코드 직접 수정 |
NASA 디버깅 절차 혁신과 아폴로 계획의 성공
매리너 1호의 실패는 NASA에 있어 철저한 디버깅의 중요성과 사소한 오류로 인해 치명적인 문제가 발생하지 않도록 프로그램을 엔지니어링 해야 한다는 쓰라린 교훈을 주었습니다. 냉전 초기인 1950년대 당시 미국은 우주 경쟁에 대해 그렇게 진지하게 생각하지 않았지만, 소련이 세계 최초의 인공위성인 스푸트니크 1호를 성공적으로 쏘아 올리게 되자 이야기는 달라졌습니다. 만약 빨갱이들이 우주로 발사체를 날릴 수 있다면 미국 본토에 핵을 실은 발사체를 날리는 건 거의 식은 죽 먹기였을 테니까 말입니다.
그렇게 두 나라는 지구와 가장 가까운 천체인 달을 향해 수많은 발사체를 날렸고, 더 나아가 태양계의 다른 행성에 누가 먼저 도달할 수 있는지에 대해 경쟁하기 시작했습니다. 이 과정에서 두 나라 모두 사소한 문제가 엄청난 결과를 낳는다는 아주 뼈저린 교훈을 얻게 되었습니다. 매리너 1호 사건 이후 NASA는 새로운 절차들을 구성했고, 이 절차들은 이후 인간을 달로 보내는 아폴로 계획의 결정적인 역할을 하게 되며 그 값을 톡톡히 해내게 되었습니다.
이런 실패를 통해 이를 양분 삼아 성공한 모습 또한 더욱 멋있습니다. 자유 진영인 미국과 공산 진영인 소련 간의 총성 없는 전쟁, 냉전이 시작된 이후 두 나라는 서로 상대방의 코를 납작하게 만들기 위해 다양한 분야에서 경쟁을 펼쳐왔고, 그중에서도 가장 치열했던 것은 저 멀리 우리 머리 위에 있는 우주를 향한 경쟁이었습니다. 매리너 1호의 실패는 단순한 손실이 아니라, 인류가 우주를 정복하기 위해 반드시 거쳐야 했던 값진 경험이었습니다. 천공카드로 코딩하던 시절도 있는데 그 과정을 거쳐서 이제는 AI로도 코딩하는 시대가 온 것이 신기합니다. 어떻게 보면 코딩의 발전도 돌아보는 시간입니다.
매리너 1호 사건은 기술 발전의 역사에서 실패가 얼마나 중요한 역할을 하는지를 보여주는 상징적인 사례입니다. 단 하나의 기호가 2억 달러의 가치를 가질 수 있다는 것, 그리고 그 실패로부터 배운 교훈이 인류 최대의 업적인 달 착륙으로 이어졌다는 것은 과학 기술 발전의 본질을 보여줍니다. 천공카드 시대의 고된 작업과 현대 AI 프로그래밍 시대를 비교해보면, 우리는 얼마나 먼 길을 왔는지 실감하게 됩니다. 하지만 여전히 중요한 것은 사소한 것 하나하나에 대한 꼼꼼함과 실패로부터 배우는 자세입니다.
자주 묻는 질문 (FAQ)
Q. 오버바란 정확히 어떤 기호이며 왜 중요했나요?
A. 오버바는 수학에서 평균값을 나타낼 때 변수 위에 표시하는 가로선 기호입니다. 매리너 1호의 경우 궤도의 평균값을 계산하는 수식에 이 기호가 필요했는데, 누락되자 발사체가 제대로 된 궤도 계산을 하지 못해 통제 불능 상태에 빠졌습니다. 단 하나의 기호지만 전체 시스템의 정상 작동을 좌우하는 핵심 요소였습니다.
Q. 천공카드 프로그래밍은 어떤 방식으로 작동했나요?
A. 천공카드는 종이 카드에 구멍을 뚫어 정보를 저장하는 방식입니다. 각 구멍의 위치가 특정 명령이나 데이터를 의미했으며, 수만 장의 카드를 순서대로 읽어 프로그램을 실행했습니다. 오류가 발견되면 해당 카드를 새로 만들어 덧붙여야 했고, 이 과정에서 '패치'라는 용어가 생겨났습니다. 현대의 키보드 입력 방식과 달리 수 주간의 작업이 필요했습니다.
Q. 매리너 1호 실패가 아폴로 계획에 어떤 영향을 주었나요?
A. 매리너 1호의 실패는 NASA에게 철저한 디버깅과 다중 검증 시스템의 중요성을 일깨워주었습니다. 이후 NASA는 소프트웨어 검증 절차를 대폭 강화했고, 여러 단계의 테스트와 검토 과정을 도입했습니다. 이러한 새로운 절차들은 1969년 아폴로 11호의 성공적인 달 착륙에 결정적인 역할을 했으며, 인류 우주 탐사 역사의 이정표가 되었습니다.
Q. 현대 프로그래밍에서도 이런 단순 오류가 발생할 수 있나요?
A. 네, 현대에도 세미콜론 누락이나 괄호 오류 같은 단순한 실수는 여전히 발생합니다. 다만 현대 개발 환경은 실시간 오류 검출 도구, 자동 완성 기능, 통합 테스트 시스템 등을 갖추고 있어 이런 오류를 빠르게 발견하고 수정할 수 있습니다. 또한 코드 리뷰와 페어 프로그래밍 같은 협업 방식을 통해 인적 오류를 최소화하고 있습니다.
[출처]
몰상식 - 짝대기 하나가 1850만 달러였던 이유: https://www.youtube.com/watch?v=m7_5JGgjccg