ThoughtWorks每年都会出品两期技术雷达,这是一份关于科技行业技术趋势的报告。是ThoughtWorks对工具、技术、编程语言和平台的详细解读,我们通常会引入一百余个技术条目。编写技术雷达需要与来自ThoughtWorks全球各个办公室的资深技术专家进行深入沟通,在讨论个别现象的过程中,我们也会谈及宏观趋势。本文汇集了我们眼中当前科技行业的大趋势,以飨读者。
区块链不仅仅是炒作
在本文编写之时,一枚比特币的市值已经突破一万美元大关,从年初至今已经翻了十倍。而埃隆·马斯克明确否认自己是中本聪本尊,中本聪是比特币的神秘发行人。比特币炒作带火了加密货币这个混乱的市场,同时名人效应带来的ICO投机也是风生水起,这引发了加密货币存在“巨大泡沫”的担忧。不过在这种过山车式的疯狂炒作下,也孕育了一些很有价值的技术。
我们的许多客户都在试图建立一个运用区块链的分布式账本和智能合约,一些雷达条目显示,区块链相关技术已经趋于成熟,使用多种技术和编程语言实施智能合约的有效方法越来越多。区块链会解决两大问题。首先,这种技术可以让我们摆脱对“大家共同信赖”中间人(如银行或者股票交易所)的依赖,建立分布式信任机制;其次,区块链可以让我们创建一个共享式、不可更改的的可信的账本——是对事实的记录。如今,我们已经见证了基于这两个核心理念的组织的诞生。其中,我们认为以太坊智能合约和Corda分布式账本技术值得持续关注。
企业内部署(on-premise)软件风光不再?
谈及基础设施和部署,暂且把我们的沟通对象变成我们的每一个客户。在组织开始考虑配置服务器、安装软件,并且对软件进行后续打补丁和维护等动作时,第一个问题是“有我可以购买的定制服务吗?”,然后是“我可以从云服务供应商买什么来构建我的云服务?”这个决策流程可以总结为“最后考虑企业内部署(on-premise)软件”。曾几何时,人们在使用云服务时会研究多时;而今使用on-premise式服务时人们才会非常谨慎。过去一年来,云端托管已经成为大家非常感兴趣的话题。
雷达报告中再次印证了这个趋势——本文中谈及的许多工具、技术和平台要么是云服务辅助,要么支持云端服务。我们切实见证了许多组织“默认上云”的趋势,我们这里提到“企业内部署”,但是重点不是服务器在哪里,而是高效获得一项服务或功能,并长期保证其运行和维护所需要的工作量。
虚拟化的“长尾效应”
早在1999年我们开始使用Vmware的虚拟机时,并没有预料到虚拟化将会给软件带来全方位的变革。虚拟机如今已成为软件行业各个环节的必选,无论是开发者工作站还是谷歌这个体量的数据中心,而且虚拟机也是许多系统的“扩展单元”(除非你是谷歌,在谷歌数据中心本身就是扩展单元!)。Docker、Kubernetes以及当前所有重量级云技术都是基于虚拟化来实现的。
虚拟化促成了云服务的繁荣,我们认为,在NIST定义中的云极具价值。NIST的五个“基本特征”中,我们认为两个特征——按需自助服务和弹性——是云服务能够获得宠爱的绝对关键要素。选择云服务时,还有三个特征,而这些优势正是许多“私有云”产品所无法比拟的。
同等特性(feature party)的误导
我们发现目前科技行业呈现出一种不良趋势,即在实施云迁移、遗留系统升级或产品再开发时以“同等特性(feature party)”为目标。将一套运行时间达十年或十五年的老系统单纯用新技术重新部署,且不论程序缺陷等等,这绝非好主意。常用的借口是“我们不想给企业带来困扰”,或是担心改变流程或计算,但结果常常是交付遥遥无期、进展缓慢、一次性交付,还潜藏各种风险。在发现项目延期、预算大幅超支且不能给企业带来任何新的利益时,利益相关者往往大失所望。
这些教训值得我们反思。我们认为IT领导者(和企业)应当大胆质疑十年前编写的逻辑能否代表当今企业的运行方式,要相信用户有能力采纳(整体更强大的)新系统。企业应当深入研究自己真正需要的功能,而不是在新平台上重建一套功能完备的特性集。关于如何为云服务重写敏捷项目管理工具Mingle,本期技术雷达进行了更多深入的探讨。
中国正在开源世界中崛起
我们发现中国的开源项目在数量和质量上均呈跳跃式增长。百度和阿里巴巴等大企业已经发布自己的开源代码,令全球为之瞩目。在过去的几年里,中国公司对开源代码的认知悄然转变。以前出于保护知识产权的忧虑,不愿意开源。而现在他们看到了Docker、Kubernetes和OpenStack等大型项目的影响力,认识到建立一套生态系统是比闭关更好的选择。只要保持对开源社区的影响力,他们就可以掌握其IP的控制权,同时享受开源的福利。
另外一个因素是中国与发达国家的市场有很大不同,具有独特的文化和视角,由此产生的期望与要求也有所不同,所以中国企业并不一定需要亦步亦趋地追随西方企业的脚步。中国市场的体量巨大,中国企业正在创建、分享开源代码,开发自己特有的软件和生态系统,从而解决中国特有的问题。
在本期技术雷达中,我们重点介绍了阿里巴巴的两大项目Atlas和Beehive,可以更好地实现应用程序模块化,有助于分布式或者远程团队协作。借此你可以动态地将物理隔离模块统一装配到单个应用程序中,其具体设计显然考虑到了中国软件市场的情况。
值得注意的是,中国的开源代码首先是为中国编写的,因此不用走出国门就能取得巨大成功。文档将使用中文撰写,如果一个项目进行得足够顺利,后续可能创建翻译版本。中国涌现了一些质量很高的软件,而且非常实用,但需要注意的是其主要受众是中国市场。
Kubernetes统领容器管理生态
一年前,身在ThoughtWorks的我们曾被问道“你们偏爱哪一种容器管理平台,Kubernetes还是Mesos?”如今,这个问题的答案已经不言而喻。Kubernetes俨然已是事实上的默认标准。这是为什么呢?我们认为是各种因素作用下的综合结果。
容器化趋势已经建立了一套生态系统,我们所有的工具都可以在该生态系统内与容器协作(而且经常需要容器),Docker在这一点上尤为突出。在某种程度上,容器就是新POSIX、新通用接口。IT行业在创建软件组件上付出了多年的努力,看来容器可能是目前最好的标准化方式。(然而,因为一个容器里可以插入任何内容,所以目前尚无法保证组件可以很好地共同运行。)微服务、演化架构、默认云等其他重要科技趋势与容器的协作极好,因此也存在自然的共生关系。
几年前,科技行业主要参与者还在探讨GIFFEE——谷歌提供的针对其他所有人的基础架构。“GIFEE”的话题才刚开始,Kubernetes基本已经成了所有人都能用的谷歌式基础架构。谷歌努力推进项目,投入了大量资源,希望把人们吸引到谷歌云产品上。随着时间的推移,Kubernetes已经成了我们与供应商和云提供商打交道的默认容器平台。
除此之外,Kubernetes还进化得更易于大规模运行。经过对Kubernetes核心软件的改进,借助更好的工具和高度活跃的生态系统,运行弹性生产集群的学习曲线已经不再那么陡峭。现在所有主要云提供商都提供基于Kubernetes的托管,所以进入门槛很低。
数据流即是标准
在本期技术雷达中,我们探讨了一系列与Kafka相关的问题:Kafka、Kafka Streams、Kafka作为正确数据之源、Kafka作为轻量级ESB。然而我们为什么要强调数据流?
全世界都渴望实时分析。事实上,设计系统时我们必须做出调整适应。我们喜欢基于事件的流式架构所带来的福利——松散耦合、自主组件、高性能和高扩展性——但分析要求推动了对数据流的要求。离开数据流便无法实现实时分析。
与数据流兴起相关的是事件驱动架构的成熟度。人们对这些系统已然司空见惯,也很好理解了。有些新技术还在涌现,例如用数据流作为企业事实/状态的持久化存储。我们并非百分百确定所有这些技术都是好主意(CQRS已经坑了许多不设戒备心的人),但数据流已深入人心,这一点毋庸置疑。
网友评论