解读 | 你真正理解什么是Cloud Native吗?

本文讲的是解读 | 你真正理解什么是Cloud Native吗,【编者的话】什么是cloud-native?cloud-native框架、cloud-native运行时和cloud-native基础设施的自动化又有哪些内容?读完这篇文章,就能有一个大概的了解。

你能做到每周、每天甚至每个钟头向客户发布新特性吗?新加入的开发者能够在他们工作的第一天甚至面试阶段就能部署代码吗?部署新员工的代码后,你能因为确信应用程序运行正常而安然入睡吗?建立快速发布机制,包括支持cloud-native应用的安全与可靠的运维的流程、工具和文化,已经成为软件驱动组织的关键战略因素。有了快速发布机制,这些组织就能在降低风险的同时更快地发布软件。发布软件越快,得到的反馈循环就越紧密,企业就能更有效地响应客户的需要。

持续交付是软件正在变成cloud-native应用的原因:更快地交付软件,降低反馈循环的时间。完全实现cloud-native战略,需要文化和技术两方面的改变,DevOps是应对这些改变的方法。微服务是应用最成功的软件体系架构模式,它扩展了开发和交付操作,避免缓慢、充满风险的单体部署策略。例如,如果还没有建立“快速失败”和“自动优先”的 DevOps 文化,很难成功地实施微服务战略。

持续交付、DevOps和微服务分别描述了cloud-native应用的为什么、怎么做和是什么。这些竞争优势迅速成为玩转软件游戏的赌注。深究起来,上述三个概念纠缠在一起,不可区分。这就是cloud-native的含义所在。

cloud-native能做些什么?

贯穿软件交付生命周期的cloud-native能让用户更有效地运维和扩展,成功拥有“敏捷性”:能够快速为软件添加新功能,同时保持生产环境的稳定性和安全性。cloud-native能做到这一点的原因是它把运行应用程序所需的基础设施、中间件和后台服务完全自动化。

传统的自动化方法建立在面向虚拟化的编排的基础上,需要用户编写定制的自动化脚本。cloud-native完全超越这种自动化方法。真正的cloud-native架构包含完全自主的自动化和编排,用户只需提出自己的需求,不用描述如何做。在一个cloud-native环境中,很难维护临时、专门的自动化。cloud-native架构内置的自动化管理服务起到了契约的作用,执行策略和保证承诺。换句话说,这种自动化使得构建能被自动管理的应用程序变得容易。

新的体系架构方法,要求新的软件开发方法。开发者必须运用新的一系列架构实践——例如微服务和容器——来确保应用程序能被cloud-native平台恰当地管理。cloud-native不仅带来软件开发速度的提升,还有运维方面的好处:方便移植的应用实例,一致的日志记录和保证应用在线和数据流的监控功能。

想要了解cloud-native的好处,一种方法是引入运行时契约,即运行软件的一系列指南。cloud-native框架帮助开发者编写满足云平台运行时契约的应用程序。

cloud-native框架

cloud-native应用的本质是它们满足如下特点的契约:通过可预测的行为,最大化复原。云平台使用的高度自动化、容器驱动的基础设施,引领软件的编写方式。开发者必须改变编码方式,在开发者和运行应用的基础设施之间建立一种新的契约。一个很好的契约例子是十二因素应用

其中,大多数因素的内容有重叠,相互补充。这些因素的描述尽量保证直接和可操作:

  1. 从一个代码库部署到多个环境——一个代码库,包括生产环境软件包,确保了单一的信任源,从而保证了更少的配置错误和更强的容错和复原能力。
  2. 依赖管理是声明式的——云平台根据这些声明管理依赖,确保云应用所需的库和服务。
  3. 配置信息保存在环境中——环境变量是一种清楚、容易理解和标准化的配置方法,特别适合用不同编程语言编写的无状态应用的使用。
  4. 将后台服务视为附加的资源——将每一种资源都视为一种远程的资源,应用因此具有容错和复原能力,因为它一方面要求编码时就要考虑资源不可用的情况,另外一方面也增强微服务方法的好处。
  5. 区分构建、发布和运行阶段——cloud-native应用的构建流程把大部分发布配置挪到开发阶段,包括实际的代码构建和运行应用所需的生产环境配置。
  6. 作为无状态进程运行——尽量保持应用栈每一层的轻量级,保证cloud-native基础设施的速度和效率。
  7. 通过端口绑定对外暴露服务——cloud-native应用的服务接口优先选择 HTTP API 作为通用的集成框架。
  8. 通过添加无状态进程实现横向扩展——强调无状态、无共享的设计,这意味着依赖底层平台就能实现横向扩展,不需要技术难度高的多线程编码。
  9. 快速地启动,优雅地关停——假设任何进程随时都能启动和关停。
  10. 开发、预发布和生产环境运行同样的应用和依赖配置——由于强调自动化和在每个阶段使用同一个云平台,如果每个人用同样的服务器配置,那么“应用在我这里是可以的”就意味着在其他人或者环境那里也是可以的。
  11. 日志输出到标准输出,方便日志聚合和事件响应——当日志是由云平台而不是应用包含的库处理时,日志处理机制必须保持简单。
  12. 临时任务作为短时进程运行——在cloud-native中,管理任务也是一个进程,而不是特别的工具;同样重要的是,管理任务的进程不应使用秘密的 API 或者内部机制。

