走向云原生:你需要知道的6件大事

您是否刚刚开始数字化转型之旅,还在疑惑什么是云原生,以及为什么需要云原生?本文讨论了关于云原生这个术语的关键要点。它还介绍了你如何利用云原生功能来加快开发团队的生产力,提高公司的创新产出。

1. 云原生简史

云原生有很多不同的含义。十年前,它是由Netflix这样的公司创造的,他们利用云技术,从一家邮购公司发展成为世界上最大的消费者点播内容交付网络之一。Netflix开创了我们所说的云原生,重塑、改造和扩展了我们都想做的软件开发方式。
随着Netflix的惊人成功,以及他们能够更快地为客户提供更多的功能,企业想知道Netflix是如何利用云原生技术获得如此巨大的竞争优势的。
在其核心,云原生一词是一种提高业务速度的方法,也是一种构建团队以利用Kubernetes等云原生技术所提供的自动化和可扩展性的方法。

2. 云原生架构:它看起来什么样?

单体应用vs微服务架构
在经历了一个分号错位的灾难性版本后,前Netflix云架构师Adrian Cockcroft将他们的整个架构从单体转向了微服务。
单体架构的问题是,当开发和测试新功能时,需要花费大量精力将这些变化部署到生产中:

  • 多个团队需要协调他们对代码的更改。
  • 一次部署多个功能需要大量的前期集成和功能测试。
  • 开发团队被限制使用某一种或两种语言。

向微服务的转变使Netflix的开发人员能够更快地向客户提供新功能。
微服务的结果是,面向服务的架构是松耦合的,有边界的上下文。这意味着,如果每个服务都要同时更新,那就不是 "松耦合";同样的道理,如果你要知道太多周围的服务,那么你就没有 "有界上下文"。也可以参考Martin Fowler和James Lewis的原创博客,讨论这个定义。"Microservices: a definition of this new architecture term".
微服务,Docker & Kubernetes
Docker容器很适合微服务。通过在不同的容器中运行微服务,它们都可以独立部署,如果你愿意,甚至可以用不同的语言部署。容器化消除了语言、库或框架之间任何摩擦或冲突的风险。由于容器是可移植的,并且可以相互隔离地运行,因此使用容器创建微服务架构并在需要时将其移动到另一个环境中是非常简单的。
容器编排
一旦你有大量的微服务都运行在Docker容器中,你就需要一种方法来管理或协调这些容器,使它们作为一个应用变得有意义。这时你需要一个协调器(集群管理器),比如Kubernetes或Docker Swarm或其他。
在过去的一段时间里,你必须对使用哪个编排器做出明智的选择,但现在编排战争已经赢了,谷歌的Kubernetes拔得头筹。所有主要的云提供商都支持Kubernetes,并提供易于安装的解决方案。
这次讨论的要点是,大多数公司要想具有竞争力,就必须围绕微服务来架构自己的应用,并在Kubernetes集群中运行--尽管有些公司也会在其他编排器上运行Docker容器。
自动部署
随着应用程序在容器中运行并在Kubernetes中编排,下一步就是自动化部署。 持续的自动化功能流是DevOps与其他软件开发理念和实践的区别,比如瀑布模型,在瀑布模型中,开发遵循有序的阶段顺序。
持续并不意味着工程师们24小时不间断地更新代码,也不意味着每修改一行代码就部署更新一次。在这个意义上,持续是指通过自动化的持续集成和持续部署管道(CICD)定期推出软件变更和新功能。 在电子书中找到更多构建CICD流水线的DevOps策略:《GitOps实用指南》。
监控
随着容器和微服务的发展,监控解决方案必须管理比以往更多的服务和服务器。不仅有更多的对象需要管理,而且云原生应用也会产生大量需要跟踪的额外数据。
从一个由如此多的移动部件组成的环境中收集数据是很复杂的。Prometheus是这些动态云环境的最佳现代解决方案。它是专门为监控在容器中大规模运行的应用程序和微服务而构建的,并且是容器化环境的原生产品。请参阅文章--用Prometheus监控Kubernetes
文化变化
在组织中成功实施云原生技术和DevOps最佳实践在很大程度上取决于你现有的公司文化。内部团队不仅要学会采用跨职能的方法,确保软件以持续的节奏进行迭代,而且还要确保软件与公司的业务目标相辅相成。 实际转向云原生可能是你的旅程中最简单的部分;将这些变化坚持下去并在整个组织中宣传它们可能是这个过程中最困难的部分。

