최근 NASA의 화성 탐사선 ‘퍼서비어런스(Perseverance)‘가 화성에서 고대 미생물 생명체의 잠재적인 흔적을 발견했다는 엄청난 발표가 있었습니다. 35억 년 전에는 따뜻하고 습한 환경이었던 화성에 생명체가 살았을 수 있다는 건 우리의 상상력을 자극하기에 충분합니다.
이런 머나먼 우주로 떠나 탐사를 진행하는 프로젝트에는 천문학적인 예산이 필요하죠. 그러다보니 프로젝트의 개발 주기도 길 수밖에 없습니다. NASA에서 프로젝트 하나를 기획하고 런칭하기까지 과거엔 평균 8~10년이 걸렸다고 하는데요.
이렇게 전통적인 개발 문화가 당연시되는 NASA의 제트추진연구소에도 DevOps 문화가 도입되었다는 사실, 알고계신가요?
오늘날 IT 기업은 DevOps 문화를 적용한 덕에 짧은 주기로 안정적인 배포가 가능해졌습니다. Devopsbay의 통계에 따르면, 설문에 응답한 DevOps 적용 기업 중 90% 이상이 DevOps 도입 이후 배포 시간이 줄었다고 하는데요.
이런 DevOps가 퍼서비어런스 활약 이전에 화성을 탐사하던 큐리오시티(Curiosity) 프로젝트 때부터, 그러니까 약 10년 전 NASA 제트추진연구소(JPL)에 도입되기 시작한 것입니다.
과연 DevOps는 화성의 비밀을 파헤치는 초거대 프로젝트에 어떤 영향을 미쳤을까요?
당시 NASA 제트추진연구소에서 DevOps 문화를 도입한 시스템 엔지니어 Dan Isla의 이야기를 따라가며 자세히 살펴보겠습니다.
NASA JPL에 ‘성간(Interplanetary) DevOps’가 도입된 계기
별과 별 사이의 거리는 고독한 가속도가 한 순간에 부서질 정도로 아득히 넓습니다. 화성에 착륙한 탐사선으로부터 받아야 할 데이터는 너무나 방대했고요.
반면 NASA JPL의 기존 레거시 시스템은 방대한 원격 측정 데이터를 사람이 손수 처리하는 비효율적인 구조였습니다.
화성 탐사선으로부터 하루 약 15,000개의 개별 정보를 받는 상황에서 SQL 데이터베이스의 쿼리와 Excel로 진행하던 데이터 처리 과정, 파워포인트에 의존한 시각화는 너무 느리고 노동집약적이었던 거죠. 탐사선의 데이터를 얻고 분석하는 데에 1~2주나 걸리기도 했다고 하네요.
(출처: https://www.usenix.org/conference/lisa16/technical-sessions/presentation/isla)
이런 느리고 반복적인 시스템을 개선하고, 방대한 원격 측정 데이터를 더욱 효율적으로 분석하기 위해 ‘그린필드 프로젝트(Greenfield Project)‘가 시작되었다고 합니다. 그리고 이것이 NASA JPL에서 DevOps를 도입하게 된 결정적 계기가 됩니다.
그린필드 프로젝트에서는 먼저 AWS의 GovCloud라는 별도의 격리된 클라우드 리전을 사용했습니다. 미국 정부 기관이 충족해야 할 규제 및 규정을 준수하는 클라우드 환경을 먼저 구축한 것입니다.
그리고 기존의 데이터 처리 과정을 개선하기 위해 AWS S3와 AWS SQS, Apache Spark를 활용했습니다.
- 화성 탐사선으로부터 수신된 데이터 파일을 S3에 저장
- S3에 데이터가 도착하면 SQS가 자동으로 작업 큐 생성
- SQS가 생성한 작업 큐를 컨테이너화된 Apache Spark가 처리
이렇게 대규모 데이터를 처리하는 자동화 파이프라인을 구성한 것인데요. 이전에 몇 주에서 며칠이 걸리던 데이터 쿼리와 분석 작업이 단 몇 초만에 가능하게 되었다고 합니다.
거기에 웹 UI 시각화 대시보드를 구축함으로써 처리된 데이터를 언제든 원하는 방식으로 볼 수 있게 되어 시각화 역시 획기적으로 개선되었습니다.
(출처: https://www.usenix.org/conference/lisa16/technical-sessions/presentation/isla)
이런 데이터 시각화 프로토타입은 몇 주 만에 만들어졌고, 짧은 시간에 큰 성공을 거둬낸 그린필드 프로젝트로 인해 NASA JPL에선 빠른주기로 개발하는 작업 문화가 퍼지게 되었습니다.
하지만 새로운 개발 문화는 새로운 요구를 불러왔는데요. 바로, 빠르고 안정적으로 서비스를 배포 가능한 방법이었습니다.
화성 탐사 프로젝트에 도입된 컨테이너 기술과 GitOps
새로운 요구에 부응하기 위해, NASA JPL은 다양한 소프트웨어와 서비스를 컨테이너화하여 배포해보기 시작했습니다.
당시 Mesos(리소스 추상화 기술) 기반의 Marathon이라는 컨테이너 오케스트레이션 플랫폼으로 컨테이너를 배포 및 관리하기 시작한 것인데요.
연구소에서 새로 개발한 Node.js 시각화 애플리케이션이나, Elasticsearch와 같은 데이터 볼륨 마운트가 필요한 애플리케이션 등을 Marathon 플랫폼 위에서 성공적으로 배포했죠.
(출처: https://www.usenix.org/conference/lisa16/technical-sessions/presentation/isla)
컨테이너 배포 환경을 구축하자, 다음 문제는 ‘어떻게 애플리케이션을 빠르게 배포할 것인가’였습니다. 그래서 NASA JPL 개발자들은 GitHub과 슬랙의 챗봇을 연동하여 배포 자동화 시스템을 구축했습니다. CI/CD 파이프라인을 구축하게 된 것인데요.
해당 파이프라인으로 애플리케이션을 배포하는 워크플로우는 아래와 같습니다.
- GitHub 레파지토리에 Dockerfile과 애플리케이션 배포에 필요한 선언적 명세 파일 저장
- Slack 채널의 jarvis 봇에게 ‘앱을 배포해줘(deploy)‘와 같은 명령어를 입력
- 애플리케이션 배포 시작
- 배포가 완료되면 Slack 챗봇이 배포 결과를 메시지로 리포팅
(Dan이 Slack 챗봇으로 애플리케이션을 배포하는 이미지. 출처: https://www.usenix.org/conference/lisa16/technical-sessions/presentation/isla)
이렇게 NASA JPL에는 DevOps 문화를 실현하는 작업 방식, 배포 환경, 자동화 파이프라인이 자연스럽게 도입된 것입니다. 이 모든 게 누군가의 작은 시도에서부터 시작된 것이었죠.
그리고 저는 당시 NASA JPL의 애플리케이션 배포 방식에서 한 가지 흥미로운 점을 발견했는데요.
바로, 이들의 배포 방식이 GitOps의 아래 핵심 원칙들에도 부합한다는 겁니다.
- 단일 진실 공급원
- 선언적 구성
- 지속적 피드백
즉, NASA JPL은 10년 전에 DevOps 문화를 도입하면서 자연스럽게 초기 단계의 GitOps도 실현한 것이죠.
작지만 영향력 있는 그린필드 프로젝트의 성공 덕에, Dan의 표현을 쓰자면 JPL 내의 개발자들은 마치 ‘감염’된 것처럼 빠른 주기로 개발하는 작업 방식을 가지게 되었다고 합니다. 이런 영향이 개발팀과 운영팀 모두에게 영향을 미치면서 DevOps 문화는 더욱 멀리 퍼졌던 것이고요.
NASA는 하드웨어를 바라볼 때 전통적으로 ‘실패는 선택 사항이 아니다(Failure is not an option)‘라는 원칙을 가지고 있었습니다. 한 번 발사된 장비는 우주에서 수리할 수 없기 때문에 실패를 용납할 수 없는 것이죠. 그러다보니 개발 과정도 길 수밖에 없었습니다.
하지만 소프트웨어까지 이런 원칙을 가질 필요는 없었다는 것이 당시 JPL의 엔지니어였던 Dan의 생각이었습니다. 그는 JPL의 혁신을 위해 ‘빨리 실패하고 자주 실패’하자는 원칙을 바탕으로 빠른 학습과 개선을 지향했죠.
‘모든 시스템은 실패할 수 있으며, 중요한 것은 실패했을 때 얼마나 빨리 복구하고 다시 궤도에 오르는가이다’라는 그의 표현은 DevOps 문화의 핵심이라고 할 수 있습니다.
물론, 컨테이너 기술 도입과 같은 새로운 문화와 환경이 처음부터 저항이 없던 것은 아닙니다.
하지만 팀원들이 서로 논의하고 교육을 진행하면서 새로운 문화가 점진적으로 수용된 것이죠.
즉, 실패를 용납하지 않던 우주 산업에서 몇십년간 자리잡혔던 기존 개발 문화도, 작지만 빠른 성공과 팀원들간의 소통으로 점차 변화할 수 있었던 것입니다.
팀을 위해 더 효율적이고 나은 방법을 찾고, 이를 위해 완전히 새로운 도전을 시도했던 Dan Isla의 이야기는 우리에게 많은 영감을 줍니다.
여러분은 이번 이야기를 통해 어떤 것을 느끼셨나요?
그럼 저는 다음에 더 흥미롭고 유익한 아티클로 찾아오겠습니다.
감사합니다.
참고 자료
- https://www.devopsbay.com/blog/dev-ops-statistics-and-adoption-a-comprehensive-analysis-for-2025
- https://www.usenix.org/conference/lisa16/technical-sessions/presentation/isla
✨이번 아티클은 어떠셨나요?
이번 글의 주제에 대해 어떻게 생각하는지 알려주세요! 더 나은 아티클을 전달해드리기 위해 아래 폼에서 짧은 피드백을 받고 있어요.
여러분들의 소중한 의견은 Aiden’s Lab에 큰 힘이 됩니다!