《云计算与虚拟化技术丛书 阿里云云原生架构实践》阿里集团,阿里云智能事业群,云原生应用平台作|(epub+azw3+mobi+pdf)电子书下载

图书名称:《云计算与虚拟化技术丛书 阿里云云原生架构实践》

【作 者】阿里集团,阿里云智能事业群,云原生应用平台作
【丛书名】云计算与虚拟化技术丛书
【页 数】 262
【出版社】 北京:机械工业出版社 , 2021.05
【ISBN号】978-7-111-68109-0
【分 类】云计算
【参考文献】 阿里集团,阿里云智能事业群,云原生应用平台作. 云计算与虚拟化技术丛书 阿里云云原生架构实践. 北京:机械工业出版社, 2021.05.

图书封面:

图书目录:

《云计算与虚拟化技术丛书 阿里云云原生架构实践》内容提要:

这是一部从技术和商业双重视角剖析云原生如何赋能实际业务的著作,是阿里云智能云原生应用平台团队的经验总结,得到了阿里云智能总裁兼达摩院院长张建锋、阿里巴巴首席技术官程立、阿里云智能基础产品事业部负责人蒋江伟等专家的联袂推荐。本书内容全面,对云原生所涵盖的技术和业务特性一览无余,从设计原则、模式反模式、技术选项、设计方法、行业案例等多个维度全面总结阿里云云原生架构的方法论和实践经验。第1章强调了云原生是云计算的再升级,重点介绍了在研发流水线、软件交付模式、运维模式、应用架构、组织结构等方面的升级,以及阿里云云原生架构发展的3个阶段;第2章介绍了云原生架构的定义,以及云原生架构实际落地时需要遵循的7个关键原则。第3章总结了云原生架构的10种模式和5种反模式。第4章全面介绍了云原生所涉及的10余种技术,详细讲解了每种技术的典型架构与阿里的实践案例。第5章以阿里云ACNA架构设计方法开篇,重点讲解评估云原生架构成熟度所需要考虑的维度与细则。第6章从职能价值角度出发,阐述了云原生如何为不同岗位的业务赋能。第7章聚焦于云原生架构落地,分享了多个具有代表性的企业案例和Z佳实践,这些Z佳实践对于打造一个成功的云原生应用来说有非常大的帮助。第8章对云原生背景下的容器技术、Serverless技术、大数据技术、数据库技术等的发展趋势进行了分析和展望。

《云计算与虚拟化技术丛书 阿里云云原生架构实践》内容试读

■■层■草■■■原■■口■■■■重面重■意

第1章

e

云原生:云计算的再升级

云原生(Cloud Native)的概念,最早是由Pivotal于2015年提出的,但是即使到了2019年上半年,国内对其的关注依然相对有限。直到2019年9月,“云原生”才突然一跃成为行业最热门的词汇。不过,时至今日,业界对于云原生的定义并没有完全统

一,在云原生不断演进的过程中,衍生出了包括Pivotal、CNCF(Cloud Native Computing

Foundation,云原生计算基金会)、十二因子应用等多个版本的定义。同时,还有不少人将云原生与容器或基于Kubernetes的微服务混为一谈。还有云原生技术、云原生产品、云原生架构、云原生理念等看起来意思相近的词汇。那么云原生到底是什么?云原生会对我们的应用开发产生什么样的影响呢?

1.1什么是云原生

云原生可分解为“云”(Cloud)和“原生”(Native)两个词。这里还隐藏了一个词“计算”(Computing),因为云原生本质上是一种与云计算(Cloud Computing)相同的计算方式,因此通常我们在说云原生的时候,实际上是暗指云原生计算(Cloud Native

Computing)。基于这样的背景,下面我们将进一步探讨云原生的概念及其影响。

1.1.1云原生的概念

既然说到了云原生(计算),那么哪些计算方式不是云原生(计算)呢?要回答这个问

2阿里云云原生架构实践

题,同时辨析云原生的概念,我们需要先回顾云计算的发展历史,以及与之密切相关的分布式计算的复杂性问题。

