베이스 아카이브

스페이스X는 어떤 언어로 개발한걸까? 본문

IT/지식정보

스페이스X는 어떤 언어로 개발한걸까?

반키 2021. 12. 28. 18:27

안녕하세요!

오늘은 그 유명한 Space X에 대해 얘기해보겠습니다!

 

SpaceX가 무엇인지,

SpaceX는 어떤 프로그래밍 언어를 사용해

개발되었는지 등에 대해 설명드리겠습니다.

 

우선 SpaceX가 무엇일까요?

 

SpaceX란,

테슬라의 최고경영자인 일론 머스크가 화성에 이주한다는 꿈을 내걸고

2002년에 설립한 민간 우주선 개발업체입니다.

미국 군용 및 정찰위성 발사를 책임지고 있는 스페이스 X는

재활용 로켓을 개발하고 있지만,

궁극적으로는 인류의 우주 이민이 목표입니다.

 

이 스페이스 X의 유인 우주선인 '크루 드래곤(Crew Dragon)'은

지난 9월에 역사상 처음으로

전문적인 우주비행사 없이

민간인 4명을 태운 뒤 발사되었고

무사 귀환하는 성과를 냈습니다.


그럼 이제 이 스페이스 X에 사용된

프로그래밍 언어가 무엇이고,

운영체제(OS)는 무엇인지,

그리고 우주에서 에러를 어떻게 핸들링하는지

알아보겠습니다.

 

일단 스페이스X 우주선의 소프트웨어는 어떻게 생겼을까요?

놀랍게도 이 우주선은 리눅스를 바탕으로 돌아갑니다.

 

리눅스는 안정성과 신뢰도를 높이는 운영체제로

많은 인정을 받고 있습니다.

또한 오픈소스이기 때문에 누구나 사용할 수 있습니다.

 

하지만 여기서 핵심은

스페이스 X는 그 어떤 리눅스 배포판도

사용하지 않았다는 겁니다.

 

그럼 리눅스를 어떻게 사용했다는 걸까요?

 

스페이스X는 그들이 직접 배포판을 만들어 사용했습니다.

리눅스 배포판이라는 건

리눅스와 여러 가지 자유 소프트웨어로 이루어진 운영체제를 말합니다.

예를 들면 Ubuntu, Redhat, Debian 등이 있습니다.

 

쉽게 말해

스페이스 X는 이런 배포판을 사용하지 않고

본인들이 직접 만든 자체 배포판을 사용했다는 겁니다.

 

만약 우주선이나 비행기, 열차 등의 

민감한 프로젝트를 수행할 때는

가능한 모든 것을 최적화시키기 위해

최대한 100% 컨트롤이 가능해야 합니다.

 

이런 이유로 스페이스 X는

자체 리눅스 배포판을 사용했습니다.

 

스페이스 X의 우주선에는 수많은 컴퓨터가 있습니다.

딱 한대의 컴퓨터만 있는 게 아니라는 뜻입니다.

한대의 컴퓨터만 있으면

그 컴퓨터를 사용하지 못하는 상황이 됐을 때

감당할 수 없는 큰 문제들이 생기기 때문에

동시에 실행시킬 수 있는 여러 대의 컴퓨터를 설치합니다.

 

동시에 실행되는 컴퓨터들은

동시에 동일한 값을 계산해야 합니다.

 

어떤 결정을 내리기 위해 값을 구할 때

모든 컴퓨터들의 최종 결과값이

모두 동일해야 한다는 뜻입니다.

 

만약 다른 결과값이 나왔다면

Random Bit Flip라는 문제가 생겼음을 짐작할 수 있게 됩니다.

 

이 Random Bit Filp 문제는 방사선,

즉, 태양 방사선에 의해 발생할 수 있는 문제를 말합니다.

 

만약 우주선에 있는 사용자의 컴퓨터가

태양이나 다른 별들에 의해서

방사선에 노출되면

비트 플리핑(bit flipping)이 생길 수 있습니다.

 

비트 플리핑이란

하나의 비트에 대한 값을 

0에서 갑자기 1이 되거나

1에서 갑자기 0이 되는 것을 말합니다.

 

이게 별 거 아닌 것처럼 보이지만 

엄청 중요한 문제입니다.

 

0과 1은 정해진 위치가 있는데

갑자기 0이 1이 되면 모든 결과값이 바뀌게 됩니다.

그래서 여러 대의 컴퓨터를 동시에 작동하게 해서 그 문제를 해결하는 겁니다.

만약 한대의 컴퓨터가 다른 값을 가지게 되면

재시작시켜 문제를 해결한다고 생각하면 됩니다.

 

저도 엄청 민감한 분야라서 잘은 모르지만

처음 이 얘기를 듣고 

태양이나 별에 의해서 컴퓨터의 결과값이 바뀔 수 있다는 점이

굉장히 신기하고 새롭게 다가왔습니다.

무엇보다 코드가 우주에서 실행될 때 일어날 문제에 대해서

해결한다는 점이 굉장히 흥미로웠습니다.


여러분 혹시 스페이스 X가

게임 개발자를 구인하려고 노력한 거 알고 계셨나요?

일론 머스크에 따르면

우주선을 위한 소프트웨어를 만드는 것이

(가끔은) 게임 만드는 것보다 쉽다고 하는데요..ㅎ

 

