마거릿 해밀턴이 90세로 별세했다. 그녀는 NASA 아폴로 프로그램 우주선에 탑재된 유도 소프트웨어 개발과 ‘소프트웨어 공학’이라는 용어를 정립한 인물로 알려져 있다. 해밀턴은 1969년부터 1972년 사이 달 착륙 6회에 사용된 소프트웨어를 개발한 팀들을 이끌었으며, 이후 2016년 미국 대통령 자유 훈장을 받았다.
중대한 컴퓨터 부하에 대응한 코드
해밀턴의 가장 중요한 기여는 유도 시스템 소프트웨어에 안전장치를 설계한 것이었다. 이 시스템은 우주선의 컴퓨터가 실시간 처리 능력을 초과하는 명령을 받았을 때 기본 작업과 보조 작업을 구분하도록 설계됐다. 이에 따라 우선순위가 낮은 작업을 취소하고 임무에 필요한 프로세스를 다시 실행하는 한편, 우주비행사에게 경고를 보냈다.
이 설계의 효과는 1969년 아폴로 11호 임무에서 달 착륙선 ‘이글’이 착륙할 때 나타났다. 버즈 올드린이 고도와 기타 데이터를 표시하라는 명령을 입력하자 컴퓨터는 부하 증가로 인해 경고를 내보내기 시작했다. 그러나 안전장치는 착륙에 필요한 작업을 유지했고, 그 덕분에 우주선은 착륙을 취소하는 대신 안전하게 고요의 바다에 도달할 수 있었다.
기상 시뮬레이션에서 아폴로까지
해밀턴은 1958년 얼햄 칼리지를 수학 전공으로 졸업한 뒤 경력을 시작했다. 그녀는 매사추세츠 공과대학교의 수학자 에드워드 로렌츠와 함께 일하며 기상 시뮬레이션에 사용된 LGP-30 컴퓨터를 프로그래밍했다. 이후 1961년 MIT의 SAGE 프로젝트로 옮겨 미국 공군이 잠재적인 적기를 탐색하는 데 도움을 주는 소프트웨어를 작성했다.
SAGE와 아폴로 연구에서 일하는 동안 해밀턴은 소프트웨어의 신뢰성과 오류 방지에 집중했다. 그 사례 중 하나가 훗날 ‘로렌 오류’로 알려진 사건이다. 임무 시뮬레이터에 미리 정해진 발사 시퀀스를 입력하자 시스템이 멈췄다. 해밀턴은 이런 종류의 오류를 방지하는 보호 기능을 추가해 달라고 요청했고, 이후 아폴로 8호 임무에서 실제로 유사한 입력이 이뤄지면서 항법 데이터를 복구해야 했다.
아폴로 프로그램을 넘어선 유산
아폴로 프로그램이 끝난 뒤에도 해밀턴은 오류 방지와 고장 감내를 위한 작업을 계속했다. 그녀는 1976년 Higher Order Software를 설립했으며, 1985년 회사를 떠나 Hamilton Technologies를 설립했다. 이 회사의 주요 제품은 오류 방지와 방어적 프로그래밍을 우선시하면서 복잡한 소프트웨어 시스템을 개발하기 위한 Universal Systems Language였다.
그녀가 개발에 기여한 아폴로 소프트웨어는 2015년 GitHub에 공개됐다. 또한 Google은 2019년 모하비 사막의 태양광 패널 농장에서 10만 개가 넘는 거울로 만든 거대한 이미지로 그녀를 기렸다.
이 소식이 중요한 이유
해밀턴의 유산이 중요한 이유는 그녀의 코드가 역사적 성취의 일부였기 때문만이 아니라, 신뢰성이 장애가 발생한 뒤가 아니라 시스템 설계 단계에서 시작된다는 점을 보여주기 때문이다. 소프트웨어는 컴퓨터의 과부하를 막지는 못했지만, 무엇을 포기하고 무엇을 유지해야 하는지 결정해 위협적인 임무 상황을 체계적인 복구 절차로 바꿨다. 이러한 발상은 작동 환경상 쉽게 실패하거나 재시도할 수 없는 시스템에서 여전히 핵심적이다.