遵循上述原则的应用程序,具有一致的架构接口。为了使创建的分布式应用马上就可以部署在云中,这些接口的构建采用一种无状态、面向进程的设计模式。 Ruby on Rails 是一种革命性的 web 应用开发框架,它采用强制性的、约定高于配置的方法。从第一版 Rails 发布之日算起,已经九年半过去了,整个业界认识到了遵循约定的框架的威力。

像 Java 的 Spring Boot/Cloud 和 Dropwizard 、Node.js 的 Seneca 框架,甚至包括 Ruby on Rails (外加几个 gem 包)在内,它们都能很好地满足cloud-native契约的要求,这势必节省开发者的时间,让开发者专心编写应用的核心代码——关键业务逻辑,不必费心于支持应用工作的胶水代码。

当应用程序遵循运行时的契约时,弹性的cloud-native运行时就能编排、管理和扩展这些应用。

cloud-native运行时

容器已经成为云运行时的关键组件。容器的轻量本质和强力的资源管理特性,特别适合cloud-native,为之增加了速度和资源效率。容器将一个cloud-native应用打包成一个遵循云平台约定的可执行物件。

与其它进程一样,可在任何一台主机(物理机或者虚拟机,无所谓)上运行很多容器。在开发阶段,把应用构建为一个容器,使得开发者编码和创建完整构建的周期大大缩短,这甚至运行开发者在他们的笔记本电脑上运行一个开发云,最大程度地减少了在生产环境的云运行时无法正常运行的可能性。在生产环境中,容器提供的关键好处包括更好的进程间安全、稳定性和准确地预测每个进程消耗的资源。更进一步,还能预报由于增长带来的基础设施耗费。

要有效地使用容器,就必须实现容器编排。编排是指无需人工交互和规划,就能启动、关停和分发容器到计算资源池中;一个弹性运行时。编排是对部署请求、自动扩展的流量分析、甚至是基础设施失效的响应。完整的容器编排还要做到检测和回滚变化,管理生产环境中应用的不同版本来完成 A/B 测试和每日部署。打包容器只是cloud-native架构需求的一部分:编排和管理容器在生产环境中的部署和运行,这比容器的打包重要得多。

随着前述cloud-native框架的兴起,容器编排的属性最近获得了很多关注。容器运行时需要做到:

  1. 管理容器的生命周期,包括创建、运行和摧毁——强有力地控制运行在生产环境中每一个容器的生命周期,有助于实现应用的按需自动扩展。
  2. 通过约束保证资源利用是可预测的——细粒度控制每个容器实例使用的资源。
  3. 进程隔离——使用内核级别的命名空间和本地文件系统,确保不同容器的进程之间是隔离的。
  4. 通过编排实现资源的最优利用——给定一个资源池(通常是虚拟机集群),容器编排使得应用负载分布在整个资源池中。
  5. 检测错误和从失效中恢复的方法——在生产环境中,出错是难免的。编排平台必须能检测到关键组件的失效,自动移除工作不正常的容器实例和基础设施,重新部署应用,以避免宕机。

通过使用 API ,cloud-native运行时能够在各种不同的基础设施上运行,不与特定的基础设施绑定。管理良好的、自动化的基础设施使得cloud-native架构更具有容错和恢复能力。

cloud-native基础设施的自动化

如果基础设施自动化做得好,生产环境架构的管理几乎不需要人工干预。

