上亿人访问的Webservice,其架构就不能象搭建企业内部运行的软件架构,你看Google,都有几十万台PC集群的计算资源才能支撑互联网服务。我们过去的传统的企业内部机房磁盘阵列和计算机集群架构不适合在公网上了,我们的数据库也不适合服务几亿人了。
所以,我特别关注我们如何软件服务化,软件服务化的架构是什么样的?
其实,业界都在往一个方向跑,不管是Google、还是Yahoo、还是微软、还是咱们的百度、QQ、盛大、阿里,大家都在往软件服务化、互联网的方向跑。(如果你仅仅是把眼光放到SAAS,放到和过去的ASP[应用服务托管]去对比,眼界显然需要更高一些)
应用软件运行需要基础设施。首先,基础硬件设施,几十万台PC的集群如何虚拟文件系统和计算资源分配,这就是云计算要解决的问题。现在云计算是个热门,Yahoo、Google、IBM、微软都在研究和建设。但微软慢了一步(微软在互联网计算上一直不敏感,用传统软件的方式看互联网),所以WFS没有出来(可能没想通作为集群中的一个节点资源,如何加入集群,和集群同构,还能符合个人桌面计算管理)。
有了云计算硬件基础,还需要数据存取软件基础。有了分布式文件系统,文件存取应该没什么问题,但关系数据的存取,这是现在所有数据库产品都没有解决的。Amazon看到了机会,推出了S3服务。全球互联网就是个超级计算机,而S3就是这个计算机上的数据库。
而所有的SOA应用,都必须在一个容器中运行,否则,有外界调用这些服务,这些服务运行中使用的资源谁来管理呢(很多人不明白容器是干什么用的,不明白中间件的来历,也不明白为什么JAVA和.NET都要做容器。如果你做应用,你自己还要负责那么多底层的分配与释放与并发,那么你做的既不专业,也累,也不稳定,不如交给系统商去管理)。容器负责内存、资源的分配、调度、回收,负责安全,负责事务,负责并发,负责池化。而这些SOA服务,也必须能随时升级,就必须具备软件热插拔的功能。现在热的OSGi研究就属此类。
有了这些基础设施,我们的应用就必须SOA化,成为软件服务,让所有人来使用。使用者一方可能是一个C#写的客户端,可能是一个PHP网站,可能是一个JAVA网站,也可能是一个FLASH。
全球大大小小的公司提供了这么多Open API,如何调用。用各自的语言?JAVA?C#?PHP?Javascript?
我想会产生一种新的语言来组织这些Open API,而不是这么技术化的程序员使用的开发编码语言。
它,会是DSL。Domain Specific language。它可能会高于Javascript,但和Javascript类似,但又低于JAVA,C#这些重型开发语言。但它肯定是动态语言。这样随时改变流程,随时改变应用。这就是业务敏捷。
这就是我预想中的未来SOA时代计算环境。
你,还在用传统的业务基础平台思路搭建企业管理软件架构吗?
未来SOA时代,未来软件服务化时代,你,准备好了吗?
后记:
20%的企业在上第一代系统,不需要SOA。但软件产品提供商需要考虑SOA,以防未来的集成。但现在对于企业没有需求,不会因为SOA加分买单。
30%的企业在全部替掉第一代系统,不需要SOA。但软件产品提供商需要考虑SOA,以防未来的集成。但现在对于企业没有需求,不会因为SOA加分买单。
30%的企业在整合自己内部的第二代系统,可能需要SOA,但实质上采用的少。但软件产品提供商需要考虑SOA,以防未来的集成。客户可能会因为SOA加分买单。
10%的企业在整合自己的上下游,需要SOA。
10%的企业开始为最终客户提供信息交互服务,如同我们看到的Google API一样,需要SOA。
现在关注和编写SOA时机正确吗?正确,因为你看上面的比例,有50%的企业有SOA需求。
但如果你面临的客户市场恰恰不是这50%,而是另外的50%,那么奉劝你继续做好现在的产品,SOA还不需要。