Skip to main content

자동차 산업에서의 DevOps 적용의 필요성

자동차 산업은 SDV(Software Defined Vehicle)로 전환하면서 소프트웨어가 차량의 전방위 적인 혁신을 일으키는 가장 핵심적 요소가 되고 있습니다. 특히 IOT, Electrification, Autonomous, Edge Computing, AI 등 파괴적인 변화가 일어나고, 소프트웨어가 기하급수적으로 증가하는 상황에서 기존의 전통적인 개발 방법으로는 이러한 변화를 극복하기에는 한계를 가지고 있습니다. 이러한 한계를 극복하기 위해서 DevOps 또는 DevSecOps의 개발 방법이 시도되고, 적용되고 있습니다. 관련하여 DevOps의 개념, OEM들의 적용 사례 및 자동차 산업에서 왜 이러한 패러다임의 적용 필요한지를 살펴보도록 합니다.

DevOps is the union of people, process, and products to enable the continuous delivery of the value to our end users “Donavan Brown”

소프트웨어 개발 패러다임의 화두가 되고 있는 DevOps (Development + Operation)와DevSecOps (Development + Security + Operation)은 “소프트웨어 개발”과 “고객에 인도되어 운영되는 상황”을 개발 프로세스내에서 끊김없이 지속적으로 진행하기 위한 방법으로, 개발자와 운영자 간의 서비스관련 문제 및 다양한 정보의 교환이 가능하도록 프로세스가 개선되어, 결론적으로는 고객에게 최상의 가치를 제공하기 위해 적용하는 개발 방법입니다.

특히 자동차 산업에서 다양한 분야에서 수많은 파괴적인 혁신(Disruptive innovation)이 IOT, Electrification, Edge Computing, AI 등의 소프트웨어에서 전방위적으로 발생하고 있습니다. 결국 소프트웨어가 전치가, 자율주행 자동차의 가장 중요한 역할과 혁신적인 변화를 이끌어 가고 있다는 점입니다.

특히 소프트웨어 복잡도는 아래 그림 첫번째 위의 곡선과 같이 향후 10년이내에 3배 이상 증가할 것으로 예상하고 있으며, 둘째 점선과 같이 기술 리더(선진 SW업체)들의 생산성은 자동차 업체들보다는 빠르지만 여전한 많은 격차를 보이고 있으며, 세째 아래 실선 곡선은 자동차 업체들의 평균적인 소프트웨어 생산성을 보여주고 있습니다. 이러한 이유로 OEM과 Tier들은 복잡성이 증가하는 소프트웨어에 맞춰 적절한 개발 생산성을 맞춰 나가기 어렵고 그 차이(Gap)는 더 커질 것으로 예상하고 있습니다(2008년을 “1” Scale로 환산시의 수치임). [1]

이러한 이유로 OEM과 Tier들은 엄청난 소프트웨어 인력의 부족과 개발 비용의 증가에 직면하게 될 것은 자명한 일이며, 현재 이러한 상황들로 SW인력의 부족 및 생산성의 이슈들이 현장에서 많이 발생하고 있습니다

또한 새로운 시대의 차량은 수많은 기능으로 구성된 다양한 소프트웨어 영역(App, middleware, OS, Hypervisor, etc.)을 요구하고 있습니다. 이러한 상황에서 소프트웨어 개발을 가속화하고, 여러 차량 하위 시스템 간의 상호 연결 및 통합과 더불어, OEM과 다양한 Tier들간의 협업을 가능하게 하는 개발의 패러다임으로의 전환 방법으로 DevOps에 대해 논의되고 적용되기 시작하고 있습니다.

“DevOps의 개념”과 “자동차 산업에서의 필요성”은 다음과 같습니다.

[DevOps 개념]

DevOps는 8단계의 Pipeline을 가지며, 개발과 운영을 하나의 프로세스로 만든 프로세스입니다.[2] 특히 CI (Continuous Integration), CD (continuous Deployment)는 개발과정(Dev)에서 개발자들이 다양한 장소 및 과정 내에서 코딩/테스트/배포 등을 통합하여 진행이 가능하게 합니다. 그리고 운영과정(Ops)이 CD(Continuous Delivery)와 CF(Continuous Feedback)을 가능하게 하여, 개발과 운영을 통합된 프로세스로 진행할 수 있습니다. 이러한 부분을 실현하기 위해서는 통합된 개발 환경/도구와 다양한 개발 프로세스들(예, V-Model, Agile, Lean, Continuous, Iterative process, etc.)을 고려해야 가능합니다

관련하여 이러한 DevOps를 가능케 하는 개발 환경은 코딩/디버깅-통합-빌드-테스트(정적/단위/통합검증)-배포가 Seamless하게 진행가능한 개발환경 및 ALM(Application Lifecyle Management) 도구 환경이 준비되어야 가능합니다. (개발환경 관련 도구는 다른 기술 레터에서 제공합니다.)

