NoWayOS
KO
GitHub
메뉴닫기

2026년 11월 13일

복사본이 아니었던 백업

아폴로 11호는 서로 다른 원리로 만든 유도 시스템 두 개를 싣고 비행했고, 둘 다 필요했습니다. 아리안 5는 똑같은 시스템 두 개를 싣고 비행했고, 폴트 하나가 둘 다 멈췄습니다. 이 차이에는 이름이 있고, NoWayOS는 그 올바른 쪽에 서도록 만들어졌습니다.

백업이 있어야 한다는 것은 누구나 압니다. 하지만 그다음의 불편한 질문을 하는 사람은 많지 않습니다. 정확히 무엇의 백업입니까?

다섯 번의 경보

1969년 7월 20일, 아폴로 11호의 달 착륙선이 달 표면까지 몇 분을 남겨 두었을 때, 유도 컴퓨터가 경보를 울렸습니다. 승무원이 관제 센터에 물어봐야 했던 경보였습니다. 그리고 또 한 번. 하강의 마지막 구간에서 모두 다섯 번이었습니다.

컴퓨터는 과부하 상태였습니다. 그다음에 컴퓨터가 한 일은 이 이야기에서 손꼽히는 공학적 성취입니다. 매번 다시 시작했고, 미룰 수 있는 작업은 버렸으며, 미룰 수 없는 작업은 곧바로 이어받았습니다. 착륙은 계속되었습니다.

여기까지는 누구나 하는 이야기입니다. 그다음에 할 만한 이야기는 이튿날 일어났습니다.

두 번째 시스템

달 착륙선에는 두 번째 유도 시스템이 실려 있었고, 그것은 첫 번째의 예비 복사본이 아니었습니다. 다른 회사가, 다른 원리로 만들었습니다. 주 시스템은 짐벌 위에서 자유롭게 도는 플랫폼으로 자세 기준을 유지했습니다. 두 번째에는 짐벌이 아예 없었습니다. 센서가 우주선에 직접 고정되어 있었고, 어느 쪽이 위인지는 계산으로 알아냈습니다.

그 시스템은 주 시스템이 멈출 경우 승무원을 궤도로 데려가기 위해 있었습니다. 착륙하는 동안에는 쓰이지 않았습니다.

그런데 사령선과 도킹하러 다시 올라가는 길에, 일련의 기동이 주 시스템의 플랫폼을 짐벌 방식 플랫폼이 감당하지 못하는 단 하나의 자세로 몰고 갔고, 주 시스템은 자세 기준을 잃었습니다. 승무원은 우주선을 안정시키기 위해 두 번째 시스템으로 전환했고, 도킹했습니다.

두 번째 시스템은 같은 방식으로 고장 날 수 없었습니다. 그 부품이 없었기 때문입니다.

똑같은 것 두 개

이제 다른 이야기입니다. 1996년, 첫 번째 아리안 5는 자신이 어느 쪽을 향하는지 알려 주는 관성 기준 장치 두 대를 싣고 이륙했습니다. 한 대는 작동 중이었고, 한 대는 대기 중이었습니다. 두 대는 소프트웨어까지 똑같았습니다.

삼십칠 초 뒤, 그 소프트웨어 안의 숫자 하나가 할당된 공간에 담기에는 너무 커졌습니다. 대기 중이던 장치가 멈췄습니다. 같은 비행에서 같은 코드를 실행하던 작동 중인 장치도 멈췄습니다. 조사 위원회의 보고서는 공개되어 있고, 단호하게 말합니다. 전환할 곳이 없었습니다. 백업이 이미 같은 길을 갔기 때문입니다.

복사본 두 개. 폴트 하나. 남은 것은 없었습니다.

엔지니어들이 부르는 이름

시스템과 그 예비를 함께 쓰러뜨리는 폴트를 공통 원인 고장이라고 합니다. 그에 대한 방어가 다양성 다중화입니다. 첫 번째를 멈추는 것이 두 번째에는 들어 있지 않을 만큼 다르게 만든 두 번째 시스템입니다.

우주왕복선이 이렇게 비행했습니다. 비행 컴퓨터 가운데 네 대는 한 회사의 소프트웨어를 실행했고, 다섯 번째는 다른 회사가 따로 작성한 소프트웨어를 실행했습니다. 복사본 네 개는 고장 나는 컴퓨터로부터 지켜 줍니다. 잘못된 프로그램으로부터는 지켜 주지 못합니다. 네 대 모두 그 프로그램을 실행하고 있기 때문입니다.

공짜는 아닙니다. 우주왕복선의 첫 발사는 다섯 번째 컴퓨터와 나머지 네 대가 시각을 맞추지 못해 취소되었습니다. 설계 두 개는 하나보다 일이 많고, 둘을 서로 맞물리게 해야 합니다.

NoWayOS의 자리

오늘날 대부분의 전용 장치는 몇 안 되는 범용 운영체제 가운데 하나를 실행합니다. 그 백업도 마찬가지입니다. 브라우저 엔진이나 데스크톱, 수천만 줄짜리 커널에서 결함이 발견되거나 잘못된 업데이트가 배포되면, 그 소프트웨어가 실행되는 모든 곳에서, 같은 날에 문제가 나타납니다.

NoWayOS 장치는 속이 다릅니다. 커널은 seL4이고, 약 10,000줄입니다. 그 위에 있는 저희 코드는 모두 Rust로 작성했습니다. 브라우저 엔진도, 데스크톱도, 셸도 없으므로, 그 가운데 하나에 있는 결함은 이 장치에 없습니다.

따라서 NoWayOS는 지금 운영하시는 것을 대체하지 않아도 쓸모가 있습니다. 그 옆에 설 수 있습니다. 꼭 필요한 한 가지 일을 하는, 다른 원리로 만든 두 번째 방법으로서입니다.

하지 못하는 것

다양성에는 한계가 있고, 그 한계는 저희가 직접 말씀드리고 싶습니다.

다양성은 NoWayOS 장치에 다른 폴트를 줄 뿐, 폴트가 없게 해 주지는 않습니다. 두 시스템이 공유하는 것에는 아무 효과가 없습니다. 전원, 네트워크, 그 뒤의 서비스, 또는 그 일이 본래 무엇이어야 했는지에 대한 오류입니다. 그리고 NoWayOS의 오픈 소스 구성 요소 가운데 일부는 다른 소프트웨어에서도 쓰입니다. 그래서 모든 이미지는 포함된 구성 요소를 빠짐없이 나열하며, 옆의 시스템과 무엇을 공유하는지 직접 읽어 보실 수 있습니다.

NoWayOS는 개발 중이므로, 이것은 NoWayOS가 맡도록 설계된 역할이지 이미 수행한 역할이 아닙니다. 그 근거는 보안 페이지에 있습니다.

아폴로의 엔지니어들이 두 번째 시스템을 실은 것은 첫 번째가 고장 날 것으로 예상했기 때문이 아닙니다. 고장 나지 않는다는 것을 증명할 수 없었기 때문입니다. 그리고 첫 번째를 멈추는 것이 두 번째 안에서 낯익은 것을 하나도 찾지 못하도록 했습니다.