인류 최초의 달 착륙을 성공시킨 거목의 타계와 '소프트웨어 공학'의 탄생
인류 최초의 달 착륙 임무를 비행 프로그램의 힘으로 성공시키고, 오늘날 첨단 산업의 핵심축인 '소프트웨어 공학(Software Engineering)'이라는 개념을 최초로 정립한 거목 마거릿 해밀턴(Margaret Hamilton)이 향년 90세를 일기로 별세했다. 미국 매사추세츠주 케임브리지의 병원에서 지난 9월 30일 세상을 떠난 그의 타계 소식은 유족과 매사추세츠 공과대학교(MIT)의 발표를 통해 전 세계에 전해졌다. MIT와 미국 항공우주국(NASA)은 성명을 통해 "마거릿 해밀턴은 한 번도 가보지 않은 길을 개척하며 아폴로 계획의 성공을 이끌었을 뿐만 아니라, 현대 컴퓨터 과학 전체의 기초 틀을 다진 위대한 개척자였다"고 깊은 추모의 뜻을 밝혔다.
1960년대 초반만 하더라도 '소프트웨어'라는 단어조차 생소했으며, 컴퓨터 프로그램은 하드웨어 기계를 보조하는 일종의 수동적 부속품이나 단순 타이핑 문서 작업 정도로 치부되곤 했다. 당시는 철저히 남성 중심의 하드웨어 공학이 주류를 이루던 시절이었다. 그러나 인디애나주 출신의 젊은 수학자이자 4살짜리 어린 딸을 키우며 MIT 계측연구소(Instrumentation Laboratory, 현 드레이퍼 연구소)의 소프트웨어 공학 부서를 총괄 지휘하게 된 해밀턴의 생각은 달랐다. 그는 하드웨어가 아무리 뛰어날지라도 이를 지능적으로 통제하는 소프트웨어가 받쳐주지 못하면 복잡한 우주 임무는 불가능하다는 사실을 단번에 파악했다.
해밀턴은 프로그램 개발 역시 전자공학이나 기계공학처럼 엄밀한 과학적 체계와 테스트 철학을 갖추어야 한다고 확신했다. 이에 따라 그는 자신이 이끄는 개발팀의 업무를 설명하기 위해 '소프트웨어 공학'이라는 용어를 새로 만들어 사용하는 대담함을 보였다. 처음에는 전통 엔지니어들로부터 "프로그래밍이 무슨 공학이냐"는 비웃음을 사기도 했으나, 그는 미지의 우주 공간에서 단 한 번의 오류도 허용하지 않는 철저한 프로그래밍 방법론과 모듈화 설계 기법을 도입하며 소프트웨어를 독립적이고 존엄한 학문과 기술의 영역으로 올려놓았다.
아폴로 11호 달 착륙 3분 전의 위기… '1201·1202' 알람과 우선순위 스케줄링의 승리
마거릿 해밀턴이 구축한 비행 소프트웨어의 혁신적인 진가는 1969년 7월 20일, 인류 역사상 가장 위대한 순간 중 하나였던 아폴로 11호의 달 착륙 과정에서 결정적으로 증명되었다. 닐 암스트롱과 버즈 올드린이 탑승한 달 착륙선 '이글(Eagle)'이 달 표면을 향해 표고를 낮추며 하강하던 착륙 3분 전, 고도 약 1,800미터 상공에서 예상치 못한 비상 경보음과 함께 착륙선 컴퓨터 화면에 '1201'과 '1202'라는 모종의 경고 코드가 번쩍였다.
이 경고는 착륙선에 탑재된 아폴로 유도 컴퓨터(AGC)의 중앙처리장치(CPU)에 작업 과부하가 걸려 당장 다운될 위기에 처했음을 알리는 심각한 신호였다. 조사 결과, 랜데부 레이더 스위치가 비정상적인 전력 주파수로 동작하면서 컴퓨터에 무수한 신호를 보냈고, 이로 인해 메인 메모리에 불필요한 계산 데이터가 기하급수적으로 몰려들었던 것이 원인이었다. 컴퓨터가 정지하거나 리셋되면 착륙선은 통제력을 잃고 달 표면에 그대로 추락할 수밖에 없는 절체절명의 순간이었다.
그러나 착륙선은 추락하지 않았다. 해밀턴과 그의 연구팀이 설계한 아폴로 비행 소프트웨어 내부에는 세계 최초의 실시간 비동기식 '우선순위 스케줄링(Priority Scheduling)' 알고리즘이 탑재되어 있었기 때문이다. 이 소프트웨어는 종합병원 응급실에서 환자의 중증도에 따라 치료 순서를 정하듯, 컴퓨터에 과부하가 걸린 비상 상황을 스스로 감지하자마자 상대적으로 중요도가 떨어지는 부가 레이더 데이터 처리 작업을 자동으로 중단시켰다.
그리고 남은 모든 CPU 자원을 착륙에 필수적인 궤도 계산과 추진체 제어, 조종사 화면 표시 작업에 100% 집중시켰다. 지상 관제소의 젊은 엔지니어 잭 가먼과 스티브 베일스 역시 소프트웨어가 필수 작업을 정상 수행하고 있음을 즉시 파악하여 휴스턴에 "착륙 계속(Go)" 신호를 보냈고, 아폴로 11호는 안전하게 달 바다에 착륙할 수 있었다.
딸의 실수에서 탄생한 '결함 허용 시스템'과 예외 처리의 보편화
해밀턴이 인간의 실수와 시스템의 예외 상황까지 미리 통제하는 정교한 결함 허용(Fault-Tolerant) 방화벽 코드를 고안하게 된 계기에는 그의 삶에서 비롯된 유명한 에피소드가 자리 잡고 있다. 주말마다 엄마를 따라 MIT 연구소에 들르던 4살 딸 로렌(Lauren)이 비행 시뮬레이터 키보드를 장난치듯 누르다가, 비행 중간 단계에서 사전 발사 프로그램인 'P01' 코드를 기습 실행하는 바람에 시뮬레이터 시스템 전체가 먹통이 되는 일이 발생했다.
이 사건을 경험한 해밀턴은 훈련받은 우주비행사라 할지라도 극심한 긴장과 피로 속에서는 얼마든지 잘못된 버튼을 누르는 실수를 저지를 수 있다고 직감했다. 그는 우주비행사의 실수를 사전에 차단하고 바로잡을 예외 처리 프로그램을 비행 소프트웨어에 추가해야 한다고 NASA 간부들에게 강력히 건의했다. 그러나 당시 NASA의 고위 관리들은 "우리의 우주비행사들은 완벽하게 훈련받은 엘리트들이므로 절대 그런 허술한 실수를 하지 않는다"며 해밀턴의 건의를 번번이 거절했다.
그러나 해밀턴의 예언은 오래 지나지 않아 현실로 드러났다. 1968년 아폴로 8호 임무 도중, 베테랑 우주비행사 짐 러블(Jim Lovell)이 비행 도중 실수로 P01 프로그램을 실수로 가동하여 컴퓨터 안의 항법 데이터가 전부 날아가는 실제 사고가 터진 것이다. 이 사태로 인해 우주선이 길을 잃을 위기에 처하자, NASA는 해밀턴과 연구팀이 급히 새로 작성한 데이터 복구 프로그램을 우주로 송신하여 가까스로 위기를 넘길 수 있었다.
이 사건 이후 NASA는 해밀턴의 깊은 안목을 전적으로 신뢰하게 되었으며, 소프트웨어 차원에서 인간의 오류를 차단하는 에러 트랩(Error Trap) 방화벽 코드를 공식 표준으로 채택했다. 어떠한 돌발 상황에서도 시스템이 스스로 무너지지 않고 정상 기능을 유지하도록 만드는 해밀턴의 예외 처리 및 결함 허용 설계 철학은, 오늘날 항공기 자동 항법, 원자력 발전소 제어, 의료 기기, 자율주행 자동차에 이르기까지 절대적인 신뢰성이 요구되는 모든 현대 첨단 소프트웨어의 근간이 되었다.
거대한 코드 탑이 남긴 유산과 심우주를 향한 영원한 이정표
마거릿 해밀턴을 떠올릴 때 많은 이들의 기억 속에 각인되어 있는 상징적인 장면은, 1969년 그가 자신의 키만큼 높게 쌓인 아폴로 비행 소프트웨어 소스 코드 출력물 타워 바로 옆에 서서 환하게 웃고 있는 한 장의 흑백 사진이다. 수십만 줄에 달하는 그 막대한 코드는 수기로 작성된 손 글씨와 천공 카드를 거쳐 정교한 종이 출력물로 완성된 것으로, 단 한 줄의 오타나 논리적 오류만으로도 우주비행사의 목숨을 앗아갈 수 있다는 엄중한 중압감 속에서 탄생한 결실이었다.
해밀턴은 생전 인터뷰에서 "당시 우리는 그 누구도 가본 적 없는 완전히 새로운 길을 걸어야 했고, 우리에게 실패란 선택지에 없었다"며 "상부에서는 소프트웨어가 너무나 신비한 블랙박스 같았기 때문에 오히려 우리에게 완벽한 자유와 신뢰를 주었고, 우리는 밤낮을 가리지 않고 완전히 몰입하여 스스로 답을 찾아냈다"고 회고하곤 했다.
이러한 전설적인 공로를 인정받아 그는 2003년 NASA 역사상 단일 개인에게 수여된 가장 큰 포상금과 함께 'NASA 특별 우주 행동상'을 수상했으며, 2016년에는 버락 오바마 미국 대통령으로부터 미국 민간인이 받을 수 있는 최고 영예인 '대통령 자유훈장(Presidential Medal of Freedom)'을 받았다.
남성들의 전유물로 여겨지던 공학의 벽을 깨부수고, 한 줄 한 줄의 코드 속에 인류의 안전과 우주를 향한 꿈을 담아냈던 마거릿 해밀턴. 그가 코인으로 탄생시킨 '소프트웨어 공학'이라는 위대한 유산은, 아폴로의 달 착륙을 넘어 인공지능과 심우주 탐사 시대를 항해하는 인류의 모든 컴퓨터 시스템 속에서 영원히 숨 쉬며 인류의 앞길을 밝혀줄 것이다.
- 김민재 리포터
- minjae.gaspar.kim@gmail.com
- 저작권자 2026-10-19 ⓒ ScienceTimes
관련기사

뉴스레터



