관리 메뉴

Leo's Garage

[제2회 HMG 개발자 컨퍼런스] ccOS CI/CD Workflow 개발기 (지속적 통합/배포는 왜 중요한가?) 본문

자동차 및 자동차 SW/자동차 SW 개발 일반

[제2회 HMG 개발자 컨퍼런스] ccOS CI/CD Workflow 개발기 (지속적 통합/배포는 왜 중요한가?)

LeoBehindK 2023. 12. 6. 01:01
728x90
반응형

https://youtu.be/dCCW0N0Z1s4

 

이 영상은 현대자동차에서 개발한 ccos cicd(지속적 통합/배포) 워크플로우에 대한 개발기를 소개하는 내용입니다.
현대자동차는 ccos 소프트웨어 개발을 위해 cicd를 중요하게 여기고, 빌드 시스템을 구축하여 효율적인 개발 환경을 제공합니다.
이를 통해 개발자는 더 빠르고 안정적인 소프트웨어 개발을 할 수 있으며, ccos 에뮬레이터를 활용하여 실제 하드웨어 없이도 개발과 테스트를 진행할 수 있습니다.
ccos 소프트웨어의 라이프 사이클에서 변화하는 요구사항에 대응하기 위해 지속적인 대응을 가능하게 하는 개발 프로세스를 추구하고 있습니다.
이를 통해 현대자동차는 더 나은 소프트웨어 개발 체계를 구축하고 있습니다.
 
현대자동차의 ccOS CI/CD 개발 소개

현대자동차에서는 ccOS 소프트웨어 개발을 위한 레퍼런스 플랫폼의 개발 환경과 실행 환경, CI/CD를 구축한 개발기를 소개하고 있어요.

ccOS 레퍼런스 플랫폼의 QEMU 에뮬레이터를 사용해 QA 테스트를 진행하고 있습니다.

ccOS를 개발하기 위해 CI/CD가 왜 중요한지, ccOS 레퍼런스 플랫폼의 빌드 환경에 대한 간략한 설명도 함께 하고 있으며, ccOS CI/CD 작업 흐름도 소개하고 있어요.

또한, 현대자동차는 차량 소프트웨어의 중요성이 커지는 현 시장에서 가장 최적의 상태로 소프트웨어를 구동할 수 있도록 ccOS 개발을 진행하고 있으며, 미래에 ccOS 소프트웨어의 개발 체계를 더욱 발전시키는 방향으로 추진할 예정입니다.

현대자동차에서 사용하는 CI/CD 작업 방법은?

현대자동차 그룹에서 ccOS를 개발함과 동시에 CI/CD 작업 부문을 구축하여, 임베디드 소프트웨어를 체계적으로 관리합니다.

JIRA를 활용하여, Feature 개발 및 버그에 대한 이슈 트래킹을 진행하며, 변경된 소스 코드는 빌드 서비스에서 자동화된 빌드가 수행됩니다.

주기적으로 소프트웨어 통합 빌드를 수행하여, 코드 변경점을 작게 유지하고 자주 통합하며, 정적 분석 기법 등을 통해 ccOS 설계 규칙을 지키기 위해 검증을 수행합니다.

ccOS 공식 빌드는 QEMU 에뮬레이터 이미지로 배포되며, PC에서 실행이 가능하며 개발자는 도커 컨테이너를 생성하여 ccOS 빌드 및 동작을 테스트할 수 있습니다.

ccOS 레퍼런스 플랫폼은 차종간의 Variant를 최소화하는 공용 소스를 지향하며, 주기적으로 개발자의 코드가 통합되어 배포됩니다.

CCRP 구성은 무엇인가?

CCRP는 ccOS의 설계 규칙을 지키며, CI 빌드를 통해 코딩롤과 스타일 가이드를 준수하고 있는지 자동 검증됩니다.

 

ccOS 레퍼런스 플랫폼을 운영하기 위해 자동화된 CI/CD 워크플로우가 필요했습니다.

현대자동차는 above 조건을 만족하는 Yocto 빌드 시스템을 채택하여, 빌드 에이전트에서 분산 빌드 수행할 수 있도록 프리미러 스테이터 캐시를 적용하고, CI 빌드가 도커 컨테이너에서 수행되도록 환경을 구축하였습니다.

ccOS 빌드 환경은 기수로 형상 관리되며, 공식 빌드의 리비전을 빌드하기 위한 설정과 육토 메탈 레이어의 조합에 관한 정보를 형상관리하고 있어서, 배포된 공식 이미지와 동일한 설정으로 개인 PC에서 재현이 가능합니다.

ccOS의 기능과 속성에 따라 비포켓 저장소의 이름을 결정하고 해당 속성에 맞는 레이어의 빌드 스크립트를 배치하여 ccOS 변경을 쉽게 추적할 수 있도록 하였습니다.