[자동차 산업에서의 필요성]

현재 자동차 산업에서는 다양한 혁신이 발생하고 있으며, 특히 기존의 ICU(Internal Combustion Engine)에서부터, EVs(Electric Vehicles), ADS(Automatic Driving System) 형태로 진하고 있으며, V2X(Vehicle To Everything communication)을 통해 차량은 Connected IOT 형태로 발전하고 있습니다. 더불어 이러한 부분을 가속화하기 위해, ML(Machine Learning), AI(Artificial Intelligence) 지능형 소프트웨어와 OTA(Over The Air)와 같은 무선 업데이트까지 다양한 솔루션들이 적용되고 있습니다.

이러한 부분을 가속화하고 발전시키기 위해서는 아래와 같은 어려움들을 극복해야 합니다.

  • 새로운 요구사항이나 기능(Feature)에 대한 정립이 기존의 OEM 중심에서 다양한 이해관계자(소비자, 공급업체, 솔루션 업체, 플랫폼 업체, 도구 업체 등)로부터 이동하고 있으며 새로운 협업모델이 필요하다는 점입니다.
  • 기존의 단절된 소프트웨어 개발 방식이 아닌, OEM내의 개발팀 간, 또는 OEM과 공급업체 간의 지속적인 커뮤니케이션이 개발과정에서 발생하고 실제 실현되어야 합니다.
  • 특히 OTA가 적용되면서 소프트웨어 지속적인 개선 및 기능의 변경을 통해 소프트웨어의 통합과 릴리즈를 가속화해야 합니다.
  • 소프트웨어는 원칙적으로 완벽할 수 없는 속성을 가지기 때문에, 새로운 기능 및 솔루션과 관련된 모든 종료의 소프트웨어를 개발하는 과잉 엔지니어링을 방지해야 하고, 지속적인 유지 보수가 가능하도록 해야 합니다.

결국, 이러한 시장 및 기술적 상황을 적절히 대응하기 위해서는 개발 프로세스 패러다임에 대한 혁신이 있어야 가능하며, 이러한 대안으로 가장 많이 회자되고 적용 시도가 많은 방법이 DevOps입니다.

이러한 부분을 가능케 하기 위해서는 다양한 어플리케이션 소프트웨어, 이기종 소프트웨어 플랫폼, 미들웨어 등의 빠른 개발/테스트와 통합 및 배포할 수 있는 개발 프로세스가 필요하며, 또한 시장에 출시된 소프트웨어 문제 개선을 위해 빠른 업그레이드가 가능한 피드백 메커니즘이 필요합니다. 또한 기존이 다양한 개발프로세스와 개발환경을 통합하는 것이 중요한 핵심적인 요소입니다.

특히 SaaS(Software as a Service)개념의 진화는 자동차 산업에서도 전통적인 개발프로세스보다는 Agile을 DevOps와 통합하는 것이 다양한 개발의 요구사항(Needs)와 수많은 변경(Change) 및 실시간 업데이트를 맞추기에는 더 성공적이라고 판단되고 있습니다.

아래는 주요 업체별 DevOps에 대한 적용 현황에 대한 참고 내용입니다.[3]

Jaguar & Land Rover는 2016년 DevOps Enterprise summit에 엔지니어들이 참여하면서 시작되었으며, Phoenix Project를 통해 DevOps의 영감을 받아 프로젝트를 시작하였습니다. 이후 Linux와 Git으로 3개의 간단한 프로젝트를 실행하고, 자동화된 테스트로 통합하고, 결국은 빌드 프로세스를 자동화하여 새로운 기능이나 변경에 피드백 받는데 걸리는 시간인 4~6주를 단 30분으로 단축하였습니다.

Mercedes-Benz는 다양한 엔지니어들이 협업을 위해 지리적(geographic locations) 시간적(Time) 및 보안(Security) 이슈들을 해결하여 작업속도 및 품질을 올리기 위한 방법으로 DevOps Pipeline을 고민하고 시도하고 있습니다. 또한 소비자는 아이디어 및 스토리를 제공하고, 소프트웨어 엔지니어는 이러한 스토리를 선택하고, 구현하여 git 저장소에 커밋하고, 그 다음에 CI/CD가 진행되고 테스트 엔지니어가 테스트를 수행하고 최종 배포가 진행되는 Automatic Pipeline을 고안하고 적용하려는 시도를 하고 있습니다. 그리고 Responsibility/Freedom/Autonomy/Fast decision의 요소들이 진정한 DevOps를 가능하게 한다고 믿고 있습니다.

