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