根据您的要求,云原生可能意味着很多不同的事情。十年前,云原生一词是由 Netflix 等利用云技术的公司创造的,从一家邮购公司发展成为世界上最大的消费者点播内容交付网络之一。 Netflix 开创 了我们所谓的云原生模式,重塑、转变和扩展了我们所有人都希望以何种方式进行软件开发。
随着 Netflix 的巨大成功及其更快地向客户提供更多功能的能力,公司想知道云原生技术如何帮助 Netflix 获得如此巨大的竞争优势。
那么,为什么云原生如此重要? 从 本质上讲,云原生 是一种提高业务速度的方法,也是一种构建团队以利用 Kubernetes 等云原生技术提供的自动化和可扩展性的方法。
在一个错误的分号发布灾难性版本之后,前 Netflix 云架构师 Adrian Cockcroft 将他们的整个架构从单体架构转变为微服务。
单体架构的问题在于,在开发和测试新功能时,将这些更改部署到生产环境需要付出很多努力:
多个团队必须协调他们的代码更改。
一次部署多个功能需要大量的前期集成和功能测试。
开发团队仅限于使用一种或两种语言。
向微服务的转变使 Netflix 开发人员能够更快地向他们的客户提供新功能。
微服务导致松散耦合的面向服务的架构与有界上下文。这意味着如果每个服务都必须同时更新,它就不是“松散耦合”。同样,如果您必须对周围的服务了解太多,那么您就没有“有界上下文”。另请参阅 Martin Fowler 和 James Lewis 讨论定义的原始博客: “微服务:这个新架构术语的定义”。
Docker 容器非常适合微服务。通过在多带带的容器中运行微服务,它们都可以独立部署,甚至可以使用不同的语言。容器化消除了语言、库或框架之间任何摩擦或冲突的风险。由于容器是可移植的并且可以彼此隔离运行,因此使用容器创建微服务架构并在需要时将它们移动到另一个环境非常简单。
一旦你有大量的微服务都在 Docker 容器中运行,你需要一种方法来管理或编排这些容器,以便它们作为应用程序有意义。这就是您需要 Kubernetes、Docker Swarm 或其他编排器(集群管理器)的地方。
过去,您必须对使用哪个编排器做出明智的选择,但现在编排大战已获胜,谷歌的 Kubernetes 脱颖而出。所有主要的云提供商 都通过易于安装的解决方案支持 Kubernetes。
本次讨论的要点是,对于大多数公司来说,要具有竞争力,他们必须围绕微服务构建应用程序并在 Kubernetes 集群中运行它们——尽管有些公司也在其他编排器上运行 Docker 容器。
随着在容器中运行并在 Kubernetes 中编排的应用程序,下一步是自动化部署。持续自动化的功能流是 DevOps 与其他软件开发理念和实践的区别,例如瀑布模型,其中开发遵循有序的阶段序列。
持续并不意味着工程师正在 24/7 更新代码,或者他们在每次更改代码行时部署更新。从这个意义上说,持续是指通过自动持续集成和持续部署管道 (CICD) 定期推出的软件更改和新功能。在电子书: GitOps 实用指南中查找更多用于构建 CICD 管道的 DevOps 策略。
借助容器和微服务,监控解决方案必须管理比以往更多的服务和服务器。不仅有更多的对象需要管理,而且云原生应用程序还会生成大量需要跟踪的额外数据。
从由许多移动部件组成的环境中收集数据是很复杂的。Prometheus 是这些动态云环境的最佳现代解决方案。它是专门为监控在容器中大规模运行的应用程序和微服务而构建的,并且是容器化环境的本机。
阅读有关使用 Prometheus 进行 Kubernetes 监控的更多信息。
在您的组织中实施云原生技术和 DevOps 最佳实践的成功很大程度上取决于您现有的公司文化。内部团队不仅必须学会采用跨职能方法,以确保软件以连续的节奏迭代并补充公司的业务目标。实际切换到云原生可能是您旅程中最简单的部分。让这些改变坚持下来并在整个组织中传播很可能是这个过程中最困难的部分。
在我们的白皮书《生产就绪 Kubernetes 集群指南》中了解生产就绪的五个步骤,包括您需要对团队进行的文化改变,以及在生产中使用 Kubernetes 时要考虑的最重要的要求。
企业采用云原生的最大好处可以总结如下:
借助 GitOps 和 DevOps 最佳实践,开发人员可以使用全自动持续集成 持续交付管道 (CICD) 快速测试新代码并将其推送到生产环境。企业可以在几分钟或几小时内(而不是几周和几个月)将新想法带入生产,从而提高创新率和竞争力。
按需弹性扩展或云爆发提供了近乎无限的计算、存储和其他资源扩展。企业可以利用内置的可扩展性来匹配任何需求配置文件,而无需额外的基础架构规划或配置。
GitOps 和 DevOps 最佳实践为开发人员提供了一种还原更改的低风险方法,为创新扫清了道路。凭借干净回滚的能力,在集群崩溃的情况下从灾难中恢复也更快。更长的正常运行时间保证企业更具竞争力,并可以提供更严格的服务水平协议和更好的服务质量。
由于云原生技术 支持按使用付费模式,规模经济得以传递,并将支出从 CAPEX 转移到 OPEX。这种前期 CAPEX 支出的较低准入门槛允许更多的 IT 资源用于开发而不是基础设施。此外,总体 TCO/托管成本也将更低。
使用云原生和其他尖端开源技术可以让您更快地移动并在基础设施上花费更少的时间,这对开发人员很有吸引力。雇用更高质量的开发人员会产生更好的产品,从而为您的业务带来更多创新。额外的好处是开源贡献可以帮助建立您作为技术领导者的声誉。
云原生为您提供了多种工具选择,而不会被遗留产品所束缚。通过尽可能利用多云兼容工具,云原生应用程序更加便携,并且超出了供应商掠夺性定价的范围。您可以轻松迁移到具有更好产品的替代公共云或合规性需要多云基础架构的地方。
大多数公司都希望将应用程序迁移到云端,但他们也可能希望将一些应用程序或数据保留在防火墙后面和内部部署。有些人可能希望能够改变云提供商以利用更好的定价模型,或者他们可能需要遵守合规性法规并跨越多个云提供商。为了使应用程序如此易于移植,企业要求他们的系统能够正常工作,这样他们就可以通过发布新的应用程序和功能而不是投资于基础设施来重新建立业务价值。
“我们需要停止编写基础架构……总有一天会有一群开发人员不再编写基础架构代码。就像你们中可能没有多少人制造计算机一样。” - Weaveworks 首席执行官 Alexis Richardson
进行数字化转型的企业以及需要推动业务发展以保持竞争力的企业都对创建我们所说的无形基础设施感兴趣。为了加快步伐,您需要一种简化基础架构更改的方法,以便开发人员可以专注于创新和构建新功能而无需开销。最终目标是让开发人员永远不要编写基础设施代码,而是专注于功能。当基础设施摩擦减少时,企业将更加敏捷和具有竞争力。
因此,当我们谈论应用程序是云原生时,我们从根本上谈论的是可扩展性、可移植性和开发速度。
从业务的角度来看,云原生的回报是应用程序始终处于打开状态,高度可用,可以由您的开发团队在零停机时间的情况下进行更新。云原生应用程序允许您的开发团队或多或少地处理客户的请求,而不是等待数周。提高速度和敏捷性是这种新型现代应用程序、架构和实践的主要特征和优势。
采用云原生的公司已将平均部署时间从每周 1 或 2 次部署增加到每天 150 多次部署。如果您的网站出现故障,您可以使用云原生在五分钟内修复它,而不是让您的客户离线。
快速移动的能力是那些不断更改和更新其应用程序的人与那些努力对其网站进行小幅更改的人之间的主要区别之一。您可以量化持续交付,这就是人们对 Airbnb 和 Netflix 等独角兽公司如此兴奋的原因之一,它们已经弄清楚了这一点。
云原生是大多数公司都知道并认为很重要的东西。当然,棘手的部分是使知识民主化和传播。我们如何让所有人都能使用这项技术,而不仅仅是硅谷的精英科技公司?
云原 生计算基金会 (CNCF) 成立于 2015 年,是 Kubernetes 的供应商中立之家——一个用于自动化部署以及扩展和管理应用程序的开源系统。Kubernetes 最初是由谷歌创建来运行他们的搜索引擎的,但今天它得到了亚马逊、微软和思科以及 300 多家其他公司的贡献。
使用 Kubernetes,构成应用程序的容器被分组为逻辑单元,以便于管理和发现。它可以随您的应用程序扩展,您无需向 Ops 团队添加更多资源。
除此之外,还可以安全地进行自动部署以及多个同时部署。这种发布和产品更新的新方式对大多数人来说是一个非常新的概念。所有这些想法都是所谓的云原生革命的一部分。
CNCF 的主要任务是围绕一系列 高质量项目 构建可持续的生态系统和社区,这些项目支持和管理基于 Kubernetes 构建的云原生应用程序的容器。
除了托管和支持新的云原生项目外,CNCF 还提供培训、 技术监督委员会、管理委员会、社区基础设施实验室和多个认证计划。
为了将数字解决方案引入不同的业务环境,开发人员需要停止担心底层基础设施,转而专注于为底线增加直接价值的应用程序和其他功能。这将我们引向 CNCF 的一个重要目标,即构建一个通用的开放式云原生平台和工具包,企业可以轻松地在其组织内采用和适应。
为了使这个通用平台成型,我们需要以下内容:
提供可扩展性的物理基础设施,还允许您的应用程序在任何地方运行,无论是在公共云中还是在本地或两者兼而有之。
一个通用的云技术平台,具有用于下一代应用程序的一组可插拔工具。一个具有可插拔工具的平台,可轻松在云中运行云原生应用程序。
许多现代云原生架构的采用和开发为数据分析、机器学习、金融、无人机、汽车、物联网、医学、通信和其他垂直业务领域带来了新机遇。
通过利用 CNCF 中提供的许多孵化项目,您可以轻松设置基础架构并为您的团队创新奠定基础。在云原生技术出现之前,向您的单体平台添加一个新的业务组件意味着要雇佣一支顾问团队,即便如此,也需要 9 个月的时间来实施。
但是现在通过使用CNCF 的 社区支持组件环境可以节省大量时间 。这使您可以专注于手头的任务,可以将机器学习或其他数据科学方法引入您的业务以推动创新。
云原生让我们找到了一套全新的软件开发方法和理念,也就是所谓的 DevOps 文化转变。有了一套新工具,团队自然会想出使用它们的新方法。这通常发生在新一代开发人员身上,他们以全新的眼光和对旧问题的纯洁旋转。特别是,云原生技术已经导致新的持续交付工具和方法的实施,这些工具和方法可以帮助您加快开发速度。
提供持续交付组件(以及其他)的 Kubernetes 平台可以提高速度,同时也降低了进入门槛。有了持续交付,您的团队可以全天部署变更,而不是每季度或每月一次。持续交付还提供了一种在需要时回滚更改的机制。有了持续交付管道,开发人员可以直接从源代码到生产进行更改,但更重要的是,他们还能够轻松地恢复和退出更改。
持续部署更改的能力意味着您的团队可以将测试部署到客户子集或更轻松地推出特定客户请求。而且由于只需单击一下即可回滚,因此开发人员可以更快地从故障中恢复。
这与 15 年前的软件开发非常不同,当时需要大量的协调工作来部署单个更改。借助 Kubernetes 等云原生技术和其他支持项目,持续部署更改是微不足道的,因为这项技术使之成为可能。
“基于容器的基础设施和微服务为软件部署提供了前沿,为希望提供大规模可扩展、灵活和分布式应用程序的企业创造了巨大的潜力。最近,他们开始将 Kubernetes 标准化为单一目标架构,从而为围绕特定部署目标调整 DevOps 实践创造机会。” 约翰、柯林斯、GigaOm
阅读完整报告“云原生世界中的 DevOps 编排”。
云原生非常适合 GitOps 风格的部署。作为构建云原生应用程序的操作模型,GitOps 统一了部署、监控和管理。
GitOps 的目标是加快开发速度,以便您的团队可以安全可靠地对 Kubernetes 中运行的复杂应用程序进行更改和更新。它使用开发人员熟悉的工具和工作流程来执行此操作。有关 GitOps 的更多信息,包括它与云原生应用程序的关系,请参阅 GitOps - 您需要了解的内容。
使用 Weave GitOps 快速上手。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/127816.html
摘要:阿里云弹性计算作为计算能力的基础,今年做的最重要的件事。未来阿里云将在这两件事上,不断发力,将普惠的云真正的带给大家。 摘要: 阿里云研究员褚霸在LC3大会上同多位业界资深大咖同台交流表示,阿里云发展到今天,把过去应对淘宝、天猫大规模计算以及双11的计算能力转换成普惠的能力放在云上,这是一个非常大的挑战,也是其他厂商没有经历过的。这些挑战不断帮助阿里云积累经验,提升技术能力。 6月25...
摘要:正在走远,新年之初,小数精选过去一年阅读量居高的技术干货,从容器到微服务云原生,汇集成篇精华集锦,充分反映了这一年的技术热点走向。此文值得收藏,方便随时搜索和查看。,小数将继续陪伴大家,为朋友们奉献更有逼格的技术内容。 2017正在走远,新年之初,小数精选过去一年阅读量居高的技术干货,从容器、K8S 到微服务、云原生、Service Mesh,汇集成52篇精华集锦,充分反映了这一年的技...
摘要:自从微软和宣布合作以来,微软一直在容器上面的战略可谓稳扎稳打。最近,微软加入,并作为创始成员承诺支持常见容器的格式和运行。这种定位导致大家对于微软容器战略的认识模糊。微软的容器策略并不是可移植性说的直白一点。 自从微软和Docker宣布合作以来,微软Redmond一直在容器上面的战略可谓稳扎稳打。最近,微软加入Open Container Initiative (OCI),并作为创始成...
摘要:然而,在物联网时代,我们是负担不起那么多在云端的计算能力的。物联网革命已然到来。年,物联网制造商将摒弃云唯一模型,转向一种新型的名为雾计算的模型,以下是迫使他们采取这一行动的三个关键的事实。雾计算寻求处理能力时,它不关心计算机是否在云端。然而,在物联网时代,我们是负担不起那么多在云端的计算能力的。物联网革命已然到来。从可穿戴设备到智能家居,再到工业互联网,连接设备正在深入我们生活的方方面面。...
摘要:问对于程序员修炼之道你有下一步的计划吗程序员修炼之道这个项目很好,写作的过程也很愉快。而最上层的程序员则是时刻对技艺以及技术的本质着迷。这也是的一大优势。 非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/article/127453 Ben Evans是jClarity的联合创始人。其公司致力于开发可以为开发和运维团队提...