3. 企业采用云原生栈的好处

企业采用云原生的首要好处可以总结为以下几点:
提高敏捷性和生产力
通过GitOps和DevOps最佳实践,开发人员使用全自动持续集成持续交付管道(CICD)快速测试并将新代码推送到生产中。企业可以在几分钟或几小时内将新的想法投入生产,而不是几周或几个月,从而提高创新率和竞争力。
提高可扩展性和可靠性
按需弹性扩展或云突发提供计算、存储和其他资源的近乎无限的扩展。 企业可以利用内置的可扩展性来匹配任何需求状况,而无需额外的基础设施规划或配置。
GitOps 和 DevOps 最佳实践为开发人员提供了一种低风险的方法来还原变更,为创新扫清了障碍。 由于能够干净利落地回滚,在集群崩溃的情况下,从灾难中恢复的速度也更快。更高的正常运行时间保证意味着企业更具竞争力,可以提供更严格的服务水平协议和更好的服务质量。
降低成本
由于云原生技术可实现按使用付费模式,因此规模经济得以传递,并将支出从资本支出转移到运营支出。 这种较低的前期 CAPEX 支出进入门槛使得更多的 IT 资源可以用于开发而不是基础设施。 此外,总体总体拥有成本/托管成本也将降低。
吸引和保留顶尖人才
使用云原生技术和其他前沿的开源技术工作,让您的移动速度更快,在基础设施上花费的时间更少,这对开发人员来说很有吸引力。 雇用更高质量的开发人员会带来更好的产品,从而为您的业务带来更多创新。另一个额外的好处是,开源贡献可以帮助建立您作为技术领导者的声誉。
减少供应商锁定
云原生为您提供了多种工具选择,而无需受困于传统产品。 通过尽可能地利用多云兼容的工具,您的应用程序更具可移植性,且不受供应商掠夺性定价的影响。 您可以轻松地迁移到具有更好的产品供应或合规性需要多云基础设施的备用公共云。

4. 云原生实践

隐形的基础设施意味着便携性和速度
大多数公司希望将应用程序迁移到云端,但他们也可能希望将一些应用程序或数据保留在防火墙后和内部。有些人可能希望能够更换云提供商,以利用更好的定价模式,或者他们可能需要遵守合规性规定并跨越多个云提供商。 对于应用程序如此容易移植,企业要求他们的系统只是工作,因此他们可以通过发布新的应用程序和功能,而不是投资基础设施,回到建立业务价值。
正在进行数字化转型的企业,以及需要推动业务发展以提高竞争力的企业,都对创建我们所说的,隐形基础设施感兴趣。为了更快地移动,你需要一种简化基础设施变化的方法,以便开发人员可以专注于创新和构建新功能,而无需开销。 最终的目标是让开发人员永远不写基础设施代码,而是专注于功能。 当基础架构摩擦减少时,企业就会更加敏捷,更具竞争力。
所以,当我们说到应用是云原生的时候,从根本上说的是可扩展性、可移植性和开发速度。
提高速度意味着更敏捷的业务
从业务角度来看,云原生的回报是应用程序始终处于开启状态,高度可用,可以由您的开发团队在零停机时间内进行更新。云原生应用程序允许您的开发团队在客户提出请求时或多或少地处理这些请求,而不是等待数周。 提高速度和敏捷性是这种新型现代应用、架构和实践的主要特点和优势。
开发人员可以实践持续交付
采用云原生的公司已经将其平均部署时间从每周1或2次部署增加到每天150次以上的部署。 如果你的网站出现故障,你可以在5分钟内修复它,而不是让你的客户离线。
快速移动的能力是那些不断改变和更新其应用程序的人与那些努力对其网站进行小规模更改的人之间的主要区别之一。你可以量化持续交付,这也是人们对Airbnb和Netflix等独角兽公司如此兴奋的原因之一,他们已经明白了这一点。
云原生是大多数公司都意识到并认识到很重要的东西。 当然,棘手的部分是将这些知识民主化和分发?我们如何让每个人都能使用这项技术,而不仅仅是硅谷的精英科技公司?