ccOS 소프트웨어의 CI/CD 현황에 대해?

CCRP에서는 안정적인 코드 베이스를 유지하기 위해 소프트웨어 워크플로우 안에 CI 빌드를 적용하였어요.

ccOS 소프트웨어 컴포넌트의 수정 과정에서 정적 분석이 CI 환경과 연동되어 코딩룰 문서화를 위한 독시된 주석이 검증되어진다는 것을 설명하고 있어요.

그리고 ccOS 소프트웨어의 빌드 검증을 위해 LG CNS의 도움을 받아 개발된 비포켓 플러그인을 사용하며, 비법킷에서 개인 저장소를 통해 풀 리퀘스트를 Bamboo 빌드 서비스에서 검증할 수 있다는 것도 소개하고 있네요.

CCOS 소프트웨어 개발에서의 자동화된 빌드와 CRCd?

CCOS 소프트웨어 개발에서는 빌드를 자동화하여 정적분석 검증 후 통합빌드 환경에서 자동 검증 후 리포트하여 개발자에게 빠른 피드백을 제공하고, 코드 품질을 관리합니다.

또한, CCOS 개발에는 변경점을 반영할 수 있도록 도커 및 eSDK 이미지를 배포하고, CRCd 적용으로 개발팀의 부담을 줄일 수 있습니다.

도커에서 빌드하여 에뮬레이터에서 POC를 하며, 이를 통해 리포팅된 버그를 빠르게 분석할 수 있습니다.

현대자동차가 소프트웨어 개발 체계를 개선하려는 이유는?

현대자동차에서는 ccos 소프트웨어의 발전을 위해, 정적분석 도구 도입을 포함한 개선 작업을 진행하고 있어요.

이를 통해 보안 위험 요소와 취약점을 검출하고, UNECE 차량 사이버 보안 법규 준수와 보안 코딩 룰 분석 등 다양한 요소를 고려하며 개발하고 있답니다.

또한 현대차에서는 인포테인먼트 개발 센터에서 해당 직무의 채용을 진행하고 있으며, 더 나은 소프트웨어 개발을 위해 노력해 나갈 것이에요.

ccOS 에뮬레이터를 구축한 배경은?

ccOS 에뮬레이터는 QEMU 기반으로 만들어졌어요.

 

PC에서 개발과 UI/UX 기반의 동작 시나리오를 검증할 수 있어요.

 

라즈베리 파이 4를 기반으로 ccOS 플랫폼을 구성했지만, 프레임 드랍 등 성능 문제가 발생해서 개발 시에는 빌드 시스템인 BSP 레이어를 사용할 수 있는 PC를 사용했어요.

현재는 CI/CD 프로세스와 연계하여 ccOS 에뮬레이터용 이미지와 환경을 배포하고 있어요.

 

QEMU 기반의 ccOS 에뮬레이터 환경을 만들기 위해 PC뿐만 아니라 다양한 하드웨어를 지원 가능하도록 욕토 메타 레이어를 구성했어요.

ccOS 에뮬레이터의 기능은 무엇인가?

ccOS 에뮬레이터는 실제 하드웨어에서 동작하는 기능들을 에뮬레이터 환경에서도 최대한 지원해주며, 다양한 네트워크, 오디오, 차량 조작 버튼 등의 기능을 지원해요.

외부 인터넷망 및 차량 기술 망을 사용할 수 있어, CCS 애플리케이션, 웹 애플리케이션 등을 개발할 수 있어요.

또한, 음성인식, 음성 메모 기능, 오디오 재생, 음악과 미디어 등 다양한 기능을 사용할 수 있습니다.

차량 내 조작 버튼은 PC 키보드로 매핑해 사용할 수 있어, 홈셋업, 미디어 등의 조작 버튼과 동일하게 동작합니다.

마지막으로 GPS 시뮬레이션을 지원하여 GPS 기능을 사용하는 앱을 실제 GPS 모듈 없이도 개발하고 테스트할 수 있습니다.

ccOS 에뮬레이터의 특징은?

ccOS 에뮬레이터는 리눅스, 윈도우, 맥OS를 지원하며, 호스트와 게스트 아키텍처는 x86-64과 암 64를 지원해요.

맥 OS가 호스트 OS이고 암 64 아키텍처인 경우 맥 OS를 게스트로 사용할 수 있고, x86-64 아키텍처인 경우 ccOS 플랫폼과 함께 사용 가능해요.

또한, ccOS 에뮬레이터를 위한  욕토 메타 레이어와 ccOS 레이어드 아키텍처의 할을 사용하며, 하위 레이어의 수정 없이 하드웨어 앱스트랙션 레이어를 통해 하드웨어 의존성을 제거하여 재활용 가능해요.