健壮自动化几乎能处理传统IT中需要手工处理的所有事情:当应用实例增减时更新路由器和负载均衡组件,部署应用所需的供应和联网服务,分配新的基础设施,设置监控和灾后恢复服务,日志聚合,当基础设施失效时重新部署应用。

像上面这些高级自动化实践,能把你从应对零日危险的痛苦中拯救出来:自动化采用滚动更新的方式,为每一个节点打上安全补丁,同时又保证服务一直在线。

这种水平的自动化是由结构化平台提供的。

从概念层次上,每一个结构化平台都必须包括:

  1. 路由和负载均衡——应用的横向扩展需要网络路由,路由是可以动态更新的,它把外来请求分散到整个资源池。
  2. 后台服务代理——大部分应用都需要各种后台服务,包括数据库、缓存和消息队列。这些服务必须是高可用的服务,通过环境变量进行配置,以便满足十二因素约定中对配置的要求。
  3. 基础设施编排——平台必须能自动管理基础设施,提供弹性扩展的计算资源。
  4. 健康管理、监控和恢复——可视化显示正在运行的应用和实例,以及当事件发生时的通知消息和审计日志。
  5. 可复用的运行时环境仓库——应用以容器镜像的形式发布,重复用于启动应用实例,这保证了整个架构同一个应用的所有实例是完全一样的。
  6. 日志聚合——高可用、横向扩展的应用需要聚合所有实例的日志,用于分析和响应发生的事故。

cloud-native基础设施编排提供了直到基础设施的结构化平台。这是与底层 API 集成的一层;也是cloud-native架构的基础,cloud-native架构支撑了运行时编排的安装、扩展、管理和更新。

以上是对成功交付cloud-native应用的理论思考的概述。cloud-native在加速软件交付的同时,降低了运维中的修正代价,无论是时间还是压力方面。如果部署和运维的代价高,持续交付和微服务是站不住脚的。这里主要关注工具的功能,但是不能低估所需要的高度信任文化和过程。(有人甚至认为文化和过程是更为关键的成功因素,那需要讨论的内容就更多了)。

cloud-native如此

那些想把持续交付的速度和好处最大化的人,需要支持cloud-native应用的体系架构,作为贯穿整个软件交付周期的使能技术。应用是用满足cloud-native运行时契约要求的cloud-native框架构建的,cloud-native基础设施自动化大大改变了组织交付软件的能力。这个平台还包括用以实现持续交付、敏捷开发和 DevOps 运动的生产环境承诺的实践和过程;云基础设施的可用性和可靠性。

cloud-native做到了稳定性和敏捷性兼顾。有了cloud-native架构,就可以像Netflix这样的cloud-native公司一样,拥有相同的功能、灵活性、速度和安全性。最终你就有时间欣赏此前错过的动画片《我的小马驹:友谊是神奇的》。

原文链接:The cloud-native future (翻译:柳泉波)

原文发布时间为:2015-09-20

本文作者:bnuhero 

本文来自合作伙伴DockerOne,了解相关信息可以关注DockerOne。

原文标题:解读 | 你真正理解什么是Cloud Native吗?

时间: 2024-10-24 18:32:40

解读 | 你真正理解什么是Cloud Native吗?的相关文章

云原生(Cloud Native)- 移动App研发新范式

什么是云原生(Cloud Native)App 云原生的话题近期异常火热,对于它的概念,大家也有不同的解读.从我个人的视角而言,云原生代表了一种应用构建的方法论:如何最大程度地利用云计算服务模型的优势低成本.快速地构建一款弹性的应用.本质上而言,云原生的研发模型旨在降低业务的技术风险,让开发者的形态更单纯.专注: 所有的运行环境透明化,按需扩展: 所有的研发流程流水化,高效交付: 所有的基础设施服务化,按量付费: 云原生应用 我们通常意义下的云原生应用意指传统的后端应用,Container.Mi

The Twelve-Factor在Cloud Native时代是否依然适用?

按语 Heroku是云应用平台的先驱,从对外提供服务以来,他们已经有上百万应用的托管和运营经验.其创始人Adam Wiggins根据这些经验,提出了十二要素应用宣言 .The Twelve-Factor App定义了一个优雅的互联网应用在设计过程中,需要遵循的一些基本原则. 不过, The Twelve-Factor是在特定的时期,针对特定的平台实践所总结出来的.12元素依然璀璨,很多原则依然具有普适性:但是在应用全面迁移到云端的今天,Cloud Native时代的应用开发,需要有更多与时俱进的

