浅析阿里《云原生架构白皮书》

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 提前看了《云原生架构白皮书》一直想着要写点东西,拖延来去[《白皮书》](https://developer.aliyun.com/topic/cn-architecture-paper)已经正式发布2天了,我还迟迟没有动手。没动手的一方面原因是我的懒癌症又犯了;另一个原因是《白皮书》覆盖面之广,基本触及到云原生的方方面面,而我在云原生方面的知识储备不足以支撑我写出一篇好文。

简介

提前看了《云原生架构白皮书》一直想着要写点东西,拖延来去《白皮书》已经正式发布2天了,我还迟迟没有动手。没动手的一方面原因是我的懒癌症又犯了;另一个原因是《白皮书》覆盖面之广,基本触及到云原生的方方面面,而我在云原生方面的知识储备不足以支撑我写出一篇好文。
云原生概念虽然在2013年就已被提出,但到目前为止各家对它的理解都些许不同的侧重,在这儿阿里给出了自己对云原生的理解。看《白皮书》目录如下图,全文从7个章节对云原生架构进行剖析、讲解。我也从这7个方面带大家快速过一遍……

whitepaper-cloudnative1.png

为什么需要云原生

这一部分内容比较少,大家可以看下《白皮书》上是怎么说的。我理解的重点是:科技发展进入了云的时代,硬件升级,更新速度要求越来越高,「生产关系」已经严重制约「生产力」的发展。在云的时代,需要新的技术架构,来解决人们「生产力」越来越高的要求。于是,云原生架构应运而生。

云原生架构

云原生架构定义

从技术的角度,云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的 非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、 可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。

whitepaper-cloudnative2.png

利用云服务和提升软件交付能力,进一步加快软件开发
让开发专注于对公司业务最核心的部分,剥离大量非功能性特性
具有高度自动化的软件交付

云原生架构原则

  1. 服务化原则: 把一个大服务拆分成多个小服务,每个小团队负责指定服务,各个服务间的升级互不影响,加快业务迭代的速度。
  2. 弹性原则: 弹性是指系统的部署规模可以随着业务量的变化自动伸缩。
  3. 可观测原则: 可观测性是指通过log, trace, metric等手段,让一次点击背后的多次服务调用的耗时、返回值和参数都清晰可见。
  4. 韧性原则: 韧性是指当软件所依赖的软硬件组件出现各种异常时,软件表现出来的抵御能力。
  5. 所有过程自动化原则: 软件技术栈的复杂度和组件规模的增加,带来了软件交付的复杂性,通过使用自动化交付工具实现交付和运维的自动化。
  6. 零信任原则: 默认情况下不应该信任网络内部和外部的任何人 / 设备 / 系统,需要基于认证和授权重构访 问控制的信任基础。
  7. 架构持续演进原则: 现在技术和业务还处在快速变化的时代,云原生架构本身也需要具有具备持续演进能力。

主要架构模式

  1. 服务化架构模式: 服务化架构是云时代构建云原生应用的标准架构模式,要求以应用模块为颗粒度划分一个软件,以接口契约(例如 IDL)定义彼此业务关系,以标准协议(HTTP、gRPC 等)确保彼此的互联互通,结合 DDD(领域模型驱动)、TDD(测试驱动开发)、容器化部署提升每个接口的代码质量和迭代速度。
  2. Mesh 化架构模式: Mesh化架构是把中间件框架(比如 RPC、缓存、异步消息等)从业务进程中分离,让中间件 SDK与业务代码进一步解耦。
  3. Serverless 模式: Serverless模式更进一步,把用户从非核心中解放出来,只需要关心核心业务逻辑。
  4. 存储计算分离模式: 把存储这种有状态的操作和计算这种不需要状态的操作分别用不同的方式处理。
  5. 分布式事务模式: 微服务模式提倡每个服务使用私有的数据源,而不是像单体这样共享数据源。但实际使用场景中总有一些别的因素考量。所以有下面几个分布式事务模式分别适应不同的场景:XA模式、BASE、TCC模式、SAGA模式、AT 模式。
  6. 可观测架构: 可观测架构包括 Logging、Tracing、Metrics 三个方面。
  7. 事件驱动架构: 本质上是一种应用 / 组件间的集成架构模式。

典型的云原生架构反模式

  1. 庞大的单体应用: 庞大单体应用的最大问题在于缺乏依赖隔离,因此需要考虑通过服务化进行一定的拆分。
  2. 单体应用“硬拆”为微服务: 服务的拆分需要适度,过分服务化拆分反而会导致新架构与组织能力的不匹配。
  3. 缺乏自动化能力的微服务: 当软件规模变大后,自动化能力的缺失还会带来更大的危害。

主要的云原生技术

容器技术

容器技术背景与价值

whitepaper-cloudnative3.png

Docker 提出了创新的应用打包规范 —— Docker 镜像,解耦了应用与运行环境,使应用可以在不同计 算环境间一致、可靠地运行。让开发所需要的灵活性、开放 性和运维所关注的标准化、自动化达成相对平衡。

容器编排

Kubernetes 已经成为容器编排的事实标准,被广泛用于自动部署,扩展和管理容器化应用。Kubernetes 提
供了分布式应用管理的核心能力。
Kubernetes 在容器编排中有几个关键设计理念:

1. 声明式API
2. 可扩展性架构
3. 可移植性

云原生微服务

微服务发展背景

在云原生时代,云原生微服务体系将充分利用云资源的高可用和安全体系,让应用获得更有保障的弹性、 可用性与安全性。

微服务设计约束

相较于单体应用,微服务架构的架构转变,在提升开发、部署等环节灵活性的同时,也提升了在运维、监控环节的复杂性。
1 微服务个体约束: 个微服务修改或者发布时,不应该影响到同一系统里另一个微服务的业务交互。
2 微服务与微服务之间的横向关系: 主要微服务的可发现性和可交互性处理服务间的横向关系。
3 微服务与数据层之间的纵向约束: 在微服务领域,提倡数据存储隔离原则。对于有状态的微服务,通常使用计算与存储分离的方式.
4 全局视角下的微服务分布式约束: 微服务系统设计一开始,就需要考虑全局视角。

云原生微服务典型架构

第一代微服务架构:
whitepaper-cloudnative5.png

第二代微服务架构:
whitepaper-cloudnative6.png

第三代微服务架构:
whitepaper-cloudnative7.png

第四代微服务架构:
whitepaper-cloudnative8.png

主要微服务技术

Apache Dubbo
Spring Cloud
Eclipse MicroProfile
Tars
SOFAStack
Dapr

Serverless

1 技术特点

全托管的计算服务
通用性
自动的弹性伸缩
按量计费

2 常见场景

小程序 /Web/Mobile/API 后端服务
大规模批处理任务
基于事件驱动架构的在线应用和离线数据处理
开发运维自动化

3 技术关注点

计算资源弹性调度
负载均衡和流控
安全性

开放应用模型(OAM)

2019 年末,阿里云联合微软共同发布了 Open Application Model (OAM) 开源项目,其主要目标是解决从 Kubernetes 项目到“以应用为中心”的平台之间最关键环节——标准化应用定义。

Service Mesh 技术

Service Mesh 是分布式应用在微服务软件架构之上发展起来的新技术,旨在将那些微服务间的连接、安全、流 量控制和可观测等通用功能下沉为平台基础设施,实现应用与平台基础设施的解耦。这个解耦意味着开发者无需关注 微服务相关治理问题而聚焦于业务逻辑本身,提升应用开发效率并加速业务探索和创新。

根据 Gartner 研究报告,Istio 有望成为 Service Mesh 的事实标准(话外音:OUC的成立不知道会不会对此事造成影响?),而 Service Mesh 本身也将成为容器服务技术的标配技术组件。

DevOps

1 概述
DevOps 就是为了提高软件研发效率,快速应对变化,持续交付价值的的一系列理念和实践,其基本思想就是 持续部署(CD),让软件的构建、测试、发布能够更加快捷可靠,以尽量缩短系统变更从提交到最后安全部署到生产 系统的时间。

要实施 DevOps,需要遵循一些基本原则,这些原则被简写为 CAMS:

文化(Culture) 
自动化(Automation) 
度量(Measurement) 
共享(Sharing)

运维平台一般都经历过如下几个发展阶段:手工、脚本、工具、平台、智能化运维等。
现有运维平台虽然很多实现方式,但总体来说分为两类:

指令式 
声明式

阿里云原生架构设计

阿里巴巴独有的云原生架构设计方法——ACNA(Alibaba Cloud Native Architecting)。ACNA 是一个 「4+1」 的架构设计流程
「4」 代表架构设计的关键视角,包括:

企业战略视角
业务发展视角
组织能力视角
云原生技术架构视角

「1」 表示云原生架构的架构持续演进闭环。

4 个架构视角和一个闭环的关系如下图所示:

whitepaper-cloudnative4.png

阿里云原生产品介绍

云原生产品家族

阿里巴巴云原生产品家族包括容器产品家族、微服务产品家族、Serverless 产品家族、Service
Mesh 产品家族、消息产品、云原生数据库家族、云原生大数据产品家族等。

阿里巴巴云原生产品家族

  1. 容器产品家族:
容器服务 Kubernetes 版(ACK)
Serverless Kubernetes(ASK)
镜像服务(ACR)
  1. 微服务产品家族
EDAS(企业分布式应用服务)
MSE(微服务引擎)
ACM(应用配置管理)
CSB Micro Gateway(微服务网关服务)
GTS(全局事务服务)
ARMS(应用实时监控服务 ) 
链路追踪(Tracing Analysis)
PTS(Performance Testing Service)
  1. Serverless 产品家族
FC(函数计算)
SAE(Serverless 应用引擎)
Serverless 工作流
  1. Service Mesh 产品家族
托管服务网格(ASM)
AHAS(应用高可用服务)
  1. 消息产品家族
消息队列 RocketMQ 版
消息队列 Kafka 版
消息队列 AMQP 版
微消息队列 MQTT 版
阿里云消息服务 MNS
事件总线 EventBridge
  1. 云原生数据库产品家族
PolarDB
PolarDB-X
  1. 云原生大数据产品家族
云原生数据仓库 AnalyticDB MySQL 版
云原生数据仓库 AnalyticDB PostgreSQL 版

各行业面临的挑战&解决方案

分别举了「申通」「完美日记」「特步」「中国联通」「Timing App」5个例子

云原生架构未来发展趋势

容器技术发展趋势

趋势一:无处不在的计算催生新一代容器实现

新的容器运行时技术解决了安全隔离性、执行效率和通用性三个不同维度的要求:

KataContainer
Firecracker
gVisor
Unikernel 

趋势二:云原生操作系统开始浮现

Linux 的计算调度单元是进程,调度范围限制在一台计算节点。而 Kubernetes 的调度单位是 Pod, 可以在分布式集群中进行资源调度,甚至跨越不同的云环境。

whitepaper-cloudnative11.png

趋势三: Serverless 容器技术逐渐成为市场主流

通过 Serverless 容器,一方面根本性解决 Kubernetes 自身复杂性问题,让用户无需受困于 Kubernetes 集群容量规划、安全维护、故障诊断等运维工作; 一方面进一步释放云计算能力,将安全、可用性、可伸缩性等需求下沉到基础设施实现。

趋势四:动态、混合、分布式的云环境将成为新常态

对于企业客户而言,有些业务出于对数据主权、安全隐私的考量,会采用混合云架构。一些企业为了满足安全合规、成本优化、提升地域覆盖性和避免云厂商锁定等需求,会选择多个云厂商。混合云 / 多云 架构已成为企业上云新常态。

基于云原生的新一代应用编程界面

包括生命周期管理、运维管理、配置范围和扩展和管理、以及语言无关的编程框架,一起构成了崭新的应 用与云之间的编程界面。这一变革的核心逻辑还是把应用中和业务无关的逻辑和职责,剥离到云服务,并在这个过程 中形成标准,让应用开发者能够在专有云、公有云、或者混合云的场景中,都能有一致的研发运维体验。

Serverless 发展趋势

1 趋势一:Serverless 将无处不在
2 趋势二:Serverless 将通过事件驱动的方式连接云及其生态中的一切
3 趋势三:Serverless 计算将持续提高计算密度,实现最佳的性能功耗比和性能价格比

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
9天前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
7天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
6天前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
10天前
|
弹性计算 运维 Cloud Native
云原生架构的崛起与未来展望
在数字化转型的浪潮中,云原生架构凭借其高效、灵活和可扩展的特性,正逐渐成为企业IT战略的核心。本文旨在探讨云原生架构的定义、关键特性、实施优势以及面临的挑战,同时展望未来的发展趋势。通过深入分析,我们期望为读者提供一个关于云原生架构全面而深入的视角,助力企业在云计算时代做出更明智的决策。
23 3
|
11天前
|
Cloud Native API 持续交付
云原生时代的微服务架构设计
随着云计算的蓬勃发展,云原生概念逐渐成为IT行业的热点。本文将通过深入浅出的方式,介绍在云原生环境下,如何设计一个高效、可扩展的微服务架构。文章不仅涉及理论概念,还将结合实际代码示例,帮助读者理解微服务架构的核心要素和设计原则,以及如何在云平台上实现这些设计。
|
16天前
|
消息中间件 运维 Cloud Native
云原生架构下的微服务优化策略####
本文深入探讨了云原生环境下微服务架构的优化路径,针对服务拆分、通信效率、资源管理及自动化运维等核心环节提出了具体的优化策略。通过案例分析与最佳实践分享,旨在为开发者提供一套系统性的解决方案,以应对日益复杂的业务需求和快速变化的技术挑战,助力企业在云端实现更高效、更稳定的服务部署与运营。 ####
|
6天前
|
Cloud Native API 持续交付
云原生架构下的微服务治理策略与实践####
本文旨在探讨云原生环境下微服务架构的治理策略,通过分析当前面临的挑战,提出一系列实用的解决方案。我们将深入讨论如何利用容器化、服务网格(Service Mesh)等先进技术手段,提升微服务系统的可管理性、可扩展性和容错能力。此外,还将分享一些来自一线项目的经验教训,帮助读者更好地理解和应用这些理论到实际工作中去。 ####
17 0
|
7天前
|
Cloud Native 持续交付 云计算
云原生架构的崛起:企业数字化转型的加速器
在当今快速发展的技术环境中,企业正面临着前所未有的变革压力。本文深入探讨了云原生架构如何成为推动企业数字化转型的关键力量。通过分析其核心概念、优势以及实施策略,本文旨在为读者提供对云原生技术的全面理解,展示其在现代企业中不可或缺的作用。
15 0
|
13天前
|
Cloud Native 持续交付 云计算
云计算的转型之路:探索云原生架构的崛起与实践####
随着企业数字化转型加速,云原生架构以其高效性、灵活性和可扩展性成为现代IT基础设施的核心。本文深入探讨了云原生技术的关键要素,包括容器化、微服务、持续集成/持续部署(CI/CD)及无服务器架构等,并通过案例分析展示了这些技术如何助力企业实现敏捷开发、快速迭代和资源优化。通过剖析典型企业的转型经历,揭示云原生架构在应对市场变化、提升业务竞争力方面的巨大潜力。 ####
20 0
|
13天前
|
Cloud Native 持续交付 云计算
云原生技术在现代IT架构中的转型力量####
本文深入剖析了云原生技术的精髓,探讨其在现代IT架构转型中的关键作用与实践路径。通过具体案例分析,展示了云原生如何赋能企业实现更高效的资源利用、更快的迭代速度以及更强的系统稳定性,为读者提供了一套可借鉴的实施框架与策略。 ####
20 0