19.9. 소스 코드 통합 및 최적화(Best Practices)

19.9. 소스 코드 통합 및 최적화(Best Practices)

우리는 지금까지 19단원의 거대한 아키텍처 여정을 통해 PX4 uORB 미들웨어의 태초(Declaration)부터 심연(Multi-instance), 그리고 해부(Monitoring & Debugging)에 이르는 모든 로우레벨 스킬 트리를 마스터했다.
여러분은 이제 단 몇 줄의 C++ 코드로 센서 데몬을 런칭시키고, 수십 개의 VFS 파이프라인 교통량(Hz)을 listeneruorb top으로 쥐락펴락하며, 메모리 경합(Data Race)과 CPU 질식(Busy Waiting) 같은 극악의 OS 버그들을 회피해 내는 ’코어 시스템 아키텍트’의 반열에 올라섰다.

하지만 코드가 단순히 ’돌아간다’고 해서 그것이 ’마스터피스(Masterpiece)’가 되는 것은 아니다. 전 세계 수백 명의 천재들이 깃허브(GitHub) 리포지토리에서 피 터지게 리뷰하고 합의해 낸 PX4 펌웨어의 공식 메인 브랜치(Main Branch)에 ನಿಮ್ಮ C++ 모듈을 당당하게 밀어 넣고(Pull Request) 병합(Merge)시키기 위해서는, “작동하는 코드“를 넘어선 **“아름답고 가벼우며 누구와도 충돌하지 않는 무결점의 코드”**로 여러분의 소스를 제련(Refining)해야만 한다.

19단원의 대미를 장식할 이 19.9 통합 최적화 단원에서는, 당신이 방구석에서 짠 투박한 커스텀 코드를 전 세계 항공 우주 산업 표준의 **‘베스트 프랙티스(Best Practices)’**로 승격시키기 위한 3대 마감 공정을 진행한다.

  • 19.9.1 단원: 콧대 높은 PX4 메인테이너(Maintainer)들이 당신의 코드를 열어보기도 전에 CI/CD 봇(Bot)이 걷어차 버리는 비극을 막기 위해, Astyle 기반의 가혹한 PX4 코딩 컨벤션(make format) 검열을 통과하는 규격화 훈련을 실시한다.
  • 19.9.2 단원: 빌드 시간(Compile Time)을 갉아먹고 펌웨어 용량(Flash Memory)을 뚱뚱하게 부풀리는 당신 소스 코드 상단의 쓸데없는 #include 헤더 의존성 거미줄들을 냉혹하게 끊어내어 극단적 경량화(Lightweight) 모듈로 다이어트시키는 설계 기법을 다룬다.
  • 19.9.3 단원: 19단원 전체를 관통했던 copy() 함수의 메모리 복사 오버헤드마저도 아까워하는 0.1%의 하드코어 최적화 광신도들을 위해, 포인터 조작만으로 기가바이트(GB) 급의 비전(Vision) 센서 데이터를 0마이크로초 만에 넘겨버리는 극한의 아키텍처, ‘Zero-copy (제로 카피)’ 발행/구독 모델의 심연을 살짝 들여다보며 대단원의 막을 내릴 것이다.

이 3대 최적화 관문을 통과한 여러분의 코드는 더 이상 랩실의 테스트 스크립트가 아니다. 내일 당장 화성 탐사선 드론(Mars Helicopter)의 마더보드에 이식되어도 한 치의 오차 없이, 가장 효율적으로 빛을 발하는 완벽한 항공 우주 코어 소프트웨어 자산(Asset)으로 영원히 남게 될 것이다.