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

本文涉及的产品
函数计算FC,每月15万CU 3个月
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 提前看了《云原生架构白皮书》一直想着要写点东西,拖延来去[《白皮书》](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 安全
构建灵活高效的下一代应用架构 随着企业数字化转型的加速,云原生技术正逐渐成为构建现代化应用程序的关键支柱。
随着企业数字化转型加速,云原生技术逐渐成为构建现代化应用的关键。本文探讨了云原生的核心概念(如容器化、微服务、DevOps)、主要应用场景(如金融、电商、IoT)及未来发展趋势(如无服务器计算、边缘计算、多云架构),并分析了面临的挑战,如架构复杂性和安全问题。云原生技术为企业提供了更灵活、高效的应用架构,助力数字化转型。
28 4
|
5天前
|
Kubernetes Cloud Native 持续交付
云端新纪元:云原生技术重塑IT架构####
【10月更文挑战第20天】 本文深入探讨了云原生技术的兴起背景、核心理念、关键技术组件以及它如何引领现代IT架构迈向更高效、灵活与可扩展的新阶段。通过剖析Kubernetes、微服务、Docker等核心技术,本文揭示了云原生架构如何优化资源利用、加速应用开发与部署流程,并促进企业数字化转型的深度实践。 ####
|
3天前
|
监控 Cloud Native Java
云原生架构下微服务治理策略与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境下微服务架构的治理策略,通过分析当前技术趋势与挑战,提出了一系列高效、可扩展的微服务治理最佳实践方案。不同于传统摘要概述内容要点,本部分直接聚焦于治理核心——如何在动态多变的分布式系统中实现服务的自动发现、配置管理、流量控制及故障恢复,旨在为开发者提供一套系统性的方法论,助力企业在云端构建更加健壮、灵活的应用程序。 ####
40 10
|
4天前
|
运维 Cloud Native 持续交付
云原生架构下的微服务设计原则与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境中微服务设计的几大核心原则,包括服务的细粒度划分、无状态性、独立部署、自动化管理及容错机制。通过分析这些原则背后的技术逻辑与业务价值,结合具体案例,展示了如何在现代云平台上实现高效、灵活且可扩展的微服务架构,以应对快速变化的市场需求和技术挑战。 ####
23 7
|
4天前
|
监控 Cloud Native 持续交付
云原生架构下微服务的最佳实践与挑战####
【10月更文挑战第20天】 本文深入探讨了云原生架构在现代软件开发中的应用,特别是针对微服务设计模式的最优实践与面临的主要挑战。通过分析容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,阐述了如何高效构建、部署及运维微服务系统。同时,文章也指出了在云原生转型过程中常见的难题,如服务间的复杂通信、安全性问题以及监控与可观测性的实现,为开发者和企业提供了宝贵的策略指导和解决方案建议。 ####
23 5
|
2天前
|
监控 Cloud Native 测试技术
云原生架构下的性能优化与实践####
【10月更文挑战第21天】 本文深入探讨了在云原生环境下,如何通过一系列技术手段和最佳实践来提升应用性能。文章首先概述了云原生架构的基本原则与优势,随后详细分析了影响性能的关键因素,包括容器编排、微服务设计、持续集成/持续部署(CI/CD)流程以及监控与日志管理。针对这些因素,文中不仅介绍了具体的优化策略,如资源请求与限制的合理配置、服务间通信的高效实现、自动化测试与部署的优化,还结合案例分析,展示了如何在实际项目中有效实施这些策略以显著提升系统响应速度和处理能力。此外,文章还强调了性能测试的重要性,并提供了几种常用的性能测试工具和方法。最后,总结了云原生性能优化的未来趋势,为开发者和架构师
8 2
|
3天前
|
Kubernetes Cloud Native 持续交付
云原生架构下的微服务设计原则与最佳实践##
在数字化转型的浪潮中,云原生技术以其高效、灵活和可扩展的特性成为企业IT架构转型的首选。本文深入探讨了云原生架构的核心理念,聚焦于微服务设计的关键原则与实施策略,旨在为开发者提供一套系统性的方法论,以应对复杂多变的业务需求和技术挑战。通过分析真实案例,揭示了如何有效利用容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,构建高性能、易维护的云原生应用。文章还强调了文化与组织变革在云原生转型过程中的重要性,为企业顺利过渡到云原生时代提供了宝贵的见解。 ##
|
3天前
|
运维 Cloud Native API
云原生时代下的微服务架构实践
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术正以前所未有的速度重塑软件开发和运维的模式。微服务架构作为云原生的重要组成部分,其设计哲学、技术栈选择以及与传统单体应用的根本区别成为了现代软件工程讨论的焦点。本文将深入探讨微服务架构的核心概念,通过实际案例分析其在云平台下的应用,并分享在实施过程中的经验教训,旨在为读者提供一套清晰的微服务架构实践指南。
|
8天前
|
运维 Cloud Native 持续交付
云原生技术在现代IT架构中的深度应用与挑战####
【10月更文挑战第17天】 本文深入剖析了云原生技术的精髓,探讨其在现代IT架构转型中的核心作用与面临的挑战。云原生不仅是一种技术实现,更是企业数字化转型的重要推手,通过容器化、微服务、持续集成/持续部署(CI/CD)等关键要素,重塑软件开发、部署与运维模式。文章首先概述了云原生的基本原则与核心组件,随后分析了其如何促进企业敏捷性、可扩展性和资源利用率的提升,同时也指出了在安全性、复杂性管理及人才技能匹配等方面存在的挑战,并提出了相应的对策建议。 ####
33 6
|
6天前
|
Cloud Native Devops 持续交付
云原生架构:重塑企业IT的无形之手####
本文旨在探讨云原生架构如何成为推动企业数字化转型的核心动力,它不仅是一种技术升级,更是业务与开发模式的深刻变革。通过剖析云原生的核心要素——微服务、容器化、持续集成/持续部署(CI/CD)、以及DevOps文化,本文揭示了这一架构如何提升系统的弹性、可扩展性和敏捷性,为企业在竞争激烈的市场环境中赋予快速响应和创新的能力。不同于传统综述,本文将以一个虚构案例贯穿始终,直观展示云原生架构从理论到实践的转化过程,为读者提供一幅生动的技术蓝图。 --- ###