5. CNCF的角色

云原生计算基金会(CNCF)成立于四年前,是Kubernetes--一个用于自动化部署以及扩展和管理应用程序的开源系统--的厂商中立之家。 Kubernetes最初是由谷歌创建的,用于运行他们的搜索引擎,但今天它有来自亚马逊、微软和思科以及其他300多家公司的贡献。
有了Kubernetes,构成应用的容器被归入逻辑单元,便于管理和发现。它可以随着你的应用进行扩展,而不需要你为你的运维团队增加更多的资源。
除此之外,还可以安全地进行自动部署以及多个同时部署。这种新的发布和产品更新方式对于大多数人来说都是一个非常新的概念。而这些理念都是被称为云原生革命的一部分。
CNCF的主要使命是围绕着支持和管理基于Kubernetes构建的云原生应用容器的高质量项目群,建立可持续的生态系统和社区。
除了托管和支持新的云原生项目外,CNCF还提供培训、技术监督委员会、管理委员会、社区基础设施实验室和一些认证项目。
共同的云平台
为了将数字解决方案引入不同的商业环境,开发人员将需要停止担心底层基础设施,而是专注于应用程序和其他功能,以直接增加底线的价值。 这让我们想到了CNCF的一个重要目标,那就是建立一个通用的开放云原生平台和工具包,企业可以很容易地在其组织内部采取和调整。
为使这一共同平台成型,我们需要以下几点:

  • 提供可扩展性的物理基础设施,同时允许您的应用在任何地方运行,无论是在公有云中还是在内部或两者兼有。
  • 一个通用的云技术平台,为这个下一代应用提供一套可插拔的工具。一个具有可插拔工具的平台,可以让你轻松地在云端运行云原生应用。
  • 在数据分析、机器学习、金融、无人机、汽车、物联网、医疗、通信和其他业务垂直领域采用和发展许多现代云原生架构,以获得新的机会。

现成的云原生组件
通过利用CNCF中的许多孵化项目,你可以轻松地建立基础设施,为你的团队创新奠定基础。 在云原生技术之前,在你的单体平台上添加一个新的业务组件意味着雇佣一支顾问队伍,即便如此,也需要九个月的时间来实施。
但现在,通过使用CNCF的社区支持组件的景观,可以节省很多时间。这使您可以专注于手头的任务,这可能是将机器学习或其他数据科学方法引入您的业务中,以推动创新。

6. 云原生与DevOps的关系

DevOps和持续交付
云原生使我们在如何进行软件开发方面有了一套全新的方法和理念,也就是所谓的文化转变,即DevOps。有了一套新的工具,团队自然会摸索出新的使用方法。这种情况经常发生在新一代的开发人员身上,他们带着全新的眼光和对一套旧问题的无污染处理。 特别是,云原生技术导致了新的持续交付工具和方法的实施,帮助你加快开发速度。
速度是持续交付的关键
提供持续交付组件(其中包括)的Kubernetes平台可以实现速度,而且它们还降低了进入壁垒。有了持续交付,你的团队可以全天部署变更,而不是按季度或按月部署。持续交付还提供了一种机制,可以随时回滚变更。 有了持续交付管道,开发可以直接从源代码到生产进行更改,但更重要的是,他们也有能力同样轻松地恢复和退出更改。
连续部署变更的能力意味着您的团队可以更轻松地将测试部署到客户的子集或推出特定的客户请求。而且由于回滚只需点击一下,开发人员可以更快地从失败中恢复。
这与15年前的软件开发截然不同,当时部署一个变更需要付出巨大的协调努力。 有了Kubernetes这样的云原生技术,以及其他支持项目,持续部署变更是微不足道的,因为这种技术使之成为可能。
云原生push代码而不是容器-GitOps
云原生非常适合GitOps风格的部署。作为构建云原生应用的运营模式,GitOps将部署、监控和管理统一起来。
GitOps的目标是加快开发速度,使您的团队能够安全可靠地对运行在Kubernetes中的复杂应用进行更改和更新。 它使用开发人员熟悉的工具和工作流程来实现这一目标。 关于GitOps的更多信息,请参见《GitOps - 你需要知道的》。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值