《架构师》2016年3月
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

卷首语

架构发展趋势和现状

作者 王庆友

最近几年,软件系统越来越大,越来越复杂,相应地,架构扮演的角色也越来越重要。无架构,不系统,因此这里和大家交流下架构的发展趋势,简单概括有几点:

技术平台轻量化

十年前,企业级应用大行其道,商业应用服务器如Weblogic/Websphere扮演中心的角色,它们内含各种系统级组件,如web容器、EJB容器、数据源和事务管理等,一站式搞定企业级软件所需的性能、可扩展性、高可用性,整个系统平台是很重的all in one模式,走的是scale out路线。

开源社区的兴起为这些系统级组件提供免费实现,并且更轻量级和更易用,比如Tomcat、MySQL、Struts、Spring, IBatis等。同时应用更加互联网化,互联网业务的快速变化,要求开发模式和系统实现更轻量更敏捷,所以技术平台一般是DIY,如目前比较流行的LAMP和SSH组合,系统设备也从高大上的IOE变成平民化的XML(X86+Mysql+Linux),走的是scale up路线。

软件设计服务化

传统的企业级应用是单体应用(monolith application),一般是分层结构,如表现层/应用层/领域层/数据层,这主要是水平切分的思想。

随着互联网应用的发展,特别是大型电商系统,业务非常复杂。这种巨型系统,首先要关注的是如何根据业务划分子系统,然后是子系统间如何协作,最后才是子系统内部实现。SOA设计可以很有效支持前面两步,在SOA体系里,每个子系统是独立的服务,服务接口体现子系统协作关系,至于子系统内部,直接作为黑盒子处理。

所以对于复杂系统,首先采用SOA垂直切分子系统,然后使用分层设计水平切分单个子系统,服务化把传统的分层设计往前更推进一步。

当然SOA本身也在不断发展,最初跨企业的Web service交互可认为1.0时代;支持企业内部系统间轻量级访问,支持服务治理,可认为2.0时代;服务进一步分层和微服务化可认为3.0时代。

应用系统生态化

软件是人类活动的虚拟化模拟,目前这种模拟越来越深入,逐渐覆盖吃穿住行、旅游、购物、娱乐、社交等方方面面,应用也从开始单一的信息管理系统,到覆盖整个企业业务,成为企业级应用,到了互联网时代,应用更超出企业边界,通过开放平台互相链接成一个巨大的生态系统。

业务的上下游关联要求应用系统内外一体化,内部系统调用、APP接口、开放平台接口尽可能地一致和复用。例如对于APP接口和Open API,只需要提供简单处理,如安全和数据格式转换,核心实现转发到内部SOA服务作统一处理。

业务在变,技术在变,架构也在变。变的是形式,不变的是本质,架构为了系统更有序,系统为了业务更快速,业务为了生活更美好。