3.1 技术平台概述及核心能力
技术平台提供了基础的云原生能力及技术支撑,包括容器化、DevOps、微服务三大部分。通过容器化技术实现企业服务的高弹性、高可用能力,通过DevOps能力实现商业创新的敏捷发布及变更,通过微服务能力实现企业创新服务的灵活解耦、自由治理。
这里将对云原生的理念及核心的组成技术做进一步的阐述,同时了解技术平台相关的核心能力和新技术趋势,并结合云原生分析技术平台的意义和定位。
3.1.1 云原生理念及核心价值
1. 云原生的概念及形成过程
2013年,Pivotal的Matt Stine提出了云原生(Cloud Native)的概念:它是一个思想的集合,包括DevOps、持续交付、微服务、敏捷基础设施、康威定律等。
2015年,Google牵头的云原生计算基金会(CNCF)成立,致力于推动云原生的持续发展,围绕云原生的概念打造云原生体系。基金会成员目前已有一百多家企业与机构,包括亚马逊、微软、思科等巨型科技公司。该基金会对云原生的定义包含三个方面:应用容器化、面向微服务架构、应用支持容器的编排调度。
2018年,CNCF对云原生进行了重定义。云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统,并结合可靠的自动化手段、云原生技术,使工程师能够轻松地对系统做出切实可行的改进和可预测的重大变更。
2. 云原生的理念及12要素
云原生的目的是构建和运行可弹性扩展的应用,其手段是代表云原生的核心技术,如容器、服务网格、微服务、不可变基础设施、声明式API等。那么这些技术的理念又是什么呢?
当下大家对云原生的理解存在着一些误区,有人认为只要使用容器技术就是云原生,有些人单纯地认为采用微服务架构就是云原生,也有人认为通过低代码的模式开发应用就是云原生。
实际上,除了使用云原生的支撑技术以外,更重要的是应用及服务要遵循云原生的设计理念。云原生有一系列云技术、管理方法的集合供大家遵循。企业架构必须按照云原生的理念进行设计才能真正达到云原生的能力。只有业务积极适配云原生的技术理念,做到业务与技术的深度融合,才能真正完成云原生的蜕变。
图3.1展示了云原生的设计理念,可以看出云原生的很多设计理念都是继承自分布式应用的设计理念。

图3.1 云原生的设计理念
云原生的设计理念跟传统应用的设计理念差别在哪里呢?传统应用是通过瀑布式迭代开发出来的一种单体架构模式,需要细心照顾和维护,其内部“铁板一块”,一旦遇到故障或者性能压力,就很难实现精细化的修复或者性能的横向扩展。传统应用在更新和修复的时候也需要停机,会导致整个业务系统不可用。而云原生应用是通过敏捷化开发的、更加松耦合的一种架构,其系统内部每个服务节点都可以独自进行升级迭代,不会互相影响,也可以按需弹性扩展。
云原生12要素(如图3.2所示)由Heroku(一个支持多种编程语言的云平台)创始人Adam Wiggins首次提出并开源,并由众多经验丰富的开发者共同完善,是开发云原生应用的经典设计范式。这12要素结合了他们关于SaaS应用几乎所有的经验和智慧,是开发此类应用的理想实践标准。

