37년 후에도 당신의 코드는 작동할까요?

오늘날 생산되는 전자 시스템 중에 37년 뒤에도 여전히 작동되는 시스템은 얼마나 될까요?

2017년, NASA는 태양계 바깥을 비행하고 있는 무인탐사기 보이저(Voyager) 1호의 궤도수정용 엔진을 37년 만에 분사시키는 데 성공했다고 발표했습니다. 당시 지구에서 130억 마일 이상 떨어져 시속 38,000마일이 넘는 속도로 움직이던 이 우주선의 추진기는 37년의 무활동 끝에 처음으로 다시 가동되었고, 실제로도 여전히 잘 작동한다는 것이 입증되었습니다.

예시: 보이저 1호

과거에서 해결책 찾기

그림 1 - 보이저 프로그램의 미션 로고 [1]

보이저(Voyager) 1호는 NASA에서 가장 빠르고 가장 멀리 있는 우주선으로, 별 사이의 공간인 성간 공간에 최초로 진입하였습니다.

40년 동안 비행해 온 이 우주선은 자세제어용 추력기를 사용하여 미세하게 몸을 틀어 안테나가 지구 방향으로 돌아가도록 합니다. 보통 우주선은 자세 제어를 위해 자세제어용 추력기를 사용합니다. 하지만 NASA는 40년이 지난 후 자세제어용 추력기의 힘이 조금씩 떨어지고 있는 것을 감지했습니다. NASA는 이러한 문제를 해결하기 위해 다른 해결책을 찾았습니다. 자세제어용 추력기 대신 37년간 사용되지 않았던 궤도수정용 엔진을 사용하기로 하였습니다.

레트로 엔지니어링

오래된 프로그램의 재작동

이 기적을 일으키기 위하여 보이저 탐사팀은 몇십 년 전의 오래된 데이터를 발굴하여 구식 어셈블리 언어로 데이터화된 소프트웨어를 검토하였습니다. 코드를 연구한 결과, 백업 엔진을 안전하게 검사할 수 있게 되었습니다.

2017년 11월 28일, 보이저 탐사팀은 4개의 자세제어 추진기를 작동하는데 성공시켰고, 우주선의 방향을 테스트 하였습니다. 그 결과는 19시간 35분만에 지구로 전송되었습니다. 11월 29일 수요일, 많은 축하와 함께 NASA 팀은 추진기가 완벽히 작동하는 것을 확인하였습니다.

NASA 제트 추진 연구소의 보이저 프로젝트 매니저인 수잔 도드는 "보이저 1 호의 수명을 2년에서 3년으로 연장할 수 있을 것"이라고 예측했습니다.[2]

보이저 1호는 매우 잘 작동하였으며, 자세제어 추진기가 저하되면 이번 검사를 보이저 2호에도 적용할 계획입니다.

소프트웨어 신뢰도

우리의 소프트웨어 시스템에서 동일한 수준의 신뢰도를 달성할 수 있을까?

현대의 시스템 구축과 소프트웨어 개발에서는 보이저1호에서와 같은 소프트웨어 신뢰도를 달성하는 것은 어려워졌습니다. 기업의 인프라가 확장됨에 따라 소프트웨어 어플리케이션의 정확도가 더욱 중요해졌습니다. 오늘날 소프트웨어 산업은 다음과 같은 2가지 중요한 과제에 직면해 있습니다.

  • 프로젝트 관리의 효율성 향상
  • 기존의 수많은 측정 및 평가 툴로부터 실행 가능한 지표로 데이터 전환

 

오늘날 다양한 소프트웨어와 시스템 엔지니어링 툴이 널리 사용되고 있지만, 실제 결과를 공유하고 집계하는 경우는 거의 없습니다. 프로젝트 관리자는 다음과 같은 요소를 전체적으로 평가하고 체계적으로 관리하는 데 어려움을 겪고 있습니다.

그림 2 – Magic triangle
  • 기한 준수
  • 제품의 품질
  • 비용 및 자원의 관리

최근 소프트웨어 개발 환경은 보이저 개발 환경과는 거리가 멉니다. 과거에는 초기 개발 및 업데이트가 이루어지는 동안 상당한 양의 소스 코드에 대해 수동 분석이 수행되었습니다. 그러나 최근에는 소프트웨어 분석 및 대시 보드와 같은 툴의 증가로 인해 개발자들은 개발 중인 소스 코드에 대하여 높은 수준의 신뢰도를 가질 수 있게 되었습니다.