제가 이 얘기를 왜 꺼냈을까요?

 

이 우주선을 쏘아 올리기 위해 사용된 프로그래밍 언어가

바로 C++ 이기 때문입니다.

C++는 제가 알기로 게임 개발자들이 가장 많이 쓰는 언어 중 하나입니다.

그래서 스페이스 X에서 게임 개발자를 구인하려고 노력했던 것 같습니다.

 

이 C++는 거의 모든 부분에 있어서 제어가 가능하고

다양한 분석 툴을 활용할 수 있습니다.

하지만 C++는 언어를 사용할 때

굉장히 자세하게 작성해줘야 하는 언어입니다.

 

예를 들어

' 나는 이 숫자를 이 메모리에 있는 이 부분에 넣을 거야. '

이런 식으로 구체적으로 코드를 작성해줘야 합니다.

이렇게 자세하고 구체적인 내용을

일일이 컴퓨터에게 설명을 해줘야 하는 것이죠.

 

하지만 C++의 이러한 부분은

빠르게 구동이 가능하고

여러 툴을 활용한 분석을 가능하게 합니다.

 

또한 여러 개의 분석 툴을 이용해 실행시켜보면

분석 툴들이 어디에서 버그가 생길지,

무엇을 고쳐야 할지에 대해서 알려줍니다.

 

이러한 부분은 파이썬 같은 언어들이 가지고 있지 않은 장점이기도 합니다.

파이썬은 그냥 쓰고 잘 되기를 기도하게 되는데

C++는 쓰고, 묘사하고, 분석하고, 작동이 될지 안 될지를 알 수 있는 것입니다.


좀 더 자세하게 설명해보자면,

우주선은 사고가 발생할 경우 인명피해, 손실금액이 막대하기 때문에

에러와 버그 발생을 최소한으로 해야 합니다.

 

파이썬은 매우 훌륭한 언어이지만

인터프리터 프로세스를 거치지 않으면 실행될 수 없다는 치명적인 단점이 있습니다.

 

아무리 개발자가 파이썬 코딩을 완벽하게 했다고 해도

인터프리터 자체에 결함이 있다면 결국 에러가 발생하게 됩니다.

 

파이썬 코드를 안전하게 실행하기 위해

C나 C++로 작성된 인터프리터까지 손봐야 하는 경우가 생긴다면

굳이 파이썬으로 코딩을 할 이유가 없게 되는 거죠.

 

반면 C++은 C만큼 메모리와 가까우면서도

객체지향, 함수형 언어 등 다양한 패러다임을 사용할 수 있어서 생산성 측면에서도

파이썬에 크게 뒤처지지 않아

우주선에서 실행될 소프트웨어로 매우 적절합니다.

 

하지만 이건 어디까지나 우주선 같은 특수분야에 해당되는 이야기입니다.


또한 스페이스 X는

오픈소스 라이브러리를 사용하지 않고

주로 C++의 표준 라이브러리를 사용한다고 합니다.

그리고 나머지는 자체 제작으로 만들어집니다.

 

생각해보면 당연합니다.

우주선을 만들기 위해

다른 사람이 만든 코드를 사용하진 않을 것이기 때문에

당연히 자체 제작을 하는 것이 자연스러운 겁니다.

 

그리고 또 다른 흥미로운 점은

우주선에 달려있는 터치스크린입니다.

이 터치스크린은 HTML, CSS, JS 언어를 사용했다고 하는데

이건 많은 개발자들을 놀라게 했던 부분이기도 합니다..

 

왜냐하면 JavaScript는 불안전한 언어라서

JS를 우주선에 사용할 거라곤 다들 생각하지 못했기 때문입니다.

하지만 다행히도(?)

JS는 오로지 사용자의 편의성을 고려한

UI 제작에만 사용되었다고 합니다.

 

우주선의 핵심적인 기능엔 사용되지 않았다는 거죠.

 

그리고 이 UI를 위한 reactive library를 사용했다고 하는데

이 라이브러리 또한 리액트나 뷰, 앵귤러를 사용하지 않고 

스페이스 X 자체에서 만든 리액티브 라이브러리를 사용했다고 합니다.

이러한 부분이

스페이스 X가 얼마나 완벽함을 추구했는지

보여주는 대목 중 하나라고 생각됩니다.

위에 있는 트윗처럼

일론 머스크는 C++를 정말 끔찍한 언어라고 인정했지만 

결국 이 우주선을 쏘아 올리기 위해 사용된 언어는

C++이라는 거죠..ㅎ

 

저는 이 포스팅을 작성하면서 C++의 중요성에 대해

다시 한번 깨닫게 되었습니다.

 

 

오늘 포스팅은 여기까지입니다!

 

여러분은 이번 포스팅을 보고 어떤 생각이 들었나요?

여러분의 생각을 댓글로 남겨주세요 :)

 

이번 포스팅 읽어주셔서 감사합니다~!


https://base-archive.tistory.com/entry/로블록스개발자가-필요한시대

 

이제는 로블록스 개발자가 필요한 시대

안녕하세요 오늘은 '로블록스'와 '로블록스 개발자'에 대해 알아보겠습니다. 지난 11월 로블록스의 주가가 단 하루 만에 40%나 폭등했습니다. 이는 로블록스가 실적을 발표한 후의 일입니다. 덕분

base-archive.tistory.com

Comments