面向服務(wù)架構(gòu)(SOA)是一個典型的從IT/互聯(lián)網(wǎng)行業(yè)引入到汽車的軟件技術(shù),現(xiàn)在汽車行業(yè)圍繞SOA有很多討論和實踐,主要集中于SOA本身的概念和在智能汽車中的實際應(yīng)用,有些觀點把SOA捧得很高,認為SOA是一勞永逸的方案,用了SOA就可以具備和特斯拉一較高下的軟件能力,也有人覺得SOA比較虛,上了SOA用戶也沒什么直接的體驗,不見得能多賣幾輛車。
毫無疑問,新技術(shù)的引入總是伴隨著爭議,主要還是專業(yè)背景的不同,站在汽車電子,通信或者電氣工程師的角度去看待一個軟件問題,總會有各種懷疑,也有很多與SOA無關(guān)的需求和問題,想讓SOA來解決,這些都跨專業(yè)的理解偏差。而汽車軟件,畢竟還是軟件,不是信號、電子或芯片,很多疑問還得回到軟件的領(lǐng)域,才能正確理解SOA的概念以及它能解決的問題。
第一個問題
智能汽車到底需不需要SOA?這里需要先看一下智能駕駛時代的汽車架構(gòu)和汽車軟件的實際需求:
傳統(tǒng)的整車架構(gòu),尤其是電子和電氣部分,主要就是分布式ECU,嵌入式軟件和現(xiàn)場總線級別的通信網(wǎng)絡(luò),傳統(tǒng)的EEA很大程度上是一套硬件集成方案(當然復(fù)雜度比手機高出幾個量級),如果沒有特斯拉,可能這套成熟的體系還能用上很多年,沒有人考慮過把IT行業(yè)的軟硬件架構(gòu)直接套用到汽車上,但現(xiàn)在這事被特斯拉做成了,而且類似科技公司背景的入局者和模仿者越來越多,各類汽車軟件也大幅增加。對于傳統(tǒng)OEM,根據(jù)自己的專業(yè)背景,在這一輪技術(shù)升級中,基本都能看到域控制器、新型傳感器、車載以太網(wǎng)、操作系統(tǒng)、APP和各種算法等新技術(shù),但如何把它們有效地集成在一起,做成用戶體驗卓越的智能產(chǎn)品,還能保證成本可控,是一個比較大的挑戰(zhàn)。新硬件好學,拆來看看,大概也能明白對手怎么做的,但是軟件和代碼,還有基于這些軟件的運維方式和盈利模式,對于傳統(tǒng)汽車行業(yè)來說,是所謂的虛擬經(jīng)濟和“靈魂”,既看不太懂也有內(nèi)部變革的阻力。所以O(shè)EM需要的是在現(xiàn)有EEA基礎(chǔ)上,想辦法把這些五花八門的新技術(shù)用更快更有效的方式集成到一起,而且采用成本和風險可控的迭代方式,而不是推倒現(xiàn)有架構(gòu)和供應(yīng)鏈重來。這個目標從軟件的角度來看,其實就是要求OEM要具備整車軟件的集成能力。
但大型系統(tǒng)軟件的集成正是傳統(tǒng)EEA缺失的能力,因為現(xiàn)有零部件都是軟硬件耦合的,傳統(tǒng)車內(nèi)嵌入式軟件的集成基本是零部件和CAN網(wǎng)絡(luò)調(diào)通即可,由于CAN是基于廣播的,所以各個零部件軟件之間實際并沒有直接對接。而隨著新的非嵌入式的軟件越來越多進入到車內(nèi),相互之間會通過基于以太網(wǎng)的軟件接口(API)來直接傳輸數(shù)據(jù),API調(diào)用和CAN信號廣播完全是兩回事,API設(shè)計是軟件問題不是通信問題,同時新的汽車軟件會有獨立的生命周期線,為了保證讓大量的新軟件能通過以太網(wǎng)絡(luò)在一起協(xié)同工作,OEM必須引入全新的獨立于硬件的大型軟件集成能力,相當于需要一套單獨的整車軟件架構(gòu)。
這套軟件架構(gòu)的基本作用是:
能集成整車各個ECU、DCU(域控制器)、ZCU(區(qū)域控制器)、分布式網(wǎng)關(guān)/中央網(wǎng)關(guān)等的軟件,而軟件集成最重要的環(huán)節(jié)就是,設(shè)計一套統(tǒng)一的軟件接口和數(shù)據(jù)傳輸格式,當然還有安全、性能等一系列規(guī)范。有了這套整車軟件集成方案,OEM才能讓各個供應(yīng)商或服務(wù)商的軟件按事先約定好的統(tǒng)一標準來傳輸數(shù)據(jù)。否則就會演變成各供應(yīng)商自行定義接口名稱和參數(shù),輸出各式各樣的數(shù)據(jù),安全標準也不一致,最終還得由OEM來適配和對接,成百上千的新軟件集成到車內(nèi),接口聯(lián)調(diào)和適配的復(fù)雜度和工作量是OEM無法承受的,這會比CAN矩陣設(shè)計高出幾個量級。
那么現(xiàn)在汽車行業(yè)選擇了面向服務(wù)架構(gòu)(SOA)來作為汽車的整車軟件架構(gòu),主要是為了解決各個零部件間的數(shù)據(jù)交換和通信。這個方向?qū)Σ粚??我們可以從IT行業(yè)設(shè)計SOA的初衷來分析。
廣義的面向服務(wù)架構(gòu),或者廣義的“服務(wù)”本身,是從單機軟件到網(wǎng)絡(luò)軟件都一直存在的最基本的概念。傳統(tǒng)汽車的ECU嵌入式軟件,都算是單機軟件,功能界面數(shù)據(jù)處理基本都在同一個硬件上,沒有前臺界面+后臺服務(wù)的概念,但在IT/軟件行業(yè),從局域網(wǎng)到廣域網(wǎng)、互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等,軟件早已完成了分層架構(gòu),從最早局域網(wǎng)軟件的Client/Server(C/S)架構(gòu),到web時代的B/S架構(gòu),最近十幾年又迭代出SOA、微服務(wù)、無服務(wù)架構(gòu)等等,服務(wù)這個概念始終存在且保持進化,貫穿了整個軟件發(fā)展。簡單來講,軟件的復(fù)雜業(yè)務(wù)代碼都是運行在所謂的“服務(wù)器”上,這些服務(wù)器都是遠程部署在機房的高性能計算機,運行在這些服務(wù)器上的軟件被統(tǒng)稱為“后臺服務(wù)”,而運行在用戶終端上的,比如PC、手機或智能硬件的軟件,都叫做“前臺界面”,其實就是汽車行業(yè)經(jīng)常提的HMI。這種把交互界面和業(yè)務(wù)模塊(算法)分離的主要原因是終端算力有限,同時為了避免重復(fù)開發(fā)可共用的復(fù)雜模塊,才把這類模塊都放到后臺服務(wù)器上去做成“服務(wù)”來共享使用。
所以汽車軟件從嵌入式逐步升級為大型系統(tǒng)軟件的趨勢下,只要有網(wǎng)絡(luò),那么基于服務(wù)的架構(gòu)是不可避免的。高算力平臺或域控制器就是車內(nèi)的服務(wù)器,這些服務(wù)器把各種汽車零部件的控制權(quán)以軟件接口的方式,提供給車內(nèi)或車外以太網(wǎng)的其他軟件使用。
但狹義上的SOA (Service-Oriented Architecture), 尤其是汽車行業(yè)目前多從IBM借鑒的那套SOA和企業(yè)總線理念,是不是必須的呢?并不是,而且IBM的SOA解決方案已經(jīng)是過時的技術(shù)了,原因有很多,總的來說,和商業(yè)軟件公司的沒落有關(guān)系。
在IT時代(1995年-2005年間) 是商業(yè)軟件公司的天下,IBM、Oracle、微軟及SAP這樣的IT軟件公司達到巔峰,那時候互聯(lián)網(wǎng)商業(yè)模式和技術(shù)才萌芽,當時的新技術(shù)和軟件理念都是商業(yè)軟件公司引領(lǐng)的,特點就是代碼封閉,按License收費,數(shù)據(jù)不在線等等,最關(guān)鍵的是商業(yè)模式很封閉,如果想在一個企業(yè)內(nèi)部使用IBM的方案來實現(xiàn)業(yè)務(wù)數(shù)字化,需要很復(fù)雜的咨詢、采購、實施流程,無論軟件還是硬件,成本都很高,好處是一站式服務(wù),也就是汽車行業(yè)習慣的“交鑰匙”模式,當時還衍生出帶資質(zhì)認證的各類細分領(lǐng)域的工程師,需要各種考核,否則沒法落地這些公司的軟件,這類商業(yè)軟件公司把閉源生態(tài)玩到了極致(和現(xiàn)在的汽車行業(yè)的軟件工具商,Autosar聯(lián)盟搞的這套閉環(huán)很類似)。
從2000年之后,互聯(lián)網(wǎng)公司崛起,最早也是用這些商業(yè)公司的軟件,發(fā)現(xiàn)成本太高,技術(shù)也無法支持海量用戶(商業(yè)軟件多是企業(yè)用戶,用戶數(shù)量從幾萬幾十萬的情況居多,像互聯(lián)網(wǎng)這樣動輒幾千萬上億的用戶量,傳統(tǒng)的商業(yè)軟件架構(gòu)支持不了,這類公司的升級思路是scale up),谷歌亞馬遜率先開始大規(guī)模創(chuàng)新架構(gòu),采用開源技術(shù)和分布式計算(通過scale out提供擴展性),到后來國內(nèi)興起的去IOE浪潮(很重要的一次技術(shù)浪潮,改變了整個軟件業(yè)的方向),基本就把所有的商業(yè)軟件從產(chǎn)品軟件棧中剔除了,采用了大量開源方案和二次開發(fā)來自研。
2005年開始,傳統(tǒng)IT公司就開始明顯走下坡路,IBM針對企業(yè)IT提出的這套狹義上的“SOA”架構(gòu),與它的企業(yè)總線ESB一起,變得鮮有人問津。而過去十幾年,大多數(shù)軟件架構(gòu)都基本是采用互聯(lián)網(wǎng)公司創(chuàng)建的軟件架構(gòu),實際也是基于服務(wù)的,比如用的最多的“微服務(wù)”,是廣義的面向服務(wù)架構(gòu)的最新迭代,也算是狹義的SOA的實際“量產(chǎn)”案例,所以廣義的SOA一直在使用并迭代。而服務(wù)這個概念過于普及和基礎(chǔ),導致大多數(shù)科技行業(yè)的開發(fā)人員基本都不提這事了。(有一點需要注意的是,從之前的去IOE浪潮來看,汽車行業(yè)現(xiàn)在這些商業(yè)工具提供商,是有可能被替代的,尤其是特斯拉和一些科技公司造車,都基本不會使用Autosar這樣學習門檻高,價格貴,封閉體系,還得等工具商緩慢迭代的軟件方案。)
上面講了面向服務(wù)架構(gòu)的來龍去脈,就比較容易澄清SOA的用處,面向服務(wù)架構(gòu)是在IT行業(yè)軟硬件運行環(huán)境都很成熟的基礎(chǔ)上出現(xiàn)的架構(gòu),用于軟件模塊之間分層,對于部分公用的,消耗計算資源的代碼,被抽象成服務(wù),單獨運行在專門的服務(wù)器上,被其他軟件模塊共享使用。十幾年前SOA的提出顯然沒有考慮過汽車行業(yè)現(xiàn)在還需要先實現(xiàn)車載以太網(wǎng)通信,域控制器和操作系統(tǒng)升級的情況。如果說IT行業(yè)搞SOA是從0到1,那么汽車行業(yè)搞SOA就是從-1到0,再從0到1,因為還得先解決硬件升級的問題,-1到0就是OEM先得補齊的硬件功課(當然自動駕駛或者座艙應(yīng)用本來也需要升級這些硬件),這里面又涉及到成本和長期ROI,以及傳統(tǒng)OEM如何看待SOA的價值問題。從整車成本的角度來看,SOA會給OEM每次新車換代節(jié)省一定比例的零部件開發(fā)費,但是在使用了SOA的第二代車開始才會節(jié)省,而第一代使用SOA的汽車,又要升級網(wǎng)絡(luò)又要引入中間件,各種新增成本,OEM未必能買單,所以如果對軟件架構(gòu)的長期價值理解不清楚,這個總賬算起來很有難度。而從技術(shù)上看,OEM其實需要在短時間內(nèi)同時完成通信網(wǎng)絡(luò)升級、硬件升級、軟件升級(生態(tài)建立,盈利模式)的三步走,這三步可能在其他行業(yè)都經(jīng)歷了十年以上的時間,所以汽車行業(yè)面臨的挑戰(zhàn)要復(fù)雜不少。
第二個問題
SOA本身能解決哪些問題,不能解決哪些問題,到底能帶來什么好處?
SOA的范圍包括:
設(shè)計和實現(xiàn)全車各個零部件的軟件(用以太網(wǎng)通信的軟件)的接口定義和數(shù)據(jù)格式。需要注意的是,軟件接口的定義,從來沒有強制的標準,雖然有所謂的六大接口設(shè)計原則,也有Restful接口風格之類的規(guī)范,但都不是非實現(xiàn)不可,實際需由軟件架構(gòu)師根據(jù)業(yè)務(wù)情況和經(jīng)驗來設(shè)計,這點對于傳統(tǒng)OEM和非軟件開發(fā)人員來說尤其難受,因為接口定義沒有行業(yè)標準可參考,參考互聯(lián)網(wǎng)行業(yè),各公司的系統(tǒng)架構(gòu)和接口基本都是自己的技術(shù)骨干設(shè)計的,汽車行業(yè)幾乎沒有這樣的人,因為原來嵌入式軟件并不需要這類架構(gòu)師,傳統(tǒng)汽車需要的CAN通信矩陣實際是通信或者電子專業(yè)的工程師來負責,他們幾乎沒有軟件開發(fā)經(jīng)驗,而IT行業(yè)的軟件工程師又不懂整車架構(gòu),所以找到對汽車網(wǎng)絡(luò)和軟件都精通的經(jīng)驗豐富的軟件團隊才是OEM需要解決的首要問題。
全車的數(shù)據(jù)安全規(guī)則,統(tǒng)一的加密算法,密鑰管理機制,權(quán)限管理體系等
備份和冗余機制:如果是中心化的架構(gòu),中間件要考慮很多負載均衡,故障切換的功能,如果是去中心化的架構(gòu),需要考慮各節(jié)點的選舉機制和資源占用
CAN信號轉(zhuǎn)化為服務(wù)API的數(shù)據(jù)報文
SOA最重要的作用:
SOA能保證車內(nèi)和車外所有使用以太網(wǎng)通信的軟件采用同一套數(shù)據(jù)格式進行數(shù)據(jù)交換,避免大量的軟件接口適配和數(shù)據(jù)不兼容,給OEM和供應(yīng)商雙方都省去大量的集成成本。長期來看,SOA會是未來汽車開放平臺的基礎(chǔ),如果有一天特斯拉開放和蘋果類似的應(yīng)用商店,面向服務(wù)架構(gòu)必然是最底層的技術(shù)基礎(chǔ)。
SOA不包含:
車載以太網(wǎng)升級(以太網(wǎng)通信是SOA的前置條件,但本身這是兩件事),以及車內(nèi)網(wǎng)絡(luò)管理,比如網(wǎng)絡(luò)休眠喚醒、功耗節(jié)能等等,這些屬于網(wǎng)絡(luò)和操作系統(tǒng)范疇。
TSN以及網(wǎng)絡(luò)延時解決方案,這些和SOA沒有直接聯(lián)系。另外還有方案還希望通過SOA去定義不同軟件的通信優(yōu)先級,保證部分高安全等級功能的信道通暢,思路是好的,但是實際應(yīng)用很難實現(xiàn),具體原因可以參考十年前基礎(chǔ)運營商和通信巨頭想搞的SDN(軟件定義網(wǎng)絡(luò)),最后都不了了之。
以太網(wǎng)應(yīng)用層協(xié)議的選擇:這也只是SOA的前置條件,SOA是針對軟件分層的架構(gòu),和使用的通信協(xié)議無直接關(guān)系,要實施SOA確實要先選一個以太網(wǎng)應(yīng)用層協(xié)議,但是選哪個并不影響SOA的實現(xiàn),不管是DDS、MQTT、SOME/IP還是HTTP、Socket、SOAP,都可以實現(xiàn)SOA,如何選擇還是主要看SOA中間件的具體功能是否強大和車載以太網(wǎng)的成本情況,(目前很多工具商和供應(yīng)商在推SOME/IP,但實際上SOME/IP無論從協(xié)議定義和測試情況來看,并沒有比其他協(xié)議更有特別的優(yōu)勢,對應(yīng)的軟件甚至問題更多,同時汽車行業(yè)的廠商絕大多數(shù)并不太清楚一個軟件中間件應(yīng)該具備哪些功能才能量產(chǎn),花了大量時間去討論應(yīng)用層協(xié)議)其實爭論哪個以太網(wǎng)應(yīng)用層協(xié)議更好,對于有經(jīng)驗的軟件開發(fā)者來說,就像爭論C++, JAVA, PHP誰是最好的編程語言一樣沒什么意義。應(yīng)用軟件功能是否強大,性能是否最優(yōu),從來都取決于開發(fā)者,而非開發(fā)語言,更非通信協(xié)議。應(yīng)用層協(xié)議是上層協(xié)議,目的是為最終的應(yīng)用場景服務(wù),并不會像底層通信協(xié)議一樣,是一個非此即彼的選擇,只要能讓應(yīng)用層軟件提供最終的用戶價值,上層協(xié)議的差別并不大,而且很容易切換。
自動駕駛中間件的功能,自動駕駛有專門用于傳感器數(shù)據(jù)傳輸和融合的中間件ROS,ROS也是面向服務(wù)架構(gòu)的,但由于設(shè)計的初衷是機器人使用,機器人就一個大腦,所以ROS更適合單域控制,并不適合解決跨域通信問題,加上全車應(yīng)用DDS的成本和資源消耗,短期內(nèi)ROS還很難從ADAS/AD域拓展到整車。
另外OEM需要的軟硬件解耦能力,須由操作系統(tǒng)和SOA中間件開發(fā)商共同提供,操作系統(tǒng)可以通過驅(qū)動模型、硬件抽象和設(shè)備樹等方式把常用的標準零部件轉(zhuǎn)成系統(tǒng)接口,但各OEM的零部件很多都是非標準化的,操作系統(tǒng)并沒自帶這些零部件系統(tǒng)接口,所以還需要SOA這樣的架構(gòu)來補充這部分零部件的協(xié)議轉(zhuǎn)化和為應(yīng)用層提供API。
在實際SOA項目落地過程中,會有各種車載網(wǎng)絡(luò)和硬件的限制條件,尤其是SOA整體性能問題,會牽涉到車內(nèi)現(xiàn)有網(wǎng)絡(luò)和ECU的性能和負載瓶頸,需要OEM和零部件廠商共同解決,都是有不小的挑戰(zhàn)。另外SOA雖然是后臺架構(gòu),但也會被質(zhì)疑能帶來什么用戶體驗,這涉及到應(yīng)用層開發(fā),確實需要一些新的APP或新場景來驗證SOA的作用。
總結(jié)
汽車行業(yè)的工程師多年來習慣了先找行業(yè)標準,工具,然后才是研發(fā),制造,最后再用標準來測試驗證的閉環(huán),這套流程是典型的制造行業(yè)的模式,凡事都得先看看有沒有行業(yè)標準和成熟工具,上下游各公司都用同一套標準,最后以最小的成本和最低的風險把汽車造出來,流程很穩(wěn)定,但這種思維模式會讓工程師過分依賴標準和工具,失去真正的研發(fā)和創(chuàng)新能力,尤其是整車架構(gòu)中很多標準和協(xié)議都是歐美日定義的,大量的資金都投給了國外的工具商和外資Tier-1,給到工程團隊的研發(fā)費用反而很少。現(xiàn)在這套閉環(huán)被特斯拉帶頭用更先進的理念和技術(shù)打破了,還造出了跨代領(lǐng)先的產(chǎn)品,證明了開源軟件在車內(nèi)的可行性。而且新的智能軟件并不像硬件或者嵌入式軟件需要那么多規(guī)范,傳統(tǒng)汽車軟件開發(fā)類似于做填空題,題干都被固定了,我們只能做最沒有技術(shù)含量的部分,而智能軟件都是根據(jù)用戶需求自行開發(fā),更像是寫作文,就一個題目,剩下的自由發(fā)揮。這個變化對于新一代智能汽車或者新一代的汽車軟件供應(yīng)商,都是研發(fā)能力升級的最佳機會,也有充分的商業(yè)動機去完成新一代核心軟件和工具的國產(chǎn)化。
作者:Luke Chen
快控科技 CEO