云计算的概念最先由戴尔公司于1996年提出。2006年,亚马逊公司率先推出了弹性计算云(Elastic Compute Cloud,EC2)服务,随后越来越多的企业开始逐步接受云计算这一概念,并将应用逐步迁移到云端,享受这一新型计算方式带来的技术红利。2009年,阿里巴巴率先开始研制具有完全自主知识产权的云产品一飞天操作系统,由此揭开了中国云计算的序幕。

纵观软件架构的演化历史可以发现,任何新的底层软硬件技术出现后,上层应用软件都需要很长一段时间才能够真正“认识”到新的软硬件给上层应用软件带来的价值,并开发新的软件架构,以便充分利用新软硬件的能力。最典型的例子就是x86CPU和服务器在

面世二十多年后,以CORBA、EJB、RPC、瘦客户端等为主的多层架构才逐步成为应用开

发的主流架构。类似的还有容器技术,它最早是由FreeBSD于2000年在Jails中提出的,但真正得到大规模应用是在2013年Docker兴起之后,而应用层的代表则是几年之后基于容器的微服务架构。

对于云计算这一新基础设施来说,也是如此。在2015年之前,对于大多数应用来说,

云端只是一个用于计算的场所,开发人员所要做的就是将原来在私有数据中心或DC中

的应用,迁移到云端。在迁移的过程中,应用无须重新编写,只需要重新部署,因为云平台提供的计算、存储、网络等,完全兼容应用迁移之前的计算环境。在迁移模式中,应用通常会将原来的物理机部署模式改成虚拟机(规格更小)部署模式;存储则选用兼容的块存储或者文件存储;网络使用SLB(Server Load Balancer,服务器负载均衡)替换传统的负载均衡器,构建VPC(Virtual Private Cloud,虚拟私有云)或NAT(Network Address

Translation,网络地址转换)网络环境;使用云数据库替换原来的MySQL或SQL Server,或者自行在云上搭建Oracle数据库。迁移之后,应用的整体成本(Total Cost of Ownership,TCO)因为采用了“按量付费”的模式而大幅下降,同时,企业的IT支出从CapEx(Capital

Expenditure,资本性支出)模式转变为OpEx(Operating Expense,管理支出)模式,整个

IT支出变得更可控。

如果对迁移过程进行技术分析,就会发现大部分应用使用的技术或者产品都在进行“一对一”的替换,只有极少量应用会基于OSS(对象存储服务)、MaxCompute(大数

据计算服务)等云服务进行部分重构。OSS能够帮助解决分布式状态的存储问题,而

MaxCompute能够解决数据仓库的快速搭建和成本问题。但由于没有或者只进行了少量重构,因此应用的技术栈本身几乎没有发生变化,也就是说,软件的架构没有发生变化,只

第1章云原生:云计算的再升级3

是软件运行的平台和运维的技术体系发生了变化,即只有平台层面的变化。而软件在分布式场景下需要解决的问题,包括稳定性、组件或服务之间的数据同步、整体的高可用或容

灾、C/CD过程的自动化、资源利用率不高、端到端链路跟踪等,仍然需要应用自行解决。

这些问题并不会因为应用迁移到了云平台就从根本上得到了解决。当然,各云平台为了帮助应用解决上述分布式复杂性问题,不断推出各类云服务,但是由于应用架构本身并没有发生变化,因此这些云服务并不能帮助应用解决整体问题,只能从局部提升应用的效率。

面对大量的业务需求和场景迭代,很多云平台都提供非常专业的垂直领域服务,这些服务比企业基于开源自行搭建的系统具备更高的SLA(Service Level Agreement,服务等级协

议)。比如,在数据持久性方面,亚马逊AWS的数据持久性可以达到99.9%(11个9),阿

里云OSS的数据持久性甚至达到了99.9%(12个9);在跨可用区的高可用方面,阿里云

RocketMQ的高可用达到了99.95%,即使整个机房不可用也能继续对外提供消息服务。如果

