企业级云原生架构:技术、服务与实践
上QQ阅读APP看书,第一时间看更新

第1章 初见云原生

1.1 什么是云原生

1.1.1 云原生起源

云原生是一种软件开发方法,它充分利用了云计算,使用开源软件技术栈将应用程序部署为微服务。通常,云原生应用程序构建为在Docker容器中运行的一组微服务,在Kubernetes中编排,并使用DevOps和Git Ops工作流进行管理和部署。使用Docker容器的优点是能够将执行所需的所有软件及环境配置打包到一个可执行包中。容器在虚拟化环境中运行,从而将包含的应用程序与其环境隔离。

——维基百科“Cloud Native”

信息技术的发展日新月异,过去几十年,企业IT架构经历了单体架构、分布式架构和云计算架构3个阶段的技术演进。尤其是云计算技术的发展,让企业的整个IT基础设施以及应用运行模式发生了革命性的改变。云时代的第一个十年,作为技术的创新探索先锋,互联网公司引领了云计算技术的发展趋势,大多数互联网应用从诞生之初就生长在云端。随着云计算技术的成熟,以及以移动互联网为特点的创新业务的驱动,很多传统行业(如金融、零售、能源、制造以及政务等领域)的企业和机构也逐渐将各自的业务从互联网数据中心(Internet Data Center,IDC)机房迁移至云上,充分利用云的弹性优势,实现系统的动态伸缩与业务的创新。

企业应用上云,也经历了从云托管到云原生的架构演进过程。上云初始阶段,多数企业仅仅是把应用从传统的IDC机房搬迁到云上的虚拟机,这是云托管模式,或者叫作基础设施即服务(Infrastructure as a Service,IaaS)上云。但要真正用好云,不仅是基础设施和平台的升级,应用也需要摒弃传统的设计方法,从架构设计、开发方式到部署维护的整个软件生命周期管理,都要基于云的特点进行重构,从而构建“原生为云”而设计的应用,这样才能在云上以最优的架构、最佳的模式运行,并充分利用和发挥云平台的弹性以及分布式优势。采用基于云原生的技术和管理方法,可以更好地把业务生于“云”或迁移到云平台,从而享受“云”的高效和持续的服务能力。作为诞生于云计算时代的新技术理念,云原生拥有传统IT无法比拟的优势,可帮助企业高效享受云的弹性和灵活性,以服务化的形态获取各种资源,降低大规模分布式高并发的技术门槛,从而实现快速开发、平滑迁移、稳定可靠、运维简便的应用构建模式。云原生已经成为云时代的新技术标准。

云原生的概念最早是谁提出的,业界并没有统一的说法。比较有影响力的是Pivotal(Spring开源产品的母公司)的技术产品经理 Matt Stine,他在2015年发表的电子书Migrating to Cloud Native Application Architectures(《迁移到云原生应用架构》)中,提出了将传统的单体应用和面向服务的架构(Service-Oriented Architecture,SOA)应用迁移到云原生架构所需的文化、组织和技术变革。Matt Stine认为云原生是一组思想集合和最佳实践,包括敏捷基础设施(agile infrastructure)、微服务(microservice)、DevOps、持续交付(continuous delivery)等,主要涵盖如下重要的内容。

(1)十二要素应用程序:云原生应用程序架构模式的集合。

(2)微服务:独立部署的服务,每个服务只做一件事情。

(3)敏捷基础设施:快速、可重复和一致地提供应用环境和后台服务的平台。

(4)基于应用程序接口(Application Programming Interface,API)的协作:发布和版本化的API,允许在云原生应用程序架构中的服务之间进行交互。

(5)抗压性:系统具备良好的健壮性,能够抵抗外界非预期的流量冲击。

从狭义上来讲,云原生包含以容器、微服务、持续集成和持续发布(Continuous Integration/ Continuous Delivery,CI/CD)为代表的云原生技术,使用一种全新的方式来构建、部署、运维应用。它不但可以很好地支持互联网应用,也在深刻影响着新的IT技术架构和应用架构。

从广义上来讲,云原生完全基于分布式云架构来设计开发应用系统,是全面使用云服务的构建软件。随着云计算技术的不断发展和丰富,很多用户对云的使用,不再是早期简单地租用云厂商基础设施(计算、存储、网络)等IaaS资源。

云原生是当前炙手可热且不断发展的技术方向,其定义也会在日后不断演进。据IDC的市场研究数据和报告,截至2019年,超过三成的企业使用了包含 Docker 在内的容器技术,50%以上的企业认为运维自动化和弹性扩容是容器技术的主要应用场景。Gartner报告指出,到2022年,75%的全球化企业将在生产环境中使用云原生的容器化应用。