|
SDV(Software-defined Vehicle)는 소프트웨어로 하드웨어를 제어하고 관리하는 자동차를 뜻합니다. SDV를 실현하기 위해서는 단순히 방대한 소프트웨어를 사용하는 것을 넘어 차량의 기능을 동적으로 추가하고 수정하며, 제거할 수 있는 서비스 지향성이 고려되어야 합니다. 이러한 변화에 발맞춰 전장 소프트웨어 개발 환경에도 변화가 필요하게 됩니다. 본 포스팅에서는 SDV로 나아가기 위한 소프트웨어의 개발 및 테스트 환경 구축을 위해 연구개발 중인 클라우드 네이티브 플랫폼에 대해 소개하겠습니다. |
들어가며
안녕하세요. 전장사업팀 ICX Platform Lab의 김한솔입니다.
SDV(Software-defined Vehicle)는 소프트웨어로 하드웨어를 제어하고 관리하는 자동차를 뜻합니다. SDV를 실현하기 위해서는 단순히 방대한 소프트웨어를 사용하는 것을 넘어 차량의 기능을 동적으로 추가하고 수정하며, 제거할 수 있는 서비스 지향성이 고려되어야 합니다. 이러한 변화에 발맞춰 전장 소프트웨어 개발 환경에도 변화가 필요하게 됩니다. 본 포스팅에서는 SDV로 나아가기 위한 소프트웨어의 개발 및 테스트 환경 구축을 위해 연구개발 중인 클라우드 네이티브 플랫폼에 대해 소개하겠습니다.
최근 자동차는 단순한 이동 수단을 넘어, 다양한 IT 기술을 탑재한 스마트카로 발전하고 있습니다. 그래서 요즘 자동차를 굴러다니는 컴퓨터나 바퀴 달린 스마트폰이라고 부르기도 하죠. 이 중심에는 소프트웨어로 정의되는 소프트웨어가 중심이 되는 자동차라는 의미의 Software-Defined Vehicle(이하 SDV)이라는 기술 트렌드가 자리 잡고 있습니다.
이 SDV를 실현하기 위해서는 가상화 및 추상화 솔루션을 통한 하드웨어의 의존성을 제거하는 것이 중요합니다. 이를 통해 소프트웨어 업그레이드가 수월해지고, 자동차의 다양한 기능을 변경하는 것이 가능해집니다. 예를 들어 지금은 자동차를 구매할 때 옵션을 한 번 정하고 나면 출고 이후에는 이 옵션을 변경하기가 매우 어렵습니다. 자동차 산업에서 SDV가 보편적으로 이루어지고 나면 구매 이후에도 차량의 옵션을 변경하는 일이 쉽게 가능해집니다.
그림 1
자동차 산업에서 소프트웨어 개발 환경의 특성
전통적으로 차량의 아키텍처는 하나의 게이트웨이를 중심으로 약 100여 개의 ECU가 차량 네트워크로 연결된 분산형 구조를 갖고 있습니다. 이 차량 네트워크에 사용되는 전기 배선만 해도 차종에 따라 조금씩은 다르겠지만, 일반적으로 그 길이를 모두 합치면 4,000m가 넘고 무게는 100kg이 넘습니다. 그리고 차량 내에 존재하는 각 ECU 단위의 테스트를 위해서는 주변 ECU뿐만 아니라 물리적으로 연결된 주변 입출력 장치도 필요하게 됩니다.
요즘 차량 아키텍처는 전통적인 분산형 구조에서 중앙 집중형 구조로 전환되고 있습니다. 이는 중앙에 강력한 컴퓨팅 파워를 가진 프로세서가 모든 연산 처리를 수행하는 구조입니다. 소프트웨어의 기능이 중앙에 집중됨에 따라 하드웨어와 소프트웨어가 점차 디커플링되고 소프트웨어 업데이트 또한 용이해집니다.
그리고 이 중앙 집중형 구조로의 변화는 소프트웨어 개발 프로세스에도 영향을 주게 됩니다. 기존에는 하드웨어 개발 선행 이후에야 소프트웨어 개발이 가능했던 반면, 이제는 하드웨어와 소프트웨어가 점차 동시 개발 가능하게 되어 전체적인 개발 기간을 단축시킬 수 있게 됩니다.
소프트웨어 개발자에게 자동차 소프트웨어 개발의 어려움은?
자동차 개발 환경에서 소프트웨어 개발자들이 겪는 어려움을 먼저 간략하게 세 가지로 생각해 보았습니다.
- 첫 번째는 초기 소프트웨어 개발 환경 구성이 어렵다는 것입니다. 우스갯소리로 ‘개발의 반은 개발 환경 세팅’이라는 말이 있듯이 개발 환경 구성에 대한 문제는 언제나 개발자를 괴롭힙니다. 특히 자동차 소프트웨어를 개발하기 위해서는 수많은 소프트웨어 디펜던시의 산을 넘어야 합니다.
- 두 번째로는 하드웨어를 구성하기가 쉽지 않아 소프트웨어 개발자별로 하드웨어 기반 개발 및 테스트하기가 어렵다는 것입니다.
- 마지막으로 이러한 어려움을 해결하기 위해 에뮬레이터를 사용하더라도 에뮬레이터로 개발된 소프트웨어가 실제 하드웨어 상에서는 다르게 동작할 수 있기 때문에 결국 하드웨어에서 테스트를 거치게 됩니다.
문제를 해결하기 위해 클라우드 네이티브로 접근
앞서 설명 드린 소프트웨어 개발의 어려움에 대해서 고민하면서 ‘클라우드 기반 개발 환경’을 구축하여 문제를 해결해 나가고 있는데요. 우선 클라우드 기반 개발 환경을 제공함으로써 개발자들이 로컬 PC에서 개별적으로 개발 환경을 구축하지 않더라도 언제 어디서나 웹 브라우저를 통해 개발을 시작할 수 있도록 도와줍니다. 또한 클라우드 기반 테스트 환경을 제공하여 하드웨어가 없더라도 에뮬레이터 기반 가상 타겟을 통해 검증할 수 있습니다. 그리고 time critical한 애플리케이션이나 성능 측정을 위해 꼭 하드웨어가 필요한 경우에는 원격지의 하드웨어를 대여받고, 이와 연결된 웹 서비스에 접속하여 사용할 수 있습니다. 그리고 클라우드 네이티브 플랫폼은 하드웨어와 동일한 ARM 기반 CPU 아키텍처를 사용하여, 클라우드에서 빌드 된 바이너리는 수정 없이 하드웨어에 배포 및 실행 가능합니다.
이 포스팅에서는 클라우드 네이티브 플랫폼 구축과 관련된 몇 가지 기술에 대해 소개하겠습니다.
더 알아보기 – 디지털 콕핏(Digital Cockpit)이란?
삼성 뉴스룸에서는 2021년 <‘자동차에서 놀고, 일하고, 힐링하는 방법’ 디지털 콕핏 2021 사용 설명서>라는 자료를 배포한 적이 있는데요.
“자동차, 어디까지 진화할 수 있을까?”라는 질문에 대한 답으로, 당사가 ‘디지털 콕핏(Digital Cockpit, 디지털화된 자동차 조종 공간) 2021’을 통해 ICT(정보통신기술)와 하만의 전장 기술을 결합해 차 안에서 일상의 모든 경험을 안전하게 즐길 수 있는 환경을 제시했다고 평가받고 있습니다. 운전석과 조수석 앞쪽의 자동차 편의 기능을 제어하는 장치를 디지털화한 ‘디지털 콕핏’을 선보였으며, 이를 통해 자동차 내부를 ‘제3의 생활공간’으로 만드는 인포테인먼트(정보·엔터테인먼트) 시스템을 강화한 것입니다.
디지털 콕핏이란 클러스터와 IVI로 구성되는 통합 시스템으로 차량 내에서 운전자 및 탑승자가 자동차와 가장 빈번하게 인터랙션하는 메인 허브 역할을 하고 있습니다. 기존의 아날로그 대시보드 대신 대형의 고급 디스플레이로 전환되고 있으며, SDV 트렌드에 맞춰 차량 업그레이드가 가능한 통합 플랫폼으로써 계속 발전하고 있습니다.
그림 2
디지털 콕핏을 위한 클라우드 네이티브 플랫폼
디지털 콕핏 시스템은 요구사항 및 설계에 따라 다양한 구조를 가질 수 있는데, 그중 하나의 시스템 구조를 예로 들어 이 포스팅에서 기술하고자 합니다. 그림 3과 같이 차량의 타겟 하드웨어에서는 하이퍼바이저(hypervisor)를 기반으로 크게 Host, Linux, Android VM을 구성할 수 있습니다.
그림 3
클라우드상에서는 가상 실행 환경(virtual execution environment, VEE)을 기반으로 하드웨어와 동일한 Linux와 Android VM이 구성되고, 개발자는 웹 베이스의 워크벤치를 통하여 개발 툴(IDE)과 시뮬레이션 툴 등을 사용하여 향상된 개발 편의성을 갖춘 소프트웨어 개발 환경을 이용할 수 있게 됩니다.
클라우드 기반 개발 플랫폼을 구축하기 위해서는 많은 표준화 및 추상화 기술이 필요하게 됩니다. 우선 하드웨어 의존성을 최소화하고, 동일한 가상 환경을 구축하기 위해 가상화 기술이 필수적입니다. 그리고 차량 내 다른 ECU, 센서, 액츄에이터로부터 전달되는 데이터 및 차종별 의존성을 줄이기 위해서는 차량 데이터 표준화 및 정규화 기술이 필요합니다. 또한 소프트웨어 업데이트와 배포를 위한 Feature on Demand(이하 FoD) Middleware가 요구되고 있습니다.
Virtualization: Virtual Target을 구성하는 기술
앞서 기술한 다양한 기술 중에서 가상화 관련 기술에 집중하여 현재 개발을 진행하고 있습니다. 가상화의 가장 큰 목적은 하드웨어의 의존성을 제거하여, 가상 타겟(virtual target)과 하드웨어 타겟(hardware target)을 최대한 동일하게 만들기 위함이라고 할 수 있습니다. 이를 통해 실제 하드웨어가 없어도 소프트웨어 개발과 테스트가 가능한 환경을 구축할 수 있습니다.
가상 타겟은 가상 머신(virtual machine, VM)을 기반으로 생성되고, 완벽하게 분리된 가상 장치(virtual device)들을 할당받게 됩니다. 이때 하이퍼바이저나 가상 실행 환경(VEE)이 VM을 제공해 주는 역할을 하고, CrosVM은 생성된 VM들을 관리하게 됩니다. 그리고 이 가상 장치에 대한 표준으로써 VirtIO가 사용되고, VirtIO를 통해 VM의 입출력이 하드웨어 타겟에서는 실제 물리적인 장치와 연결되어 동작하고, 가상 타겟에서는 WebRTC와 연결되어 원격으로 웹 브라우저상에서 그 제어와 출력이 이루어집니다.
Android VM은 Cuttlefish라고 하는 Google의 Reference Virtual Android Platform을 기반으로 하고 있고, CrosVM과 VirtIO를 활용하여 디스플레이와 오디오 등을 가상 하드웨어 장치를 통해 제공하고 있습니다. Cuttlefish를 통해 차량용 IVI 시스템인 오토모티브 프로파일뿐만 아니라 안드로이드 폰과 TV 등의 다양한 가상 환경을 제공할 수 있고, VirtIO와 WebRTC를 연계하여 원격지에서 웹 브라우저를 통해 영상과 사운드 출력 및 터치를 통한 제어도 가능합니다.
그림 4
클라우드 네이티브 툴체인(Cloud-native Toolchain)
클라우드 네이티브 플랫폼의 툴체인으로 연구 개발하고 있는 내용 중 몇 가지를 소개하고자 합니다.
1. 클라우드 워크벤치(Cloud Workbench)
클라우드 워크벤치는 클라우드 네이티브 플랫폼의 툴체인에 접속한 개발자에게 제공되는 하나의 작업 공간입니다. 이 공간에서 코드 편집뿐 아니라 빌드, 코드 관리, 배포까지 개발과 관련된 다양한 개발 편의 도구를 제공합니다. 개발자는 이 환경을 통해 가상 타겟 기반 테스트가 가능하며, 검증된 소프트웨어 바이너리를 수정 없이 바로 하드웨어 타겟에도 배포할 수 있습니다. 또한 형상 관리 툴과 같은 CI/CD 시스템과 연동하여 소스 코드 및 산출물 관리가 가능하고, 추후에는 테스트 자동화 시스템도 지원할 예정입니다.
그림 5
2. 가상 장치를 통한 가상 환경 구성
클라우드 워크벤치를 통해서 소프트웨어 개발 가능한 편리한 환경이 갖춰졌다 하더라도, 실제 개발 및 테스트에 활용되기 위해서는 외부 장치를 연결할 수 있는 방법이 필요합니다. 예를 들면 디지털 콕핏 개발자는 타겟에 USB 장치를 연결하여 음악을 재생하거나, 스마트폰을 연결하여 메시지, 전화, 뮤직 애플리케이션 등을 연동하는 요구사항을 적용할 수 있는 환경이 필요합니다. 더 나아가 가상 IVI 시스템에서는 안드로이드 오토와 카플레이 같은 스마트폰 프로젝션 모드에 대한 환경 지원도 요구됩니다.
이러한 여러 시나리오 중에서 가상 USB를 가상 타겟에 연결하는 방법을 살펴보고자 합니다. 여기서 가상 타겟은 Android IVI 시스템이고, 이 타겟이 실행되는 환경은 AWS 클라우드 ARM 서버로 잡았습니다. 먼저 vFAT 파일시스템 형식으로 음원이나 사진 등이 저장되어 있는 가상 이미지 파일을 생성합니다. 그 다음 타겟이 실행되고 있는 호스트인 AWS 서버상에서 앞서 생성한 가상 이미지 파일을 하나의 USB 장치로 만들기 위해, USB 호스트와 디바이스를 소프트웨어 에뮬레이션되도록 도와주는 커널 모듈을 설치합니다. 이렇게 생성된 USB 장치를 CrosVM에 패스 쓰루(pass-through) 방식으로 연결하면, 게스트 VM 내부에서도 호스트의 USB 장치를 인식하여 사용할 수 있게 됩니다. 하나의 호스트 서버에는 여러 개의 가상 USB 장치를 생성하여 이용할 수 있고, 호스트에서 구동되는 각 게스트 VM에서 필요에 따라 USB를 연결 및 해제할 수 있습니다.
그림 6
가상 USB 장치뿐만 아니라 가상 블루투스나 카메라 장치 등을 사용할 수 있는 클라우드 기반 가상 환경이 제공되면, 개발자는 웹 브라우저로 툴체인에 접속하여 외부 장치 관련 개발 및 테스트를 진행할 수 있습니다.
마치며
본 포스팅에서는 SDV를 실현하기 위해 저희가 고민하고 만들어가고 있는 클라우드 기반 소프트웨어 개발 플랫폼과 관련해 몇 가지 기술 내용들을 소개했습니다. 하지만 살펴본 내용 이외에도 아직 풀어야 할 기술적 문제들이 남아 있습니다.
자동차 임베디드 소프트웨어는 하드웨어 의존성이 높은 라이브러리 및 프레임워크 등이 사용되고 있어, 자동차의 전체적인 소프트웨어 업데이트에 큰 걸림돌이 되고 있습니다. 이 문제를 해결하기 위해 하드웨어에도 가상화 표준을 기반으로 한 아키텍처 도입이 전반적으로 필요합니다. 하지만 이 가상화 솔루션을 기반으로 소프트웨어 업데이트의 토대가 마련되었다 하더라도, 차량마다 설치된 소프트웨어의 종류와 그 버전이 다르기 때문에 이를 관리할 수 있는 FoD 미들웨어가 필요합니다. 이는 소프트웨어의 배포, 설치, 실행을 관리할 뿐만 아니라, 자동차의 안전 요구사항까지 고려할 수 있어야 합니다. 이를 위해 전 세계적으로 자동차 소프트웨어 표준화가 활발하게 이루어지고 있고, 여러 오픈 소스 커뮤니티 및 컨소시움에서 SDV로 발전하기 위한 다양한 방면의 기술을 함께 고민하고 있습니다.
이런 변화에 발맞춰 저희는 소프트웨어 개발자의 편의성 개선뿐만 아니라 SDV를 위한 클라우드 네이티브 플랫폼을 계속 확장하여 구축해 나가기 위해 노력하고 있습니다.
지금까지 전장사업팀 ICX Platform Lab의 김한솔이었습니다. 감사합니다.
|
|
