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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
函数计算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搭建和管理企业级网站应用
目录
相关文章
|
7天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
8天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
10天前
|
消息中间件 存储 Cloud Native
云原生架构下的数据一致性挑战与应对策略####
本文探讨了在云原生环境中,面对微服务架构的广泛应用,数据一致性问题成为系统设计的核心挑战之一。通过分析云原生环境的特点,阐述了数据不一致性的常见场景及其对业务的影响,并深入讨论了解决这些问题的策略,包括采用分布式事务、事件驱动架构、补偿机制以及利用云平台提供的托管服务等。文章旨在为开发者提供一套系统性的解决方案框架,以应对在动态、分布式的云原生应用中保持数据一致性的复杂性。 ####
|
6天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
29 5
|
8天前
|
Kubernetes 负载均衡 Cloud Native
云原生架构下的微服务治理策略
随着云原生技术的不断成熟,微服务架构已成为现代应用开发的主流选择。本文探讨了在云原生环境下实施微服务治理的策略和方法,重点分析了服务发现、负载均衡、故障恢复和配置管理等关键技术点,以及如何利用Kubernetes等容器编排工具来优化微服务的部署和管理。文章旨在为开发者提供一套实用的微服务治理框架,帮助其在复杂的云环境中构建高效、可靠的分布式系统。
22 5
|
8天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####
|
8天前
|
消息中间件 缓存 Cloud Native
云原生架构下的性能优化实践与挑战####
随着企业数字化转型的加速,云原生架构以其高度解耦、弹性伸缩和快速迭代的特性,成为现代软件开发的首选模式。本文深入探讨了云原生环境下性能优化的关键策略与面临的主要挑战,通过案例分析,揭示了如何有效利用容器化、微服务、动态调度等技术手段提升应用性能,同时指出了在复杂云环境中确保系统稳定性和高效性的难题,为开发者和架构师提供了实战指南。 ####
21 3
|
8天前
|
运维 Kubernetes Cloud Native
深入理解云原生架构:从理论到实践
【10月更文挑战第38天】本文将引导读者深入探索云原生技术的核心概念,以及如何将这些概念应用于实际的软件开发和运维中。我们将从云原生的基本定义出发,逐步展开其背后的设计哲学、关键技术组件,并以一个具体的代码示例来演示云原生应用的构建过程。无论你是云原生技术的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和实操指南。
|
8天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用架构中的实践与思考
【10月更文挑战第38天】随着云计算的不断成熟和演进,云原生(Cloud-Native)已成为推动企业数字化转型的重要力量。本文从云原生的基本概念出发,深入探讨了其在现代应用架构中的实际应用,并结合代码示例,展示了云原生技术如何优化资源管理、提升系统弹性和加速开发流程。通过分析云原生的优势与面临的挑战,本文旨在为读者提供一份云原生转型的指南和启示。
22 3
|
8天前
|
运维 Kubernetes Cloud Native
云原生技术在现代应用架构中的实践与挑战####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在实际项目中的应用案例,分析了企业在向云原生转型过程中面临的主要挑战及应对策略。不同于传统摘要的概述性质,本摘要强调通过具体实例揭示云原生技术如何促进应用的灵活性、可扩展性和高效运维,同时指出实践中需注意的技术债务、安全合规等问题,为读者提供一幅云原生技术实践的全景视图。 ####