阿里妹导读:在纷繁复杂的业务发展中,变化已成为了唯一的不变。如何保障基础设施的安全、高可用性,同时提供高效的创新支持?今天,阿里副总裁、业务平台事业部掌门人玄难,结合阿里巴巴业务平台建设和个人多年大型软件设计经验,提炼成几点思考,希望对大家的软件架构设计有所启发。

玄难
阿里副总裁
业务平台事业部掌门人
特别说明:本文中所说的软件都指代面向最终用户的偏业务的软件,不包含操作系统、中间件等系统软件。
1、软件发展的几个阶段
软件工具和信息化阶段:软件最早是为了数值计算,以工具的形态出现的。包括PC时代我们非常熟悉的Excel,Word这些好东西。以及典型的企业内部管理的信息系统,例如:企业流程审批、进销存管理系统等等。
互联网服务阶段:随着PC互联网兴起,淘宝、QQ、Google、新浪这些全新的互联网服务逐步进入了我们的日常生活。
社会基础设施阶段:随着移动互联网、IOT、人工智能的出现和高速发展,各种各样的软件进入社会经济生活的方方面面,软件之间相互连接,构成了一个纷繁复杂的生态系统,变成了不可或缺的社会基础设施。
随着软件形态的变化,过去非常高效的系统架构和组织形态遇到了全面的挑战。因为我们所处的环境已经从量变到质变,突破临界点,产生了本质的不同。
阿里巴巴就是这个过程中的典型代表。从过去单一的电商业务演变成了复杂的经济体,没有了确定性的业务边界,蓬勃发展的业务不可预测。比较典型的特征就是:
从过去的一个淘宝演变成了几十个事业部和公司,新零售、云计算、文娱健康等等几百种业务,还在不断地快速演进;
从曾经的一个Denali系统,通过分布式架构演变成了上万个系统的群落,各种业务逻辑交织在一起横贯众多系统,说不清道不明;
从曾经几十个人的协同演变成了几万人的协同,每个人都像在原始热带雨林,不知业务全貌,盲人摸象;
从曾经的可停机发布演变成了不可中断,连续进化的社会基础设施,不仅要系统稳定性,更要业务连续性。如何确保这个基础设施的安全、高可用性,同时提供给业务方高效无障碍的创新支持,就是我们必须去解决的核心问题。
针对这些问题,我们对软件设计产生了几点基本思考。
2、传统软件设计:外延的确定性