图3.2 云原生12要素
结合云原生的理念和具体落地的12要素,企业便拥有了可以创新的指导思想。
3. 云原生的核心价值
云原生的核心价值到底是什么呢?通过一份数据来看一下,2019年CNCF发起了一次云原生技术使用情况的用户调查,共收到1300多份有效问卷,分别来自欧洲、美洲、亚洲等不同地区的用户,其中65%以上的人来自软件/技术/专业服务厂商。技术岗位方面:41%是软件架构师、20%是后端开发工程师、39%是DevOps运维工程师。所在企业规模方面:70%的人工作在100人以上的公司,30%的人工作在5000人以上的公司。
通过这份调查报告可以得到以下几个维度方面的数据。
(1)服务器使用:15%的公司拥有5000台以上的服务器、70%的公司拥有20台以上的服务器;62%的服务器是公有云服务器、30%的服务器是私有云服务器。
(2)容器使用:84%的公司已经使用容器技术,容器数量大于250个的公司超过50%。
(3)Kubernetes使用:82%的人在使用Kubernetes技术。
(4)服务网格使用:18%的人在使用服务网格技术。
(5)CI/CD技术使用:40%的人使用DevOps技术进行迭代及无状态测试。
从调查数据可以看出:52%的人认为云原生技术可以让部署更有效率,45%的人认为云原生技术可以让应用更有伸缩弹性,39%的人认为云原生技术可以提高可迁移性和应用的高可用性。
云原生技术的核心价值在于可以帮助企业提供更有效的部署方式、更具弹性的服务运行模式、更具高可用性的底层支撑,以及更具灵活性的企业技术、业务与组织融合能力。
3.1.2 技术平台的意义及定位
企业IT业务架构向云计算技术演进的进程正在逐步深入。大多数互联网公司的应用从诞生之初就构建在云端。如今,金融、制造、医疗、政务等越来越多的行业和机构也逐渐将业务架构向云上迁移。企业应用的云化,需要摒弃传统的设计方法,从架构设计、开发方式到部署维护整个软件生命周期都基于云的特点设计,构建原生为云设计的应用。这样才能充分利用云计算的基础设施,发挥云平台的弹性及分布式优势。
实践云原生需要的是一套技术体系和一套方法论,是一系列架构、研发流程、团队文化的最佳实践集合,才能支撑更快的业务创新速度、极致的用户体验、稳定可靠的用户服务、高效的研发效率。云原生从技术理念、核心架构、最佳实践等方面帮助企业平滑、快速、渐进式地在云上落地。
企业云服务所需的技术平台,是为企业云业务和云产品提供完备的应用开发、运行、运维、运营支撑能力的平台。它为企业应用开发者提供开发平台、资源管理、持续集成、持续交付、容器服务、镜像仓库等应用基础服务。同时,企业云服务为应用的微服务架构落地提供完备的支撑,结合DevOps的理念,通过提供自动化运维、日志管理、中间件服务、混合云部署等功能,帮助开发及运维人员减少产品研发迭代过程中的负担。
用友企业云服务技术平台主要包含:容器云能力、微服务能力(包含架构和服务治理)、DevOps能力(开发运维一体化)、低代码开发能力、自动化测试能力、分布式中间件能力、区块链能力、AI能力、IoT能力、混合云部署能力等。围绕这些核心能力为上层应用与业务系统的建设还提供一系列支撑服务:运维中心、报警中心、日志中心、全链路监控、问题排查、故障处理、灾备指标、域名管理、自动出盘、稳定性&可靠性、全面性能指标等。
3.1.3 云原生对中国企业的价值
1. 企业创新过程的核心诉求
中国是一个体量巨大的国家,从我国经济市场的格局来看企业客户也呈现出多样性。从体量上来看:有GDP超过一个欧洲国家的地方政府;有营业额超过一个欧洲国家的巨型央企;有极具爆炸式成长、极速伸缩变化的互联网电子商务企业。从数量上来看:有几千万家小微型、中小型企业;有几百万家中型、中大型企业;有几万家大型企业。
对于这么庞杂多样的企业形态,总体上企业的诉求有两个趋同的共性:①业务开展方式趋向在线化,直接连接用户、直接连接上下游合作伙伴、直接连接社会;②业务开展范围趋向全国化,甚至全球化。
在技术诉求方面也呈现三个共性:①多端统一技术,一套代码适配PC Web、移动Web、移动App、移动小程序;②微服务技术,可轻量解耦、便于性能提升、敏捷迭代;③大数据技术,便于性能提升、数据深度分析。
2. 企业对云原生技术的关注点
中国地方政府、中国巨型企业,对云原生技术的关注重心是高安全性、国产化、自主可控。
对于极具爆炸式成长、极速伸缩变化的中国互联网电子商务企业,他们对云原生技术的关注重心是快速开发、弹性伸缩、高稳定、高可用、高安全性。
对于中国几千万家小微型企业,他们一般会直接使用中国互联网电子商务平台商提供的在线经营管理工具,并不接触云原生技术。对于上千万家小型、中小型企业,他们直接使用中国SaaS提供商的SaaS服务。对于云原生应用,他们希望这些应用能够像苹果App Store一样,有丰富的应用插件、模板,易于寻找、购买、支付,并且一键下载安装、统一精确计费、统一运维。
对于还有几十万家甚至上百万家的中型、中大型企业,他们不仅希望SaaS提供商有可视化的配置平台、快捷的无代码快速生成工具,也希望有丰富的应用商店应用插件、模板、表单、报表、模块级生态应用。另外他们还希望结合技术平台进行自研服务的扩展部署。
对于几万家中国大型企业,他们希望SaaS提供商提供专属云部署的技术平台,便于快速开发他们自己的商业创新应用。
3. 云原生技术如何满足这些诉求
在中国市场,Pivotal、CNCF厂商会定位在IaaS、GPaaS层;本土云计算厂商如阿里云、腾讯云等会定位在IaaS、GPaaS、一部分APaaS层;本土SaaS厂商会定位在SaaS、APaaS层。本土云计算厂商和本土SaaS厂商都会研发云原生应用相关的技术平台和开发平台。
对于拥有上万人研发团队,独立的巨型科技央企,一般会选择类似CNCF、Pivotal这样的技术栈来自我研发上层商业应用。
对于中国一二线城市、地级市政府的应用,一般也会选择类似CNCF、Pivotal这样的技术栈,但他们会通过专业服务提供商的系统集成解决方案来开发上层应用,并结合本土服务提供商研发的技术平台(或容器PaaS平台)建设应用的底层支撑平台。
对于极具爆炸式成长、极速伸缩变化的中国互联网电子商务企业,他们本身就是纯互联网应用企业,所以他们会积极拥抱公有云厂商,在公有云的产品之上开发他们的互联网应用。他们会永久生长在公有云上,主要使用云原生技术满足IT弹性伸缩、组织弹性伸缩、社会化资源整合。
3.1.4 技术平台的核心能力
1. 容器云服务,弹性/高可用
容器服务是技术平台的核心能力,它提供了在Docker镜像部署后容器实例的管理功能,支持大规模容器集群的管理,为应用的微服务架构落地提供完备支撑。其核心理念以应用为中心,简化上云过程,为应用提供容器调度、统一接入、扩容、缩容、升级、回滚等功能,具备自动服务网关、健康检查、服务自愈等特性。
容器技术的出现彻底改变了旧有的低效、复杂应用的部署模式。以Docker为首的容器技术的出现,终结了应用交付和部署环节因环境、配置及程序本身的不同而出现的动辄几种甚至十几种部署配置的困境。Docker将他们统一在容器镜像之内,实现了一次构建,任何地方均可运行。容器技术的快速发展,很好地支撑了微服务架构的落地,相对于物理机和虚拟机而言,容器是很轻量化的技术,这意味着在等量资源的基础上它能够创建出更多的容器实例。
Docker起初是一家名为dotCloud的PaaS提供商的容器技术,而dotCloud平台利用了Linux容器技术。为了方便创建和管理这些容器,dotCloud开发了一套内部工具,之后被命名为Docker。Docker早期版本的实现基于LXC,并进一步对其封装,包括文件系统、网络互联、镜像管理等方面,极大简化了容器管理。
当然,在面对分布于多台主机上,且拥有数百个容器的大规模应用程序时,传统或单机的容器管理解决方案就会变得力不从心。在这种情况下,技术平台提供了一种可以支撑大规模容器调度、编排的能力,进行自动化的任务管理。
2. 微服务治理,解耦轻量
实际上微服务这一概念在很早之前就被提出来了,但是直到容器技术的发展成熟,微服务才成为当下炙手可热的架构模式。容器技术的出现,从一定程度上来说推动了微服务架构的普及。
CNCF在云原生应用的三大特征中就提到了面向微服务需要明确服务间的依赖,同时互相解耦。传统的单体架构比较简单,比如典型的三级架构,前端+中间业务逻辑层+数据库层。单体架构最大的缺点就是随着需求的增加,应用代码会越来越臃肿,单体应用也变得越来越庞杂,可维护性和灵活性都越来越低,使得整个应用的复杂度越来越高。
微服务架构的主要优势在于每个微服务都可以独立进行部署、升级、扩展和重新启动。每个微服务通常作为自动化系统的一部分运行,可以在不影响客户的情况下频繁更新正在使用的应用。同时,这些服务都可以采用不同的编程语言编写,且可以使用不同的数据存储技术(即可以使用不同的数据库来存储)。
微服务架构最近几年发展迅猛,2017年以来在业界异常火爆。同时,企业应用架构的微服务化也带来了很多服务治理的问题。例如系统部署复杂度增加、服务间调用复杂、本地数据库事务无法保证数据一致性、服务依赖关系不够清晰、配置管理难度增大等。这些问题在用友技术平台的服务治理平台上都提供了对应的能力来帮助用户解决,即通过可视化、配置化的方式来大幅降低微服务拆分所带来的复杂度。
3. DevOps,敏捷/灵活/动态
当微服务的数量到了一定量级的时候,通过人工来实现微服务的容器化部署和管理会变得非常困难。这时需要一座“桥梁”来代替人工,即通过自动化、智能化的方式完成容器化部署。DevOps就是微服务和容器之间的那座桥梁。
DevOps(Development和Operations的组合词)可以促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。
通过自动化“软件交付”和“架构变更”的流程,DevOps可以让构建、测试、发布的软件更加快捷、频繁和可靠。DevOps的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。
DevOps是持续集成(CI)、持续部署(CD)非常有效的黏合剂,同时它可以把微服务和容器有序地串联起来,完成一个动态的全生命周期管理。
用友技术平台提供了DevOps流水线的能力,研发人员以可视化的方式来实现应用的集成和部署的自动化。用友技术平台还提供在线控制及日志进行故障分析与排查,完成多环境微服务的部署和管理,从而发挥出云原生更大的价值。