当红架构Cloud Native,怎么搭建才能成为上云助攻手?

作者:陈谔,网易云基础服务总经理,现负责网易云计算平台产品线建设,对分布式系统设计开发.云计算平台系统架构有一定的经验和理解.近年来致力于带领团队推进公司开发技术栈的标准化.工具化.   网易云基础服务团队:网易云基础服务拥有优质的硬件资源,经验丰富的研发运维团队,为各类客户提供IaaS.PaaS服务.同时深度整合Docker与Kubernetes技术,打造专业的容器服务.   如何让云成为业务成功的基石而不是障碍,是技术团队需要不断思考的问题,Cloud-Native正是一种让业务技术架构向云

什么是Cloud Native?

本文讲的是什么是Cloud Native?[编者的话]本文通过一些例子和场景很好的诠释了Cloud Native概念和用途.特别是在工作原理方面,不是关注于技术细节,而是着眼于理论层面,给企业的管理者一个对Cloud Native的足够高度的概括.作为一个PaaS平台的爱好者,我能够感受到原文作者的Cloud知识储备和深厚的运维管理经验. [深圳站|3天烧脑式Kubernetes训练营]培训内容包括:Kubernetes概述.架构.日志和监控,部署.自动驾驶.服务发现.网络方案等核心机制分析,进

移动云Apsara Mobile震撼发布!推出Cloud Native App全新研发范式

近日,阿里巴巴在2017杭州·云栖大会上重磅发布了阿里云移动云Apsara Mobile.阿里云移动云是一套帮助开发者构建工程化.系统化.智能化的移动研发体系能力的云计算服务,功能覆盖移动研发的全生命周期.同时,大会首次向业界提出Cloud Native App的移动研发新范式,旨在帮助开发者最大程度地利用云计算服务模型的优势,低成本.快速地构建移动应用. Apsara Mobile着眼移动研发的整个生命周期:将研发阶段的效能提升2倍,100%覆盖主流机型从而获得更全面化的测试,将构建的版本发布

阿里云移动云Apsara Mobile重磅发布 推出Cloud Native App全新研发范式

10月13日,阿里巴巴在2017杭州·云栖大会上重磅发布了阿里云移动云Apsara Mobile.阿里云移动云是一套帮助开发者构建工程化.系统化.智能化的移动研发体系能力的云计算服务,功能覆盖移动研发的全生命周期.同时,大会首次向业界提出Cloud Native App的移动研发新范式,旨在帮助开发者最大程度地利用云计算服务模型的优势,低成本.快速地构建移动应用. Apsara Mobile着眼移动研发的整个生命周期:将研发阶段的效能提升2倍,100%覆盖主流机型从而获得更全面化的测试,将构建的

构建Cloud Native时代,探索运营商网络转型之路

在6月28日开幕的2017年世界移动大会(MWCS 2017)上,中国移动通信研究院展示了与英特尔和中兴通讯共同推进的,基于容器技术支持NFV应用微服务化的最新研究成果.在这个三方共同参与的项目中,英特尔提供了支撑和运行微服务化NFV应用的容器方案,还支持中兴通讯开发了Cloud Native的vEPC应用,用于该方案的测试验证.中国移动通信研究院则为该项目的测试提供了支持. Cloud Native + NFV:计算与通信加速融合 在2G.3G.4G时代,运营商建网主要针对的是消费者利用个人信

分布式调度中间件Elastic-Job 2.1.0发布:Cloud Native里程碑版本

Elastic-Job 是什么?Elastic-Job是一个开源的分布式调度中间件,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成. Elastic-Job-Lite为轻量级无中心化解决方案,使用jar包提供分布式任务的调度和治理. Elastic-Job-Cloud是一个Mesos Framework,依托于Mesos额外提供资源治理.应用分发以及进程隔离等服务. 项目已开源接近2年,目前为止已更新发布16次.Elastic-Job已在分布式作业

小团队能做大系统:Cloud Native云原生架构实践

在2017云栖大会-成都峰会上,阿里云存储服务产品经理大邪做了题为<小团队能做大系统:Cloud Native云原生架构实践>的分享.由于Cloud Native基于云计算的能力,可以实现微服务模式,使得DevOps可以利用Cloud Native的微服务器架构以实现松耦合.高内聚的产品.云能够提供弹性能力.基础运维.原生服务等基础能力,可以利用云上构建无限扩容架构.