圖片來源: 

賓士

「容器在汽車軟體開發流程能發揮關鍵作用。」福斯汽車Cariad首席產品負責人Marcus Greul簡單一句話道出容器重要性。不只是福斯,其他大型車廠,如賓士、通用、福特等,也都面對相同的挑戰,而要透過容器技術對汽車軟體開發流程展開大變革。

因應汽車軟體化的趨勢,未來電動車都能透過OTA快速更新,甚至每幾個月就能更新一次,福斯雖然訂下目標未來2年軟體自主開發比重提高至6成,但仍有4成是委外,當軟體更新頻率加快,傳統汽車軟體開發方式已經跟不上汽車新功能需求增長,所以,福斯要徹底改造汽車軟體開發流程,並以其中的測試為改造首要重點。

福斯靠容器技術克服測試環境建置造成更新延遲

汽車內部是一個大型分散式軟體系統,一輛電動車就有60套ECU軟體,提供各種不同汽車功能,像是電動後視鏡調整等。開發人員每次更新或新增ECU軟體,都要經過繁瑣測試、整合測試驗證ECU,確保任何修改不會對車內執行的其他系統產生負面影響。不只測試耗費大量時間,每次測試前,研發人員必須把測試環境建置完成,才能開始測試,單是環境建置就需要好幾天,導致軟體更新周期變長。這也成了福斯首要難題,所以用容器來解決。

福斯電動車研發團隊2年前採用紅帽OpenShift打造一個雲原生的虛擬測試平臺,來解決測試環境建置造成軟體更新延遲的問題,並以DevOps敏捷開發方式實踐。

在這個虛擬測試平臺上,開發者可以使用容器將執行測試所需要的元件打包部署到該平臺上測試,不只可以使用容器執行ECU功能,來進行各項測試,包括整合測試等,也能快速在容器中建立不同虛擬ECU,來模擬各種條件下ECU上執行軟體堆疊的情況。

因為不需要考慮測試環境準備,因此測試速度變更快。虛擬測試結果也能與實車測試相互比對加以改良,進而提高ECU軟體性能。

導入容器技術改造開發測試流程一段時間後 ,福斯不只將測試平臺建置時間從數天減至幾小時,讓開發團隊可以專注於測試,而不用管底層的硬體怎麼用,也大幅縮短汽車ECU軟體開發測試時間,還因此省下50%硬體成本,新的測試流程,對於跨團隊協作也獲得改善。

除了福斯以外,其他車廠也面臨同樣的考驗,而必須要讓汽車軟體開發流程跟著現代化。例如賓士很早就推出車聯網服務,提供車輛遠端監控、互動體驗等功能,但用戶一年僅獲得1~2次軟體更新,更新頻率太慢,沒辦法快速回應用戶需求,成了賓士首要解決的問題。

導入雲原生技術,讓賓士軟體發布周期縮短到3個月內

過去汽車軟體和硬體關係緊密不可分離,也反映在汽車軟體開發流程,必須考慮到車輛系統發布周期,每次要開發新軟體,軟體工程師必須等硬體完成才能接著開發,甚至還要懂得硬體架構,以及使用哪些廠商硬體組裝等,單是軟體開發前置作業,就耗費不少時間,也導致軟體開發周期很長。

為了縮短軟體更新周期,賓士決定要把軟體開發流程自車輛系統發布管理周期中分離,以此加快軟體更新迭代,賓士首席軟體工程師Rodrigo Nunes指出:「就需要用到容器。」

賓士車聯網團隊自2年前導入AKS容器管理平臺,打造一個容器化軟體開發平臺,希望藉由這個新平臺實現軟體開發流程現代化,來改善軟體更新周期太長的問題, 同時確保品質與安全性, 並以自動化方式將軟體部署到車上。

現在工程師使用筆電搭配模擬器,就可以在這個軟體開發平臺上進行開發,用軟體模擬和測試各種汽車功能,不用管硬體測試平臺該如何建置,就可以進行軟體開發和測試,之後再以自動化方式將軟體部署到實車上測試驗證。

賓士後來更把每個容器化應用軟體都拆成一支支微服務,可以各自獨立開發、測試與驗證並能分別交由不同軟體工程師執行,等到完成測試驗證,再將多個微服務合併推出,來提升應用程式開發的效率。

這些容器化軟體資源建立、配置和和功能交付,全都透過容器調度工具K8s來處理,還結合高度彈性的API設計,讓不同功能的開發不必互相等候,前後端團隊、不同Tier供應商可以彼此協作,是應用開發效率再提升的另一關鍵。開發團隊也使用如Go、JavaScript、C#、Python等主流程式語言來開發。

導入這些雲原生技術後,對於賓士帶來最大改變是,軟體發布周期變更快,每3個月內就能更新一次軟體,等於一年至少3~4次更新頻率,就可以推出更多汽車功能。

「用容器驅動的汽車(Container-driven cars)」這是賓士RD研發團隊幾年前對於他們正在發展的聯網汽車幽默稱呼,由此也透露出,賓士想把對於帶來汽車軟體開發流程變革的容器技術,也帶入車上。

另一家汽車大廠福特同樣採用容器、K8s管理平臺加快包含汽車軟體在內的應用程式開發和交付, 而且為了更快速地開發及迭代軟體,也結合DevOps與CI/CD測試部署自動化。

除了運用在研發部門,其他部門也有採用,例如,福特不同業務部門都有設立一個高度參與的開發社群,該社群負責建構最新技術的創新產品和服務,就會使用容器技術,例如汽車碰撞分析、自動駕駛機器學習開發,以及HPC硬體測試等就有用到。

福特預期透過導入雲原生,除了能夠降低硬體投資成本,還能提高開發人員生產力,並加強應用程式安全性與合規性,符合各行業安全標準和規範,如PCI DSS標準或是歐盟個資法。

除了一般汽車軟體開發流程,連自駕車軟體開發流程也要現代化

除了傳統車廠要把汽車軟體開發流程現代化,也有自駕車新創為了加快自駕軟體更新迭代與實現自駕車大規模部署,而重建自駕車軟體開發流程,來獲得更敏捷、更彈性的能力。通用旗下自駕車軟體公司Cruise就是其中一家。

每次自駕車軟體更新前,研發人員必須先把實車蒐集到的數據,經過數據清洗等資料處理步驟,再餵給ML模型訓練,產出最終模型後,還要在模擬環境和實車上測試,才能更新到自駕車上。

這樣一個自駕車軟體開發流程,對於Cruise來說,在去年一場自駕車道路實測上卻遇到瓶頸,不斷有車輛新的數據湧進來,還有以前沒看過新的交通情境、罕見場景出現, 但是卻無法很快更新軟體,提高自駕車適應能力,因為Cruise這次測試的不只一部無人自駕車,而是有很多部自駕車一起在路上跑,還是在交通複雜的舊金山市區道路上,不只對於自駕車的挑戰很大,多輛車組成自駕車隊在路上測試,龐大資料量湧入不斷增加數據處理的負擔,也需要投入更多資源完成大規模驗證與測試,導致軟體更新步調變慢。

為了解決這個問題,Cruise自駕車團隊使用GKE容器管理平臺,運用容器、K8s、微服務,將自駕車數據蒐集、清理、模型建立,都集中到一個平臺上處理,從而簡化自駕軟體開發流程,並搭配CI/CD流程,達到持續整合與持續部署。還使用該平臺快速建立模擬環境,產生類似交通情境來加以驗證。最後不只一周可以有多個版本更新,也能達成多輛自駕車軟體大規模部署與更新。

熱門新聞

Advertisement