SOA究竟是蜜糖還是d藥?
來源 | 侯哥工作感悟
知圈 | 進(jìn)“電子電氣群”請(qǐng)加微13636581676,備注架構(gòu)
題記:吾之美食,汝之鴆毒 --《物性論》
現(xiàn)在所有有進(jìn)取心的OEM都在研究SOA(面向服務(wù)的架構(gòu):Service Oriented Architecture) ,也都在搞下一代的EEA(電子電氣架構(gòu))。如果一個(gè)業(yè)內(nèi)人士說不出幾個(gè)關(guān)于SOA的詞,基本上是不好意思與別人打招呼的,任何一個(gè)業(yè)內(nèi)的會(huì)議、論壇如果沒有關(guān)于SOA的議題,那么一定是不夠檔次的。據(jù)說現(xiàn)在各個(gè)OEM的老大們見面的第一句話都是:你們SOA了嗎?
那么,SOA是否真的有那么神奇,可以徹底改變中國(guó)的汽車行業(yè)的現(xiàn)狀與格局嗎?
首先,我們先看看SOA的定義,來確定一下大家口中的SOA指的是否是一個(gè)SOA。1996年,Gartner提出SOA的概念;SOA成為IT行業(yè)的一種軟件開發(fā)方法論,許多組織從不同角度對(duì)SOA進(jìn)行了描述:
Gartner對(duì)SOA的定義:SOA是一種 C/S 架構(gòu)的軟件設(shè)計(jì)方法,應(yīng)用由服務(wù)和服務(wù)使用者組成,SOA 不大多數(shù)通用的 C/S 架構(gòu)模型不同之處,在于它著重強(qiáng)調(diào)構(gòu)件的松散耦合,并使用獨(dú)立的標(biāo)準(zhǔn)接口;
W3C對(duì)SOA的定義: SOA 是一種應(yīng)用程序架構(gòu),在這種架構(gòu)中,所有功能都定義為獨(dú)立的服務(wù),這些服務(wù)帶有定義明確的可調(diào)用接口,能夠以定義好的順序調(diào)用這些服務(wù)來形成業(yè)務(wù)流程;
Wikipedia對(duì)SOA的定義:SOA是一種軟件設(shè)計(jì)風(fēng)格,應(yīng)用程序組件通過網(wǎng)絡(luò)通信協(xié)議,將服務(wù)提供給其他組件;SOA的基本原則是獨(dú)立于供應(yīng)商,產(chǎn)品和技術(shù)。
還有一些其他的組織或個(gè)人提出的關(guān)于SOA的解釋,這里就不一一列舉了。基本上,大家眼中的SOA都有以下特點(diǎn):基于軟件的模塊化和以太網(wǎng)的通信,提供標(biāo)準(zhǔn)的服務(wù)組件,使軟件與硬件解耦,從而可以靈活的設(shè)計(jì)和擴(kuò)展上層的應(yīng)用。
在IT行業(yè),這已經(jīng)是一種基本常識(shí)了,因?yàn)镮T行業(yè)的發(fā)展日新月異,誰(shuí)也不知道明天又要有什么樣的需求提出來,而且,以太網(wǎng)已經(jīng)是一種IT的基礎(chǔ)設(shè)施。加之IT行業(yè)的主要硬件只有一種——電腦(處理器+存儲(chǔ)器),這已經(jīng)是基本的標(biāo)準(zhǔn)化的設(shè)施了,所以推行SOA是相對(duì)容易的。
但是,在汽車上就完全不同了。每個(gè)汽車上的硬件都不一樣:數(shù)量多、沒有統(tǒng)一的標(biāo)準(zhǔn)。任何一臺(tái)配置一般的車上的電器件都有至少二三百個(gè)以上,雖然總價(jià)值遠(yuǎn)遠(yuǎn)比不上一個(gè)服務(wù)器,但是如果你把上百萬(wàn)臺(tái)車的硬件都加起來,總價(jià)值就高的驚人了。再加之汽車是一個(gè)高可靠性、高安全性的產(chǎn)品——一個(gè)故障可能傷害的不止一條人命,總的設(shè)計(jì)要求在很多方面就遠(yuǎn)遠(yuǎn)高于IT行業(yè)了。這也是為啥中國(guó)汽車在發(fā)展了幾十年之后還沒在努力追趕的原因。
接下來就聊聊汽車上軟件的設(shè)計(jì)究竟復(fù)雜在哪里?
首先,先看看現(xiàn)在的分布式系統(tǒng)的特點(diǎn)。簡(jiǎn)單概括一下:整車的控制任務(wù)有幾十個(gè)控制器分工合作完成,各個(gè)控制器之間通過CAN/LIN總線進(jìn)行信息、指令的交換和傳遞。可以命名為Signal OrientedArchitecture(面向信號(hào)的架構(gòu))。
整車現(xiàn)在可能有超過100個(gè)控制器,所以整車的信息流的設(shè)計(jì)就變得越來越復(fù)雜。因?yàn)楝F(xiàn)在的架構(gòu)是經(jīng)過了幾十年逐漸演變出來的,而且各個(gè)控制器的功能相對(duì)單一,即使在不斷的進(jìn)行整合,但是很少有真正革命性的創(chuàng)新,所以大部分OEM在開發(fā)新車型的時(shí)候只需要找到相應(yīng)的Tier1供應(yīng)商,由這些專業(yè)人士提出需求,OEM的工程師再去拉通各個(gè)供應(yīng)商從而把需求實(shí)現(xiàn)即可。
各個(gè)供應(yīng)商大部分都是平臺(tái)化開發(fā),做了一個(gè)成功的項(xiàng)目之后,就把這個(gè)平臺(tái)推廣到其他的OEM去,尤其是對(duì)于國(guó)內(nèi)的OEM,在電子方面做的集成工作遠(yuǎn)遠(yuǎn)大于真正的研發(fā)。在分布式階段,大部分OEM基本不需要了解系統(tǒng)里面的詳細(xì)運(yùn)行機(jī)制,只要關(guān)注系統(tǒng)的外部行為與接口就足夠了。所以O(shè)EM的很多電子工程師的主要精力都放在了供應(yīng)商管理與問題管理方面。
而到了SOA(Service Oriented Architecture)面向服務(wù)的架構(gòu)階段,對(duì)OEM的能力要求就完全變了。SOA的目的是:構(gòu)建靈活可變的平臺(tái)系統(tǒng)。它的特性包括以下幾個(gè):
1.服務(wù)間 松耦合,無(wú)狀態(tài)、無(wú)依賴
2.服務(wù)內(nèi) 高內(nèi)聚且完整,可復(fù)用、可靈活重組
3.服務(wù)通信標(biāo)準(zhǔn)化
從中我們看到SOA實(shí)現(xiàn)重點(diǎn)在于:
服務(wù)通信標(biāo)準(zhǔn)化,即面向服務(wù)的通信(SOC,Service-Oriented Communication),以服務(wù)重用、靈活重組為目的的服務(wù)劃分,即基于服務(wù)的復(fù)用共享式設(shè)計(jì)(SORS,Service-Oriented Reuse-shared Design)。還有一個(gè)隱形的重點(diǎn),就是用于承載和適配SOC和SORS的軟件實(shí)現(xiàn),即基于服務(wù)的軟件架構(gòu)(SOS,Service-Oriented Software Architecture)
在IT行業(yè),這種標(biāo)準(zhǔn)是相對(duì)容易實(shí)現(xiàn)的,因?yàn)閺?qiáng)大的電腦服務(wù)器可以輕松的部署重量級(jí)的標(biāo)準(zhǔn)組件來支持通信的標(biāo)準(zhǔn)化,也因?yàn)镮T行業(yè)的硬件基礎(chǔ)設(shè)施一致性更好,外設(shè)種類相對(duì)來說要少很多,對(duì)單件成本的敏感性要低很多。
而汽車行業(yè)的特點(diǎn)是硬件沒有標(biāo)準(zhǔn)——各個(gè)OEM都根據(jù)自己的想法來選取各種部件,從而讓車上的標(biāo)準(zhǔn)件非常少,尤其是在控制器層面。這會(huì)導(dǎo)致汽車上的架構(gòu)在向服務(wù)化演進(jìn)的時(shí)候是無(wú)法直接復(fù)制IT上成熟的模式的。
現(xiàn)在各個(gè)OEM包括各級(jí)供應(yīng)商,努力在做的事情就是將現(xiàn)有的汽車上的功能重新定義成為服務(wù),并改造現(xiàn)有的電器架構(gòu),將以太網(wǎng)作為主要通信設(shè)施,并將控制器邏輯上移至域控制器,這種努力至少在理論上是正確的,只是現(xiàn)實(shí)太殘酷。先不談大多數(shù)的OEM在系統(tǒng)邏輯和需求方面的積累有多少,是否足夠做自主的服務(wù)設(shè)計(jì),我們先來看看做服務(wù)設(shè)計(jì)有哪些挑戰(zhàn)。
下面是SOME/IP引進(jìn)的一些新名詞:
Method:
?Withresponse (Request/Response).
?Withoutresponse (Fire&Forget).
Events: Message from Server to Client when something happens.
Fields: Getter/Setter/Notifier of a property/ status.
Eventgroups: A logical group of Events and Fields used forpublish/subscribe handling。
雖然說到本質(zhì),這些新的名詞所代表的技術(shù)實(shí)現(xiàn)的也是傳統(tǒng)汽車上的那些工作,但是所應(yīng)用到的技術(shù)卻完全不一樣了。不同的技術(shù)就要求有不同的組織結(jié)構(gòu)與人員能力。這種變革需要的不只是供應(yīng)商的轉(zhuǎn)變,更需要OEM的徹底轉(zhuǎn)型。而任何的轉(zhuǎn)型期都一定會(huì)有一批人死去的。
大家再看看下面的兩張圖:
如果你明白第一張圖講的是什么,那么你是一個(gè)合格的汽車電子的系統(tǒng)工程師或者架構(gòu)工程師。如果你明白第二張圖所代表的含義和每一個(gè)縮寫,那么你是一個(gè)合格的IT工程師。可是我做過一個(gè)小試驗(yàn),讓身邊的一些朋友來看兩張圖,然而很少有人能全部說清楚的。而這個(gè)就是汽車行業(yè)的現(xiàn)狀——跨界的人太少了。大部分人都只精通一個(gè)領(lǐng)域,而現(xiàn)在則是需要融合的時(shí)候了。
NOKIA的時(shí)代,手機(jī)拼的是硬件,而現(xiàn)在的蘋果和安卓時(shí)代則是軟件加硬件。
汽車行業(yè)也一樣,分布式架構(gòu)的時(shí)代,大家只要有很強(qiáng)的硬件集成能力和產(chǎn)品定義能力就足夠了。而下一個(gè)時(shí)代,還需要增加一個(gè)新能力:軟件設(shè)計(jì)、開發(fā)和集成能力。
現(xiàn)階段,有一個(gè)觀點(diǎn)甚囂塵上:將來車上的控制器數(shù)量會(huì)大幅度的減少。而我不得不提出一個(gè)與很多人的理想完全相反的觀點(diǎn):有了域控制器與SOA后,控制器的數(shù)量不會(huì)真的減少。現(xiàn)在各種鼓吹將來控制器只有幾個(gè)的觀點(diǎn)是無(wú)法被認(rèn)同的。
從邏輯角度講,首先要有一個(gè)概念的定義:控制器究竟是什么?這個(gè)沒有絕對(duì)的標(biāo)準(zhǔn),但是如果按照目前的在PCB上運(yùn)行軟件并具有一定的輸入輸出處理能力的硬件都是控制器的話,那么將來與域控制器或者網(wǎng)關(guān)直接通過總線進(jìn)行交互,并有自己軟件的硬件應(yīng)該叫做什么呢?
如果不叫做控制器的話,我實(shí)在想不出其他的名字了。那些博人眼球的鼓吹除了獲得一點(diǎn)流量之外,對(duì)這個(gè)行業(yè)毫無(wú)益處,而且還會(huì)誤導(dǎo)很多人。看過我那篇講IPO模型的朋友一定會(huì)認(rèn)同我的一個(gè)觀點(diǎn):無(wú)論架構(gòu)怎么發(fā)展,I/O口總是需要的。唯一真正大規(guī)模消滅控制器的機(jī)會(huì)在于傳感器與執(zhí)行器的智能化——也就是每個(gè)傳感執(zhí)行器都自帶了通訊與驅(qū)動(dòng)的芯片。在這個(gè)共產(chǎn)主義理想還沒有實(shí)現(xiàn)之前,控制器將長(zhǎng)期存在。
SOA時(shí)代與現(xiàn)在最大的區(qū)別是底層控制器中的軟件將專注于處理通訊和驅(qū)動(dòng),這也就是某業(yè)界巨頭所說的原子服務(wù)。如果汽車上所有的功能都可以被原子服務(wù)所實(shí)現(xiàn),那么汽車控制器的硬件必將被少數(shù)的巨頭所壟斷,因?yàn)镾OA的基礎(chǔ)之一是硬件的標(biāo)準(zhǔn)化。如果沒有標(biāo)準(zhǔn)化的硬件,軟件也無(wú)法標(biāo)準(zhǔn)化。而一旦硬件標(biāo)準(zhǔn)化,每個(gè)OEM自己去定制硬件必將是在商業(yè)上不劃算的。標(biāo)準(zhǔn)化的東西一定是規(guī)模化生產(chǎn)才有效益。縱觀所有的標(biāo)準(zhǔn)化的東西都一定是被巨頭們壟斷的。
再來看看軟件。雖然每個(gè)搞SOA的人都在說將來要靠軟件去賺錢,但是實(shí)際上在現(xiàn)在的IT世界中大部分利潤(rùn)還是被少數(shù)的巨頭所攫取了。在手機(jī)世界中,如果你不能成為蘋果,從而可以收取蘋果稅(蘋果App Store中的抽成),那么你雖然或許可以活下去,但是卻只能在某個(gè)細(xì)分市場(chǎng)中賺自己的辛苦錢。在未來,大部分OEM還將是一個(gè)硬件提供者,靠硬件去賺錢。因?yàn)檐浖捎谄錁O其容易復(fù)制的特性,導(dǎo)致軟件世界將會(huì)是馬太效應(yīng)的天下,贏者通吃。想靠軟件賺錢的基本前提是要具有絕對(duì)的壟斷地位。
試想在20年后,所有的車都是SOA架構(gòu)的,那個(gè)時(shí)候大部分OEM的利潤(rùn)率都會(huì)回歸正常水平,也許與現(xiàn)在不會(huì)有很大差異,但是少數(shù)OEM靠著自己的壟斷地位可以獲取巨額利潤(rùn)。這個(gè)可以類比當(dāng)前的手機(jī)行業(yè):只有蘋果與安卓?jī)纱箨嚑I(yíng),頭部的企業(yè)獲得最大的收益,其他的人只能勉強(qiáng)維持。一部分OEM變?yōu)樯贁?shù)幾個(gè)軟件能力強(qiáng)悍的OEM的打工者。軟件為王的時(shí)代,弱者連起碼的尊嚴(yán)可能都無(wú)法保存。
SOA是一個(gè)循序漸進(jìn)的過程,汽車上是否真的需要大規(guī)模部署Service是一個(gè)值得討論的問題,基本的車輛應(yīng)用沒有必要也不可能都變成服務(wù)。
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