不是应用的所有存储访问代码都在S3或OSS上重构,那么“木桶效应”就会凸显,即整个

系统的数据持久性将取决于能力最差的组件:如果应用不是将所有自持的开源组件都迁移到云平台上,那么当一个机房出现故障时,应用仍然会出现高可用性的问题:如果应用不是基于FaaS(Function as a Service,功能即服务)技术开发的,那么应用仍然需要自行解决单个组件不可用时的Fail Over(失效转移)以及故障恢复时的Fail Back(失效后自动恢复)等问题。

可见,应用迁移到云上并不代表从此以后就高枕无忧了,如果应用本身没有基于“新”的云服务进行重构,而是继续采用“老”的架构,那么即使业务运行没有问题,应用也不能充分利用“新”的云运行环境的能力。因为这些架构是为了“老”的分布式运行环境而设计的,不是“云原生的”,所以需要对这些架构以及围绕这些架构建立的技术栈、工具链交付体系进行升级,依托于云技术栈将其重新部署、部分重构甚至全部重写,才能将应用变成“云原生的”,从而保证能够充分利用云计算的能力。

为了让应用能够更好地使用云的PaaS平台能力开发SaaS(Software as a Service,软件即服务),Heroku于2011年提出了十二因子应用的概念。十二因子应用适用于任何编程语言,通常被认为是最早的云原生应用的技术特征,详情请参考http:/12 factor..net/zhcn/。

之后,Pivotal于2015年明确地提出了云原生的概念,指出云原生是一种可以充分利用云计算优势构建和运行应用的方式。

在经过CNCF的修改后,最新版云原生的定义为:“云原生技术有利于各组织在公有云、

私有云和混合云等新型动态环境中构建和运行可弹性扩展的应用。云原生的代表技术包括

容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、

易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻

4《阿里云云原生架构实践

松地对系统做出频繁和可预测的重大变更。”⊙

上面三个主流的定义,分别从顶层架构原则、计算模型和代表技术的角度,对云原生进行了描述。这些定义的共同点是它们都将云原生看作一种新的计算方式,让应用能够充分使用云的计算优势。进一步分析这些定义所体现出的技术观点,我们可以达成这样一个共识:只有结合云原生所提供的云服务,改造应用的架构,才能够更好地使用云原生技术,更好地构建弹性、稳定、松耦合的分布式应用,并解决分布式复杂性问题。此外,对架构的改造还意味着相关的开发模式、交付方式、运维方式等都要随之改变,比如,采用微服

务架构重写应用,用声明式API和自动化工具升级运维方式,等等。简单来说,云原生使

得整个软件的生产流水线都发生了巨大的变化,而具体的变化程度又取决于企业对云原生的使用情况。

实际上,云原生的范围还不止于此。要正确实施云原生这一新计算模式,还需要企业

的T决策者、架构师、开发人员与运维人员正确理解和应用云原生的理念,利用会话的云

原生技术及产品。有太多的反例可以证明,仅靠单边的技术升级是很难让云原生升级产生价值的。云原生相关概念之间的关系如图1-1所示。

现代化应用&云原生应用

(容器化应用、微服务应用、无服务器应用…)

云原生架构

云原生开发理念

(Service、EDA…)

(DevOps、GitOps…)

云原生(计算)

云原生产品

云原生技术

(Docker、Kubernetes.…)

(容器、微服务…)

laaS(公有云/私有云/混合云)

(阿里云、DC、自建数据中心…)

图1-1云原生相关概念之间的关系

在图1-1中,现代化应用在不少场合与云原生应用的概念是等同的,因为它们的很多特征都是相似的,比如,都采用了容器技术打包和交付,都具备很强的弹性能力等。这两个概念的细微差别在于:现代化应用可以与云相关,也可以与云不相关;而云原生应用通

⊙参考来源为https::://github.com/cncf/toc/.blob/master/DEFINITION.md。

···试读结束···

阅读剩余
THE END