메타 ccOS AV 에뮬레이터의 기능과 장점은 무엇인가?

메타 ccOS AV 에뮬레이터에는 H 샘플 할 점 BB 구현은 없고 인터페이스만 있는 레시피가 있어요.

샘플 할 쉐어드점 BB는 하드웨어나 플랫폼과 관계없이 동작해야 하는 기능을 구현하고, 샘플할 스탑점 BB는 실제 할 기능을 구현할 필요가 없을 때나 지원하지 않을 때 전체 시스템에 동작성을 보장하기 위한 더미 레시피에요.

에뮬레이터를 사용하면 PC에서 개발 결과물을 확인하고 테스트하는 것이 가능해 개발 생산성을 높일 수 있어요.

또한 에뮬레이터를 사용하면 실제 하드웨어가 필요하지 않으며, PC의 고성능을 활용해 에뮬레이션 환경에서도 타겟 하드웨어 뒤쳐지지 않는 성능을 발휘할 수 있어요.

그리고 이러한 에뮬레이터를 사용하면 타겟 하드웨어에서 발생하는 문제점을 빠르게 파악하고 디버깅할 수 있다는 이점이 있어요.

ccOS 에뮬레이터 데모와 진행 예정 기능은?

x86-64 아키텍처를 사용하는 리눅스 OS에서 ccOS 에뮬레이터 데모를 진행했어요.

향후 ccOS 에뮬레이터에서는 외부 차량 제어기와 연결하여 캔, 이더넷 통신 기능을 개발할 예정이며, 제어기 간 연동 시나리오 등도 테스트할 거예요.

또한 pc와 제어기를 연결해 ccOS 에뮬레이터 상에서 제어기 간 연동 시나리오를 테스트할 수 있는 환경을 조성할 예정이에요.

이제 ccOS 에뮬레이터 개발에 대한 발표를 마치도록 하겠습니다.

 
Ccos 빌드할 때 어떤 기능을 사용할 수 있나요?

Ccos를 빌드할 때, 화를 빌드하는 부분이 포함되어있어요.

중간에 빌드를 중지하면 다시 시작할 수도 있어요.

에뮬레이터 기능이 제공되며, 캔 시그널의 데이터 값만으로 관련된 가상 동작을 에뮬레이터가 받아들일 수 있게 할 수 있어요.

뿐만 아니라, 캔 데이터 로그가 있다면 pc에서 캔 입력을 받아와서 데이터를 에뮬레이터로 전달 가능한 기능을 개발 중이에요.

티어원과 티어2 협력업체가 저희 에뮬레이터를 사용해서 어플리케이션을 개발하고 있어요.

 
ccos 밸리데이션 과정이란?

ccos 밸리데이션 과정에서는 빌드 상에 의존성이나 배포와 관련된 규칙을 검증해요.

규칙이 추가될 때마다 업데이트되며, 패키징과 의존성 추적 등 다양한 기능들이 있다.

이를 통해 불필요한 에러를 빠르게 찾아내는 것이 목적이에요.

또한, Atlassian 제품군을 선택한 이유와 USB 찾아오티 관리 여부에 대한 질문도 있지만, 전문적인 지식이 없어 답변하기 어려웠어요.

 
맥에서의 estk 사용 가능 여부는?

현재는 맥에서의 estk 테스트는 진행하지 않았다고 합니다.

빌드 테스트와 estk 관련 테스트는 진행 중이며, 도코 환경에서는 예상대로 사용 가능할 것입니다.

그러나 언제 구성이 가능할지는 아직 정보가 부족하기 때문에 알려줄 수 없으며, 많은 관심을 부탁드립니다.

 
크로스 플랫폼 지원 estk 개발 도중

SDK estk를 모든 하드웨어 타겟에서 테스트와 빌드 할 수 있게 하기 위해서, 컨테이너에서 개발이 가능하도록 지원하고 있어요.

미리 정리된 베이스라인과 패치를 활용한 자동화 검증을 진행 중이며, 하드웨어 타겟에서 빌드와 테스트를 위해 노력하고 있어요.

또한, 개발 중인데 여전히 개선이 필요한 부분이 많다고 생각합니다.

 
코드 복잡성과 CI/CD의 중요성에 대해 얘기합니다.

코드가 오래되거나 새로운 기능이 추가될수록 코드의 복잡성이 증가하는데, 이는 개발 효율성이 떨어지는 문제를 야기해요.

대부분의 회사에서는 코드의 복잡성 대신 CI/CD를 개발 효율화하는 데 더 중점을 둔다면서 관심이 늘어나고 있어요.

728x90
반응형
Comments