예를 들어, VectorCAST/Analytics 또는 Squore와 같은 툴을 살펴보면 소프트웨어 코드의 품질 및 테스팅 완성도를 파악하기 위해 웹 기반의 대시보드를 지원합니다. 사용자는 다음과 같은 기능을 통하여 하나의 코드베이스에서 동향을 파악하거나 여러 코드베이스 사이의 통계를 비교하여 식별 가능하게 합니다.

  • 품질 및 테스트 완성도 지표에 대한 실시간 접근
  • 외부 데이터용 사용자 정의 커넥터
  • 조직의 목표에 맞춰 설정가능한 대시보드

비즈니스 인텔리전스(Business Intellegence, BI)

효율적인 데이터의 사용

그림 3 - 어플리케이션 인텔리전스 워크플로우

보이저 시스템은 사람이 수동으로 분석할 수 있을 정도로 소프트웨어가 간단했습니다. 하지만 현대의 소프트웨어는 복잡해졌습니다. 오늘날 소프트웨어 품질 향상을 원하는 그룹에서 답변하기 가장 어려운 질문은 "어디서부터 테스팅을 시작해야 하는가?"입니다.

VectorCAST/Analytics는 품질 측정을 위한 핵심 메트릭스를 제공하여 이에 대한 답변을 제공합니다. VectorCAST/Analytics툴을 통하여 비즈니스 인텔리전스(Business Intellegence, BI) 프로세스를 소프트웨어 개발에 적용할 수 있습니다. 이것을 애플리케이션 인텔리전스 워크플로우(Application Intelligence Workflow)라고 합니다.

리팩토링

기술 부채(Technical Depts)를 만회하기 위한 접근법

위와 같은 애플리케이션 인텔리전스 워크플로우는 기술적 부채(Technical Depts)를 최소화 하기 위해 기존의 프로그램에 사용될 수 있습니다. 기술 부채(Technical Dept)란 소프트웨어 개발에서 코드 개발 진행을 위해 코드 품질을 향후로 미루고 차차 갚아 나가기 위한 지표입니다.

이 용어는 90년대에 Ward Cunningham에 의해 처음 만들어졌습니다. 현 시점에서 더 오래 소요될 수 있는 솔루션을 사용하는 대신에, 단기간에 구현하기 쉬운 코드를 구현하고 이 때 발생하는 추가 개발 작업을 나중에 반영한다는 개념입니다. 이 개념은 프로젝트를 발전시키는 데 도움이 되지만 기술 부채가 상환되지 않으면 이자가 누적되어 나중에는 코드 변경을 이행하기 어려워질 수 있습니다.

그림 4 - 기술 부채의 관리

즉, 오늘 개발하는 데 100 유닛의 비용이 든다면, 내일은 100 유닛이 넘는 비용이 들 것이고 그 다음 주는 비용이 더욱 비싸질 것입니다. 따라서 높은 기술 부채는 기업의 발전과 경쟁력에 영향을 미칠 수 있습니다.

이러한 기술 부채로 인한 피해를 막기 위해 분석 툴을 통해 기술 부채 지표를 확인하고 우선 순위를 재조정하여 기술 부채를 효율적으로 관리할 수 있습니다.

결론

보이저 프로그램은 NASA의 가장 성공적인 성과 중 하나입니다. 보이저 탐사선은 40년 이상 우주에 있었으며, 앞으로 10년 정도 시스템을 업그레이드 하여 기능할 것으로 보입니다. 보이저 시스템은 탐사선이 노출되고 있는 환경에 맞춰 새로운 기능을 도입하는 소프트웨어 업데이트를 지속할 것입니다. 

보이저 프로그램에 적용된 케이스는 분석 툴을 사용하여 더 자동화되고 효율적인 비용으로 우리의 프로젝트에 적용될 수 있습니다.

--------------------

 

References:

[1] Wikipedia (2019): Mission logo for Voyager Program, [online] https://de.wikipedia.org/wiki/Datei:Voyager_-_mission_logo.png

[2] Jet Propulsion Laboratory, Pasadena, California: Voyager 1 Fires Up Thrusters After 37 Years.  December 01, 2017. https://www.jpl.nasa.gov/news/news.php?feature=7014