UBER는 설립초기부터 기술 중심으로 수용을 해왔으며, DevOps를 공개적으로 사용하고 지지해 왔습니다. 특히 1,000s of microservices, 1,000s of builds per day, 10,000+ deployments per day, 100k+ service containers per cluster, ~1M batch containers per day 표방하고 있습니다. (Uber의 DevOps의 발표 영상 참조: https://www.youtube.com/watch?v=BT9sUm5M77Y)

Tesla는 자율주행 오토 파일럿 시스템이 개발과 더불어 사용자가 새로운 기능을 추가하거나 새로운 소프트웨어를 업데이트 하기 위해 물리적인 정비소를 방문하지 않고 OTA(Over The Air)를 통해 이러한 부분을 빠른 시간애에 가능케 시작한 기업입니다. 결국 DevOps와 Agile같은 프로세스르 적용하지 않고는 불가능합니다.

BMW는 2016년에 Agile과 BizDevOps로 전환을 시작했습니다. 2019년 DOES 2019에서 IT혁신을 위한 여정을 발표하고, 자동차 제조 업체에서 모빌리티/서비스 제공업체로 전환에 따른 대규모 Agile 및 DevOps가 비즈니스 및 결국 소비자에 커다란 이익을 줄 수 있다고 선언하였습니다. 개발팀이 80%는 기존의 Waterfall방식의 개발과 20%는 Agile 방식을 활용하고, 서로 협업을 한다는 의미는 개발 문화와 속도가 분명이 다른 어려움을 가지고 있었습니다. 이러한 어려움을 극복하기 위해 BizDevOps로 이동을 목표로 전환을 하고 있습니다.

결론적으로 자동차 산업에서의 소프트웨어는 수 억에서 수십억 LOC(Line of Code)로 자동차 분야의 기술 및 브랜드의 핵심적인 역할을 하기 때문에 IT 및 모바일 업계의 유사한, 혁신적 경험을 바탕으로 품질 및 안전성을 보장하는 새로운 차량의 기능과 무선 업데이트가 가능한 개발 방법으로 전환을 해야 합니다. 이러한 부분을 지원하는 방법 중 하나로 지속적인 통합 및 지속적인 제공을 지원하는 DevOps의 철학은 5G기반의 OTA가 지원되는 상황에서 적합한 개발 방법이라고 볼 수 있습니다.

자동차 산업에서 DevOps 채택이 직면한 문제는 OEM, Tier, SW 및 도구 공급업체를 정의하고, 관련 프로세스를 공식화하여 ECU 및 전자 부품의 표준화를 제시함으로써 해결해야 합니다. 지속적인 업데이트, 사이버 보안의 발전, 5G 네트워크의 통해 OEM은 리콜이 거의 또는 전혀 없이 원격으로 버그를 수정하고 고객에게 향상된 사용자 경험을 제공할 수 있어야 합니다.

결론적으로, DevOps를 적용하기 위해서는 아래 사항들이 반드시 고려가 되어야 합니다.

  1. 전방위 테스트가 가능해야 함: Tier2, Tier1 및 OEM등 다양한 레벨(White box and Black box – UT, IT, QT 등) 및 환경(Virtual, SIL, MIL, PIL, Vehicle 등)에서의 테스트 가능해야 합니다.
  2. 소프트웨어 도구 및 테스트 케이스의 공유의 필요
  3. Automotive SPICE로부터 시작하여 Agile 등의 적용이 요구
  4. DevOps의 개발과정이 필수과정에 대한 모니터링
  5. 개발에 대한 문화를 공개적이고 협업가능한 문화로 변화

무엇보다도, 최상위 경영자의 인식의 전환과 개발 및 테스트 엔지니어들의 이러한 변화에 적극적으로 대응하고, 기존의 폐쇄적인 개발방식에서 개방형 개발 방향으로 전환을 통해 DevOps의 개발 패러다임을 적용해야 합니다.

즉 DevOps는 SDV(Software Defined Vehicle)과정에서의 매우 핵심적인 개발방향 입니다.

[Reference]

[1] R. Fletcher, A. Mahindroo, N. Santhanam och A. Tschiesner, ”The case for an end-to-end automotive-software platform,” McKinsey, 16 01 2020.

[Online]. Available: https://www.mckinsey.com/industries/automotiveand-assembly/our-insights/the-case-for-an-end-to-end-automotivesoftware-platform. [Använd 14 03 2021].

[2] Pennington, J, “The eight phases of a DevOps pipeline,” https://medium.com/taptuit/the-eight-phases-of-a-devops-pipeline-fda53ec9bba

[3] P. Belagatti, “The Scene of DevOps in the Automotive Industry”, https://dzone.com/articles/the-scene-of-devops-in-the-automotive-industry

[4] A Juric, “Lean DevOps for automotive OEMs” 2021