你知道的越多,不知道的就越多,业余的像一棵小草!

成功路上并不拥挤,因为坚持的人不多。

编辑:业余草

blog.csdn.net/gavinchen1985

推荐:https://www.xttblog.com/?p=5233

什么是云原生架构

所谓云原生架构,Cloud Native Computing Foundation 的定义是这样的:

Cloud-native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.

These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.

云原生架构的目的是使企业能够在公有云,私有云或者混合云等动态环境中构建和运行可扩展的应用。代表技术包括容器,服务网格,微服务,不可变基础设施和声明式 API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师们能够轻松地对系统作出频繁和可预测的重大变更。

软件架构的目的一般都是帮助开发团队将关注点尽可能聚焦在业务代码的实现上。通常,开发软件系统,代码包含三部分内容,即处理业务逻辑的代码、第三方依赖、处理非功能特性的代码。这三部分中只有业务代码真正产生业务价值,另外两个部分都只算附属物。软件规模越大、非功能特性要求越复杂,非业务代码开发量越大,复杂度越高,系统迭代会越来越缓慢,成本业务越来越高。所以,在软件规模较大、功能复杂的情况下又要保证敏捷迭代,就需要将非业务代码尽可能剥离出来,利用可靠的第三方托管服务来提升开发效率和系统质量。而云平台提供了丰富的用于处理非功能需求的服务和组件,所以利用云原生架构充分利用云平台上的各类资源,可以很好的解决这方面的问题,下面是微软整理应用云原生技术的实际案例:

公司 案例
Netflix 生产环境中部署 600+个服务。每天部署上百次。
Uber 生产环境中部署 1000+个服务。每周部署数百次。
WeChat 生产环境中部署 3000+个服务。每天部署上千次。

云原生架构必要条件

所以,云原生架构要解决的问题不是只简单的将应用迁移到云上,而是通过一组架构原则和设计模式,将应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、 可观测性、灰度等),使业务不再受非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。而为了实现这些,云原生架构应具备如下条件:微服务架构,不可变基础设施和托管服务。

微服务架构

云原生架构的初衷是为了充分利用云平台的技术资源来减轻应用开发非功能业务需求的负担,但同时对应用本身架构的影响也很大。传统的单体应用是无法上面提到的特性的,所以微服务架构是实现云原生应用的必要条件(再说一次,把应用迁移到云平台上的虚拟机里不叫云原生应用)。而成熟度较高的云原生的架构设计要求也更多, 12-Factor 可以作为云原生架构的方法论:

  • 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目;

  • 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性;

  • 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源;

  • 将开发环境和生产环境的差异降至最低,并使用持续交付实施敏捷开发;

  • 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展;

这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。

THE TWELVE-FACTOR APPLICATION

在文章 Beyond the Twelve-Factor App中, Kevin Hoffman 解释了 12 factors (written in 2011). 另外基于现在对于云应用开发的需求又增加了三个要素。

不可变基础设施

云原生架构理想的计算环境是动态的,平台提供的计算资源可以随时快速交付,提升、扩展、迁移或者销毁。并且,整个基础环境变化过程中都是在无人关注的情况下自动实现的。如何实现呢?在DevOps中提出了一个Pets vs. Cattle (宠物和牲口)的概念。

在过去依赖传统的高可靠性基础设施的时代,服务的可靠性依赖于高可靠性的服务器。因此对待服务器就像对待宠物一样,要实时关注服务的状态并精心维护,在系统故障或需要升级的时候需要通过对服务器进行修复、配置实现。但这种模式下,基础设施具有很高的拥有成本,并且初始化,配置的成本也非常高(对于大中型机,甚至重启都是一种奢侈)。

