2.2云原生的发展及现状
云原生大数据计算服务 MaxCompute 是适用于数据分析场景的企业级SaaS(Software as a Service)模式云数据仓库,以Serverless架构提供快速、全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使用户可以经济并高效地分析处理海量数据。
MaxCompute (原名ODPS) 是一种快速、完全托管的TB/PB级数据仓库解决方案。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速地解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。
从图 2.1中可以看出,云原生在2016年后开始变得火热起来,这得益于微服务、Kubernetes、DevOps和CI/CD等技术的开始流行。这些技术也是作为云原生技术体系中的关键技术,支撑着云原生应用的部署、运行、测试、升级。因此理解这些技术的原理对于了解云原生的发展是必要的,下面介绍一下这些技术的基本原理以及互相之间的关联关系。
(a) cloud-native google搜索趋势图
图 2.1 google搜索趋势图
根据谷歌的趋势,DevOps和微服务都被认为是增长的概念,且它们的增长趋势也相对一致(见图 2.1b)。
微服务体系结构是一种原生云体系结构,旨在将软件系统实现为一组小型服务,每个服务可独立部署在可能不同的平台和技术堆栈上并独立运行,同时通过RESTful或基于rpc的ap等轻量级机制进行通信。在这种设置中,每个服务都是一个业务功能,可以利用各种编程语言和数据存储,并由一个小型团队开发。将整体架构迁移到微服务带来许多好处,包括但不限于适应技术变化的灵活性,以避免技术锁定,更重要的是,减少了上市时间,并围绕服务更好地构建开发团队。
DevOps旨在缩短将变更应用到系统和将变更转移到生产环境之间的时间,且坚持在代码和交付机制方面保持软件质量,将其作为开发过程中的关键元素之一。任何实现上述目标的技术都被认为是DevOps实践。CI/CD是一种典型的DevOps实践,CI指持续集成,强调开发人员提交了新代码之后,立刻自动的进行构建、(单元)测试。根据测试结果,可以确定新代码和原有代码能否正确地集成在一起;CD指持续交付,在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
DevOps与微服务是相辅相成的,DevOps致力于持续监控、测试并部署软件,微服务架构的本质则在于模块化属性,即通过小型单一服务执行单一功能。从这个角度来看,模块化软件很容易适应DevOps结构,允许开发者轻松实现增量式变更。单一微服务天然更易于升级、构建、测试、部署与监控,这正是DevOps希望达成的关键目标。因此,只要项目采用基于微服务的结构,DevOps就能显著加快交付速度并提升交付质量。此外,DevOps实践还要求将大问题拆分成多个较小的部分,再由团队逐一加以解决。从这个角度看,微服务更加与DevOps息息相关,二者同样要求小型团队对企业服务做出功能性变更,且微服务高度强调在低复杂度环境下由增强型小规模团队完成实施与协作。在低复杂度环境的支持下,得以建立持续交付管道并保持稳定的部署流程。同样的,容器化微服务同样可以加快部署与内置功能实现速度,确保新服务能够立即在任意系统上运行。
Kubernetes是一个工业级的容器编排平台,该系统管理所有基于微服务的应用程序。Kubernetes中调度的基本单元是pod,它是一组一个或多个docker风格的容器,以及由该pod中的容器共享的一组资源。Kubernetes有如下几个核心功能:服务的发现与负载;容器的自动装箱与调度;容器的自动化恢复;应用的发布与回滚;支持水平伸缩能力。
云原生的微服务架构正是基于以上技术,在微服务的基础上,以容器为载体,Kubernetes作为“操作系统”,利用高度可扩展、灵活和分布式的云特性,在持续交付环境中生产以客户为中心的软件产品。云原生架构的显着特点是它允许抽象基础架构的所有层,例如数据库、网络、服务器、操作系统、安全性等,能够使用脚本独立地自动化和管理每一层。同时,可以使用代码立即启动所需的基础架构。因此,开发人员可以专注于向软件添加功能和编排基础架构,而不必担心平台、操作系统或运行时环境。
《企业级云原生白皮书项目实战》——第二章 云原生发展历史及现状——2.2 云原生的发展及现状(下) https://developer.aliyun.com/article/1229473