云原生概念

“云原生”这个词被大量抛出,尤其是云提供商。不仅如此,它甚至还有自己的基础:由Linux基金会于2015年推出的云原生计算基金会(CNCF)。

'云原生'定义

在一般用法中,“云原生”是一种构建和运行应用程序的方法,它利用了云计算交付模型的优势。“云原生”是关于如何创建和部署应用程序,而不是在何处。这意味着应用程序位于公共云中,而不是内部部署数据中心。

CNCF将“云原生”定义得更为狭窄,意味着使用开源软件堆栈进行容器化,其中应用程序的每个部分都打包在自己的容器中,动态编排,以便对每个部分进行主动调度和管理以优化资源利用率和面向微服务的应用程序,以提高应用程序的整体灵活性和可维护性。

“云原生应用程序专门设计用于运行现代云计算平台所需的弹性和分布式特性,”咨询公司Deloitte的常务董事Mike Kavis说。“这些应用程序松散耦合,这意味着代码不会硬连接到任何基础架构组件,因此应用程序可以按需扩展和扩展,并拥抱不可变基础架构的概念。通常,这些架构是使用微服务构建的,但这不是强制性要求。“

云服务提供商Splunk的首席技术支持者Andi Mann表示,对于云原生应用程序而言,最大的不同之处在于应用程序的构建,交付和运营方式。“利用云服务意味着使用敏捷和可扩展的组件(如容器)来提供离散和可重用的功能,这些功能以良好描述的方式集成,甚至跨越多云等技术边界,这使得交付团队可以使用可重复的自动化和协调来快速迭代。”

云原生应用程序开发通常包括devops,  敏捷方法,微服务,  云平台,Kubernetes和Docker等容器,以及持续交付 - 简而言之,每种新的和现代的应用程序部署方法。

因此,您确实希望拥有平台即服务(PaaS)模型。PaaS不是必需的,但它使事情变得更容易。绝大多数云客户从基础架构即服务(IaaS)开始,这有助于从底层硬件中抽象出他们的应用程序。但PaaS增加了一个额外的层来抽象底层操作系统,因此您可以完全专注于应用程序的业务逻辑,而不必担心进行操作系统调用。

云原生和本地应用程序之间的差异

云原生应用程序开发需要与传统企业应用程序完全不同的体系结构。

语言

编写在公司服务器上运行的本地应用程序往往使用传统语言编写,如C / C ++,C#或其他Visual Studio语言(如果部署在Windows Server平台上)和企业Java。如果它在大型机上,它很可能在Cobol中。

云原生应用更有可能以网络为中心的语言编写,这意味着HTML,CSS,Java,JavaScript,.Net,Go,  Node.js,PHP,Python和Ruby。

可更新

云原生应用程序始终是最新的和最新的。云原生应用始终可用。

本地应用程序需要更新,通常由供应商按订阅提供,并且在安装更新时需要停机。

弹性

云原生应用程序通过在使用峰值期间使用增加的资源来利用云的弹性。如果您的基于云的电子商务应用程序使用频繁,您可以将其设置为使用额外的计算资源,直到峰值消退然后关闭这些资源。云原生应用可以根据需要调整增加的资源和规模。

内部部署应用程序无法动态扩展。

多租户

云原生应用程序在虚拟化空间中工作并与其他应用程序共享资源没有问题。

许多本地应用程序要么在虚拟环境中不能正常工作,要么根本不工作并且需要非虚拟化空间。

连接资源

本地应用程序与网络资源的连接相当严格,例如网络,安全性,权限和存储。其中许多资源需要进行硬编码,如果移动或更改任何内容,它们就会中断。

“网络和存储在云端完全不同。当您听到“重新平台化”一词时,通常是为了适应网络,存储甚至数据库技术的变化,以允许应用程序在云中运行,“Deloitte的Kavis说。

停工时间

云中存在比内部部署更大的冗余,因此如果云提供商遭受中断,则另一个区域可以消除冗余。

本地应用程序可能已准备好故障转移,但如果服务器出现故障,应用程序可能会崩溃。

自动化

云的大部分都是自动化的,其中包括应用管理。“云本地交付的好处,特别是速度和敏捷性,显着依赖于可靠,经过验证和经过审核的已知良好流程的基础,这些流程根据需要通过自动化和编排工具而不是通过人工干预重复执行,”Splunk说道,工程师应该考虑将他们不止一次做的任何事情自动化,以实现可重复性,自助服务,敏捷性,可扩展性以及审计和控制。

必须手动管理本地应用程序。

模块化设计

本地应用程序往往是单一的设计。他们肯定会将一些工作卸载到库中,但最终它是一个包含大量子程序的大应用程序。云原生应用程序更加模块化,许多功能分解为微服务。这允许在不需要时关闭它们,并将更新推广到那个模块,而不是整个应用程序。

无状态

云的松散耦合特性意味着应用程序与基础架构无关,这意味着它们是无状态的。云本机应用程序将其状态存储在数据库或其他外部实体中,因此实例可以来去,应用程序仍然可以跟踪应用程序在工作单元中的位置。“这是松散耦合的本质。不依赖于基础设施允许和应用程序以高度分散的方式运行,并且仍然保持其状态独立于底层基础架构的弹性性质,“Kavis说。

大多数本地应用程序都是有状态的,这意味着它们会在运行代码的基础架构上存储应用程序的状态。因此,在添加服务器资源时可能会破坏应用程序。

云原生计算的挑战

Mann说,客户犯下的一个重大错误就是试图将旧的本地应用程序升级并转移到云端。“试图利用现有的应用程序 - 特别是单一的遗留应用程序 - 并将它们转移到云基础架构上将无法利用基本的云原生功能。”

相反,您应该以新的方式开展新事物,或者将新的云原生应用程序放入新的云基础架构中,或者通过拆分现有的整体块来从头开始使用云原生原则重构它们。

您还需要忽略旧的开发方法。瀑布模型当然不合适,甚至敏捷开发可能还不够。因此,您必须采用新的云原生方法,如最小可行产品(MVP)开发,多变量测试,快速迭代,以及在devops模型中跨组织边界密切合作。

云原生有很多方面,包括基础设施服务,自动化/编排,虚拟化和容器化,微服务架构和可观察性。所有这些都意味着一种新的做事方式,这意味着在学习新方法时打破旧习惯。所以以有节奏的速度做到这一点。

了解有关云原生技术的更多信息

  • 平台即服务(PaaS)解释
  • Multicloud解释道
  • 敏捷方法解释
  • 敏捷开发最佳实践
  • Devops解释
  • Devops最佳实践
  • 微服务解释
  • 微服务教程
  • 解释了Docker和Linux容器
  • Kubernetes教程
  • CI / CD(持续集成和持续交付)解释
  • CI / CD最佳实践

你可能感兴趣的:(云原生概念)