而“牲口”模式下,处理就简单粗暴的多了,如果底层系统故障或者需要升级,直接杀掉然后重新创建一个新的就好了。而云原生架构下底层基础资源采用的就是这种“Cattle”的运维模式,即所谓“「不可变基础设施」”。不可变基础设施里的“不可变”非常类似于程序设计中的“不可变”概念。程序设计中不可变变量(Immutable Variable)就是在完成赋值后就不能发生更改,只能创建新的来整体替换旧的。由于具有这样的特性这种变量可以在并发环境下安全的使用。对于基础设施的不可变性,最基本的就是指运行服务的服务器在完成部署后,就不再进行更改。这一点是通过容器镜像来实现的,其含义就是应用的基础设施应该是不可变的,是一个自包含、自描述可以完全在不同环境中迁移的东西。

Cloud Native Computing Foundation (CNCF)定义了如下的云原生架构模型。

基础设施层(Infrastructure)代表实际的计算资源,包括物理服务器或者虚拟机。提供层(Provisioning)实现对宿主机的管理,包括安装操作系统等。

运行时层(Runtime)主要包括容器运行时环境,包含容器运行时接口(CRI),例如 Docker。容器网络接口(CNI)和容器存储接口(CSI)。

容器编排和管理层(Container orchestration and management)帮助在多宿主机上实现大量容器化应用的部署。Cloud Foundry, Mesos, Nomad和Kubernetes都是流行的容器编排工具。

在应用定义层(Application Definition)开发者负责实现云原生应用的功能,定义应用架构,配置,部署文件,镜像仓库,持续集成/持续交付等。

托管服务

托管服务(managed service)以服务的形式提供如网络、应用、基础设施以及安全功能,并向用户提供持续的支持和底层运维。托管服务的好处就是开箱即用,省去了用户开发相应功能甚至运维的烦恼,一切交给 MSP(managed service provider)。并且在云平台中,服务的交付都是采用 XaaS,即按需付费的方式,所以计费也很灵活方便。

目前成熟的 PaaS 云平台中,都已经提供了相对完善的托管服务列表,如访问控制、数据库、缓存、权限管理、持续集成等,帮助用户尽可能将非功能实现都外移到 PaaS 或 SaaS 服务中,而更加关注业务代码的实现。

云原生架构成熟度模型

如何判断应用架构是不是云原生架构?可以参考阿里的云原生架构成熟度模型(SESORA):

综上所述,云原生架构在系统规模较大、功能较复杂的情况下,可以最大化的分离非功能需求代码实现并充分利用云平台提供的各种资源,但相对的架构要求和复杂度也较高,如何选择还需要开发团队和架构师认真权衡。

参考资料

  • https://github.com/cncf/foundation/blob/master/charter.md

  • https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/definition

  • https://www.infoq.com/articles/cloud-native-architecture/

  • https://www.infoq.cn/article/NZUG7uR1kdwhrIQ05HMM

  • https://www.infoq.cn/article/2017/11/WHAT-SERVICE-MESH-WHY-NEED

  • https://blog.csdn.net/alisystemsoftware/article/details/103370388

  • https://www.gartner.com/en/information-technology/glossary/msp-management-service-provider

  • http://www.uml.org.cn/yunjisuan/202101071.asp

