题记:吾之美食,汝之鸩毒。--《物性论》
1.
现在所有有进取心的OEM都在研究SOA(面向服务的架构:Service Oriented Architecture) ,也都在搞下一代的EEA(电子电气架构)。如果一个业内人士说不出几个关于SOA的词,基本上是不好意思与别人打招呼的,任何一个业内的会议、论坛如果没有关于SOA的议题,那么一定是不够档次的。据说现在各个OEM的老大们见面的第一句话都是:你们SOA了吗?
那么,SOA是否真的有那么神奇,可以彻底改变中国的汽车行业的现状与格局吗?
首先,我们先看看SOA的定义,来确定一下大家口中的SOA指的是否是一个SOA。1996年,Gartner提出SOA的概念;SOA成为IT行业的一种软件开发方法论,许多组织从不同角度对SOA进行了描述:
•Gartner对SOA的定义:SOA是一种 C/S 架构的软件设计方法,应用由服务和服务使用者组成,SOA 不大多数通用的 C/S 架构模型不同之处,在于它着重强调构件的松散耦合,并使用独立的标准接口;
•W3C对SOA的定义: SOA 是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程;
•Wikipedia对SOA的定义:SOA是一种软件设计风格,应用程序组件通过网络通信协议,将服务提供给其他组件;SOA的基本原则是独立于供应商,产品和技术。
还有一些其他的组织或个人提出的关于SOA的解释,这里就不一一列举了。基本上,大家眼中的SOA都有以下特点:基于软件的模块化和以太网的通信,提供标准的服务组件,使软件与硬件解耦,从而可以灵活的设计和扩展上层的应用。
在IT行业,这已经是一种基本常识了,因为IT行业的发展日新月异,谁也不知道明天又要有什么样的需求提出来,而且,以太网已经是一种IT的基础设施。加之IT行业的主要硬件只有一种——电脑(处理器+存储器),这已经是基本的标准化的设施了,所以推行SOA是相对容易的。
但是,在汽车上就完全不同了。每个汽车上的硬件都不一样:数量多、没有统一的标准。任何一台配置一般的车上的电器件都有至少二三百个以上,虽然总价值远远比不上一个服务器,但是如果你把上百万台车的硬件都加起来,总价值就高的惊人了。再加之汽车是一个高可靠性、高安全性的产品——一个故障可能伤害的不止一条人命,总的设计要求在很多方面就远远高于IT行业了。这也是为啥中国汽车在发展了几十年之后还没在努力追赶的原因。
2.
接下来就聊聊汽车上软件的设计究竟复杂在哪里?
首先,先看看现在的分布式系统的特点。简单概括一下:整车的控制任务有几十个控制器分工合作完成,各个控制器之间通过CAN/LIN总线进行信息、指令的交换和传递。可以命名为Signal OrientedArchitecture(面向信号的架构)。
整车现在可能有超过100个控制器,所以整车的信息流的设计就变得越来越复杂。因为现在的架构是经过了几十年逐渐演变出来的,而且各个控制器的功能相对单一,即使在不断的进行整合,但是很少有真正革命性的创新,所以大部分OEM在开发新车型的时候只需要找到相应的Tier1供应商,由这些专业人士提出需求,OEM的工程师再去拉通各个供应商从而把需求实现即可。
各个供应商大部分都是平台化开发,做了一个成功的项目之后,就把这个平台推广到其他的OEM去,尤其是对于国内的OEM,在电子方面做的集成工作远远大于真正的研发。在分布式阶段,大部分OEM基本不需要了解系统里面的详细运行机制,只要关注系统的外部行为与接口就足够了。所以OEM的很多电子工程师的主要精力都放在了供应商管理与问题管理方面。
而到了SOA(Service Oriented Architecture)面向服务的架构阶段,对OEM的能力要求就完全变了。SOA的目的是:构建灵活可变的平台系统。它的特性包括以下几个:
1.服务间 松耦合,无状态、无依赖
2.服务内 高内聚且完整,可复用、可灵活重组
3.服务通信标准化
从中我们看到SOA实现重点在于:
服务通信标准化,即面向服务的通信(SOC,Service - Oriented Communication),以服务重用、灵活重组为目的的服务划分,即基于服务的复用共享式设计(SORS,Service-Oriented Reuse-shared Design)。还有一个隐形的重点,就是用于承载和适配SOC和SORS的软件实现,即基于服务的软件架构(SOS,Service-Oriented Software Architecture)
在IT行业,这种标准是相对容易实现的,因为强大的电脑服务器可以轻松的部署重量级的标准组件来支持通信的标准化,也因为IT行业的硬件基础设施一致性更好,外设种类相对来说要少很多,对单件成本的敏感性要低很多。
而汽车行业的特点是硬件没有标准——各个OEM都根据自己的想法来选取各种部件,从而让车上的标准件非常少,尤其是在控制器层面。这会导致汽车上的架构在向服务化演进的时候是无法直接复制IT上成熟的模式的。
现在各个OEM包括各级供应商,努力在做的事情就是将现有的汽车上的功能重新定义成为服务,并改造现有的电器架构,将以太网作为主要通信设施,并将控制器逻辑上移至域控制器,这种努力至少在理论上是正确的,只是现实太残酷。先不谈大多数的OEM在系统逻辑和需求方面的积累有多少,是否足够做自主的服务设计,我们先来看看做服务设计有哪些挑战。下面是SOME/IP引进的一些新名词:
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。
虽然说到本质,这些新的名词所代表的技术实现的也是传统汽车上的那些工作,但是所应用到的技术却完全不一样了。不同的技术就要求有不同的组织结构与人员能力。这种变革需要的不只是供应商的转变,更需要OEM的彻底转型。而任何的转型期都一定会有一批人死去的。
大家再看看下面的两张图:
如果你明白第一张图讲的是什么,那么你是一个合格的汽车电子的系统工程师或者架构工程师。如果你明白第二张图所代表的含义和每一个缩写,那么你是一个合格的IT工程师。可是我做过一个小试验,让身边的一些朋友来看两张图,然而很少有人能全部说清楚的。而这个就是汽车行业的现状——跨界的人太少了。大部分人都只精通一个领域,而现在则是需要融合的时候了。
NOKIA的时代,手机拼的是硬件,而现在的苹果和安卓时代则是软件加硬件。
汽车行业也一样,分布式架构的时代,大家只要有很强的硬件集成能力和产品定义能力就足够了。而下一个时代,还需要增加一个新能力:软件设计、开发和集成能力。
3.
现阶段,有一个观点甚嚣尘上:将来车上的控制器数量会大幅度的减少。而我不得不提出一个与很多人的理想完全相反的观点:有了域控制器与SOA后,控制器的数量不会真的减少。现在各种鼓吹将来控制器只有几个的观点是无法被认同的。
从逻辑角度讲,首先要有一个概念的定义:控制器究竟是什么?这个没有绝对的标准,但是如果按照目前的在PCB上运行软件并具有一定的输入输出处理能力的硬件都是控制器的话,那么将来与域控制器或者网关直接通过总线进行交互,并有自己软件的硬件应该叫做什么呢?
如果不叫做控制器的话,我实在想不出其他的名字了。那些博人眼球的鼓吹除了获得一点流量之外,对这个行业毫无益处,而且还会误导很多人。看过我那篇讲IPO模型的朋友一定会认同我的一个观点:无论架构怎么发展,I/O口总是需要的。唯一真正大规模消灭控制器的机会在于传感器与执行器的智能化——也就是每个传感执行器都自带了通讯与驱动的芯片。在这个共产主义理想还没有实现之前,控制器将长期存在。
SOA时代与现在最大的区别是底层控制器中的软件将专注于处理通讯和驱动,这也就是某业界巨头所说的原子服务。如果汽车上所有的功能都可以被原子服务所实现,那么汽车控制器的硬件必将被少数的巨头所垄断,因为SOA的基础之一是硬件的标准化。如果没有标准化的硬件,软件也无法标准化。而一旦硬件标准化,每个OEM自己去定制硬件必将是在商业上不划算的。标准化的东西一定是规模化生产才有效益。纵观所有的标准化的东西都一定是被巨头们垄断的。
再来看看软件。虽然每个搞SOA的人都在说将来要靠软件去赚钱,但是实际上在现在的IT世界中大部分利润还是被少数的巨头所攫取了。在手机世界中,如果你不能成为苹果,从而可以收取苹果税(苹果App Store中的抽成),那么你虽然或许可以活下去,但是却只能在某个细分市场中赚自己的辛苦钱。在未来,大部分OEM还将是一个硬件提供者,靠硬件去赚钱。因为软件由于其极其容易复制的特性,导致软件世界将会是马太效应的天下,赢者通吃。想靠软件赚钱的基本前提是要具有绝对的垄断地位。
试想在20年后,所有的车都是SOA架构的,那个时候大部分OEM的利润率都会回归正常水平,也许与现在不会有很大差异,但是少数OEM靠着自己的垄断地位可以获取巨额利润。这个可以类比当前的手机行业:只有苹果与安卓两大阵营,头部的企业获得最大的收益,其他的人只能勉强维持。一部分OEM变为少数几个软件能力强悍的OEM的打工者。软件为王的时代,弱者连起码的尊严可能都无法保存。
4.
SOA是一个循序渐进的过程,汽车上是否真的需要大规模部署Service是一个值得讨论的问题,基本的车辆应用没有必要也不可能都变成服务。
SOA的适用范围还是需要逐步摸索。在信息娱乐领域等需要快速迭代的领域也许是一个好的选择。
至少世界上还没有一个真正的“全SOA”架构出现。
SOA架构的能够在汽车上真正得到应用的另一个前提是OEM的人才储备能够达到一个理想的水平,因为没有任何一个现有的供应商能够搞定整车的SOA。这就会产生一个后果:未来的汽车行业将以OEM为核心,并会有大量的Tier1、Tier2的人流向OEM。
人才流动的原因有两个,OEM将自己做很多原来供应商完成的事情,从而让供应商的工作量减少,导致人才挤出,另外一个是OEM为了完成SOA架构,不得不从供应商处抢人。但是,如果OEM无法维持较高的利润率或者在SOA的残酷竞争中败北了,则人才又会迅速流失。无论如何,对于OEM来说,怎么去管理新进的人才,将是一个巨大的挑战——因为大家有完全不同的思维模式和文化。
5.
啰嗦了这么多,只是想把自己对SOA的一些思考记录下来,并分享给业界的朋友们。这些只是个人观点,错与对: who knows?
最后,回到今天的标题:不要盲目的去追热点,SOA是个好东西,但是肯定不是适合所有人。正如一句耳熟能详的话:SOA有风险,入市须谨慎。
文章来源于侯哥工作感悟 ,作者侯哥工作感悟