云原生应用的10大关键属性


【编者的话】云原生是一系列基于容器、微服务、DevOps工作流以及弹性基础设施的集合,能够更加高效、可靠和敏捷的交付应用价值,本文的10个关键属性将带领你更深入的理解云原生应用。

云原生是一个用于描述基于容器环境的术语。云原生技术用于开发构建应用程序,这些应用程序使用容器打包并且将被部署为微服务,通过敏捷DevOps流程和持续交付工作流,在弹性基础设施上进行管理。

运维团队将手工管理传统应用程序的基础设施资源分配,而云原生应用程序部署在抽象底层计算、存储和网络原语的基础设施上。处理这种新型应用程序的开发人员和运维人员不会直接与基础设施提供者公开的应用程序编程接口(API)交互。相反,编排引擎根据DevOps团队制定的策略自动处理资源分配。控制器和调度器是编制引擎的重要组件,它们处理资源分配和应用程序的生命周期。

像Kubernetes这样的云原生平台暴露了一个扁平网络,该网络覆盖在云提供商的现有网络拓扑和原语上。类似地,通常抽象本地存储层以暴露与容器集成的逻辑卷。运维人员可以分配开发人员和资源管理员访问的存储配额和网络策略。基础架构的抽象不仅解决了跨云环境的可移植性需求,还让开发人员利用新兴模式来构建和部署应用程序。无论基于物理服务器或虚拟机,私有云还是公共云的底层基础架构,业务流程管理器都将成为部署目标。

Kubernetes是当代运行云原生应用程序的工作负载的理想平台。它已经成为云的事实上的操作系统,就像Linux是底层机器的操作系统一样。只要开发人员遵循设计和开发软件作为一组包含云原生应用程序的微服务的最佳实践,DevOps团队就能够在Kubernetes中打包和部署它们。以下是开发人员在设计云原生应用程序时应牢记的云原生应用程序的10个关键属性。

  • 1、打包为轻量级容器:云原生应用程序是打包为轻量级容器的独立自治服务的集合。与虚拟机不同,容器可以快速扩展和缩容。由于扩展单元转移到容器,因此优化了基础架构的利用率。

  • 2、使用最佳语言和框架开发:云原生应用程序的每项服务都是使用最适合该功能的语言和框架开发的。云原生应用程序是多语言的;服务使用各种语言、运行时和框架。例如,开发人员可以构建基于在Node.js中开发的WebSockets的实时流服务,同时选择Python和Flask来公开API。开发微服务的细粒度方法使他们能够为特定工作选择最佳语言和框架。

  • 3、设计为松耦合的微服务:属于同一应用程序的服务通过应用程序运行时相互发现。它们独立于其他服务而存在。当正确集成时,弹性基础架构和应用程序架构可以高效和高性能地进行扩展。


松耦合的服务允许开发人员独立地处理每个服务。通过这种解耦,开发人员可以专注于每项服务的核心功能,以交付细粒度的功能。这种方法可以实现整个应用程序的有效生命周期管理,因为每个服务都是独立维护的,并且拥有明确的所有权。

  • 4、以API为中心进行交互和协作:云原生服务使用轻量级API,这些API基于表述性状态转移(REST)、Google的开源远程过程调用(gRPC)或NATS等协议。REST被用作通过超文本传输协议(HTTP)公开API的基本共识。为了提高性能,gRPC通常用于服务之间的内部通信。NATS具有发布-订阅功能,可在应用程序内实现异步通信。

  • 5、以无状态和有状态服务的清晰分离为架构基础:持久可靠的服务遵循不同的模式,以确保更高的可用性和弹性。无状态服务独立于有状态服务。持久性成为一个必须越来越多地考虑因素,无状态和一些人会争论的微服务存储环境的因素。

  • 6、与服务器和操作系统依赖关系隔离:云原生应用程序与任何特定操作系统或单个计算机没有关联。它们在更高的抽象级别上运行。唯一的例外是微服务需要某些功能,包括固态驱动器(SSD)和图形处理单元(GPU),这些功能可能由一部分机器专门提供。

  • 7、部署在自服务、弹性、云基础架构上:云原生应用程序部署在虚拟的、共享的和弹性的基础架构上。它们可以与底层基础架构保持一致,以动态增长和缩小-根据不同的负载调整自身。

  • 8、通过敏捷DevOps流程进行管理:云原生应用程序的每项服务都经历一个独立的生命周期,它们通过敏捷的DevOps流程进行管理。多个持续集成/连续交付(CI/CD)流水线可以协同工作以部署和管理云原生应用程序。

  • 9、自动化功能:云原生应用程序可以高度自动化。它们与基础设施即代码的概念相得益彰。实际上,仅需要一定程度的自动化来管理这些大型和复杂的应用程序。

  • 10、定义的、策略驱动的资源分配:最后,云原生应用程序与通过一组策略定义的治理模型保持一致。它们遵循诸如中央处理单元(CPU)和存储配额以及将资源分配给服务的网络策略等策略。例如,在企业方案中,中央IT可以定义策略以为每个部门分配资源。每个部门的开发人员和DevOps团队都拥有对共享资源的完全访问权和所有权。


原文地址:10 KEY ATTRIBUTES OF CLOUD-NATIVE APPLICATIONS (翻译:刘志超)

0 个评论

要回复文章请先登录注册