什么是云原生架构?云原生和应用上云不是一码事!相关推荐

  1. 基于云存储网关的Veeam备份归档上云方案

    前言 面对数据可靠性和合规性要求的不断增长,只备份一份数据已经不能满足用户对于数据可靠性的需求.传统备份厂商的异地备份方案是将用户生产环境里的数据备份至不同机柜或者异地机房来保护数据,规避单机房存在的 ...

  2. 条条大路通云端,华为云应用平台ROMA破解传统政企上云困境

    条条大路通云端,华为云应用平台ROMA破解传统政企上云困境 宁川 云科技时代 今天 (华为云CTO张宇昕在2020华为云TechWave技术峰会上发布应用平台ROMA等重磅产品) 到2020年,集成工 ...

  3. DTCC 2020 | 阿里云王涛:阿里巴巴电商数据库上云实践

    简介:第十一届中国数据库技术大会(DTCC2020),在北京隆重召开.大会以"架构革新 高效可控"为主题,重点围绕数据架构.AI与大数据.传统企业数据库实践和国产开源数据库等内容展 ...

  4. 阿里云打好云基础 敬候电商开发者上云

    本文讲的是阿里云打好云基础 敬候电商开发者上云[IT168评论]天猫双11狂欢节,2012年11日零时开始的第一分钟,有超过1000万人涌入天猫平台,该数据是去年同期342万人的近三倍.在双十一全天, ...

  5. 十条最佳上云法则,助你安全无痛上云!

    随着上云的优势日益凸显,越来越多的企业计划将工作负载迁移至云端. 企业上云的最大驱动力来自跨业务垂直领域技术.随着这些技术的采用,云资源投入量也显著上升. 在上云初始阶段,企业之所以决定将其基础设施宿 ...

  6. 轻松上云系列之一:本地数据迁移上云

    本文档围绕如何将您的本地数据迁移到阿里云,提供了多个场景的实践方案. 背景信息 在云计算服务高速发展的今天,如何方便快捷地将已有的服务器系统迁移上云,有着非常重要的意义.阿里云服务器迁移服务方案,即迁 ...

  7. 阿里云上线镜像平台 小白用户轻松上云

    本文讲的是阿里云上线镜像平台 小白用户轻松上云,5月6日,阿里云计算镜像平台正式上线,面向用户提供一键式的云服务器配置服务,帮助"小白用户"轻松上云.该平台将大大降低用户入云门槛, ...

  8. esp32 + DHT11温湿度传感器+阿里云物联网平台实时数据显示 实现设备上云

    1 课设目的 本课设是通过esp32板子搭配DHT11传感器,检测温度和湿度数据通过MQTT协议实时传输到阿里云物联网开发平台,实现设备上云. 2 阿里云环境准备 2.1开通物联网平台 我们先需要注册 ...

  9. Nutanix混合云基础架构现已支持亚马逊云服务(AWS)

    携手AWS,Nutanix Clusters支持应用云间无缝迁移及统一操作,助力企业加速云上旅程 企业云计算领导者Nutanix(纳斯达克:NTNX)今日宣布,Nutanix Clusters现已在亚 ...

  10. 腾讯云首席架构师黄希彤:云时代的编程模式

    [CSDN现场报道]5月13日-15日,由全球最大中文IT社区CSDN主办的"2016中国云计算技术大会"(Cloud Computing Technology Conferenc ...

最新文章

  1. 阿里云智能对话分析服务
  2. 6位图灵奖得主,10多位院士,19个分论坛:北京智源大会邀你共同探索AI下一个十年...
  3. Spark配置高可用(HA)
  4. Android中几种常用的定时器和延时方法
  5. javascript,令人着迷了!
  6. iOS小技巧:用runtime 解决UIButton 重复点击问题
  7. websphere jndi oracle,websphere7.0获得JNDI连接报invalid username/password
  8. 重启php-fpm的方法
  9. 音视频SDP协议简介
  10. 谷歌Pixel 4“浴霸”相机模组细节曝光:包含一枚长焦镜头
  11. 解决js array的key不为数字时获取长度的问题
  12. 3结构介绍_接收机基本结构
  13. 光伏行业缘何抢屋顶?
  14. MVC学习笔记八:WebGrid控件的高级使用
  15. 中华优秀传统文化教育的有效渗透
  16. 必须收藏的文档:TIBCO Spotfire入门大全
  17. 3.超简单模仿算术题
  18. flask自定义过滤器,flash,form表单
  19. 学java用什么电脑_学java用什么电脑比较好?电脑需要什么样的配置?
  20. cad打印黑白图纸,该如何打印呢?

热门文章

  1. Redis、ES、Nginx和RabbitMQ面试回忆
  2. Log4j2漏洞发展历程及解决方案
  3. 《Python 数据科学实践指南》读书笔记
  4. 涨知识了!阿里规定超过三张表禁止join,为啥?
  5. java 实现金额大小写转换
  6. 运动目标检测--背景减法
  7. OpenCV里的常用Rect用法
  8. TiDB 在安信证券资产中心与极速交易场景的实践
  9. 山东省第八届 ACM 省赛 Parity check (规律、水)
  10. 家族文化是一项很重要的文化内涵