译者|陆新旺评论|孙淑娟、梁策1200亿美元。根据Forrester报告,这就是全球云计算市场的规模。在新技术、软件、数据存储和基础设施的推动下,向云迈进了一大步,使工作负载易于在云环境中开发和执行。根据云原生计算基金会(CNCF)的说法:“云原生技术使企业能够在公共云、私有云和混合云等现代动态环境中构建和运行可扩展的应用程序。容器、服务网格、微服务、不可变基础设施和声明式API都是该领域的应用示例。如果这些对您来说有点陌生,请不要担心,我们将在下一节中讨论它们。各种形式的云计算是商业技术的新范例。如今,面孔已成为企业的一项成熟功能。可以说,许多大公司都在他们运行的云应用程序之外开展业务。这不仅包括Uber和DoorDash这样的“初创公司”,还包括向经纪商提供股票以供交易应用的金融公司。根据CNCF的数据,目前有超过600万开发者正在为各种业务功能构建云原生应用。这些应用程序基于DevOps等最佳实践,因此可以扩展到底层基础架构的限制。接下来我们就来探讨一下什么是云原生应用开发,以及它如何为您的业务带来更多价值。什么是云原生应用开发?云原生应用开发是在云端并为云端开发一个应用的过程。听起来太简单了吗?实际过程可能看起来很复杂,但核心思想并不难理解。进一步分解这个过程,云原生应用程序是容器化微服务的集合,这些微服务通过可以持续交付的自适应基础架构进行管理。在一些传统项目中,基础设施分配系统管理员负责管理。但是,在云原生应用的开发生命周期中,编排引擎会控制这个过程。这意味着,开发人员或管理人员不必再花时间处理这些资源分配问题。相反,每个资源分配决策都是基于系统中预先配置的规则。应用程序所依赖的开发环境或技术设施对开发人员来说是重要的“抽象”或不可见的。他们可以使用自己选择的技术来开发微服务,增强应用程序的可移植性并允许快速更改代码。这是敏捷开发的核心原则之一,即快速开发,快速发布,满足业务用户的实时需求。从流程的角度来看,以下是如何进行云原生应用程序开发:将开发、IT管理和领导团队的DevOps实践内化。选择像Kubernetes这样的容器管理平台,它构成了运行和开发微服务的基础。确保开发人员熟悉使用容器化技术,并通过编排引擎管理资源分配。DevOps团队可以在整个生命周期中监控项目。项目交付必须是自动化和可持续的,具有沙箱和内置的可观察性。云原生应用的商业价值云原生应用为您的业务提供了多种高效、高性能的模式。以下是几个明显的好处:1.项目生命周期更具成本效益。对于应用程序开发项目,资源管理是最难以忽视的挑战之一。经验丰富的团队往往会为了安全而过度分配资源。虽然这确保了项目生命周期的顺利进行,但最终会增加应用程序开发的成本并降低项目的潜在回报。云原生的一个重要方面是它不需要负载平衡、配置,甚至不需要手动分配。云资源是自主管理的,允许它们根据测试和部署的需要进行扩展和缩减。在整个项目生命周期中都会产生节省,从而使云原生应用程序开发过程更具成本效益。2.弹性架构由于正常运行时间与公共或私有云中数据中心或VDI环境中虚拟机(VM)的正常运行时间直接相关,因此一些开发人员发现使用云部署具有挑战性。云原生应用程序是可移植的,并且独立于虚拟机运行。换句话说,除非特定的微服务需要专用的GPU,否则该架构可以无缝工作,几乎没有依赖性。随着依赖性的减少,工作负载更具弹性,并且故障排除变得更加容易和快速。由于云基础设施依赖性不再是问题,项目经理可以集中精力隔离其他潜在威胁。3.更快地将产品推向市场持续集成和持续交付(CI/CD)是云原生应用程序开发成功的关键。到目前为止,软件交付过程一直受到阶段的限制——在alpha、beta和生产发布之前需要进行彻底的测试。如今,该过程可以完全自动化,并在云环境中进行按需智能测试和持续部署。与DevOps同步使用,可以让项目团队进行更大规模的协作,降低产品发布的风险,大大缩短从开发到发布第一版的时间。4.不依赖供应商供应商锁定是几乎所有应用程序的主要问题,包括那些部署在谷歌、亚马逊或微软等主要云提供商上的应用程序。除非您自己是科技巨头,否则工作负载的平稳运行取决于云存储提供商的可用性和效率。由于云原生应用程序是可移植的,因此它们消除了对单一平台或云基础设施的依赖问题。无论底层架构如何,开发者都可以持续更新和升级应用程序并充分利用新的PaaS和IaaS服务。云原生应用的关键特征云原生应用的定义特征如下:基于容器的基础设施微服务架构系统DevOps使用持续集成和持续交付(CI/CD)的敏捷开发应用程序开发过程的好处:1.模块化管理单体应用程序的最大挑战之一是可扩展性问题。一开始,它与开发团队的规模和专业知识成正比。然而,单体架构随着每一个功能和特性的增加而变得更加复杂。这样,在产品生命周期中就会出现这样的情况:产品负责人无法理解整个应用程序,开发团队不知道他们的模块如何与其他模块集成,QA团队无法测试修改一个功能对整个应用程序的影响应用。应用程序中缺乏可见性会产生更多问题,因为开发人员无法处理额外的功能。应用程序的架构变得混乱,一个小的改动可能会导致重大故障。这些结构性问题可以通过使用微服务来解决,微服务是单独构建的模块,每个模块只负责一个特定的特性。因此,可以在不更改整个应用程序的代码或操作的情况下测试和更新应用程序的某些部分。2.自主资源分配借助云原生应用,开发人员无需直接与云基础设施提供商的应用程序编程接口(API)进行交互。相反,DevOps团队可以设置一个集中的策略来为每个容器(在其中开发应用程序)分配计算、内存和存储资源。自动资源分配直接影响项目的投资回报率(ROI)。因此,比分配的资金多一位或少一位小数点可以改变申请成功的机会。自主资源分配通过将应用程序的需求与可用资源精确匹配来降低这些风险。3.异步开发云原生应用本质上是聚合和容器化的微服务。对于用户来说,这意味着当一个微服务出现故障时,不会影响其他微服务的性能。每个微服务都是封装的,都有自己的依赖关系,所以一个微服务不会让整个应用面临风险。同样的逻辑也适用于开发过程。容器化微服务可以异步开发、测试和添加到生产应用程序中,除非它们具有共同的依赖关系(在这种情况下,可以复制或分离这些依赖关系)。因此,您可以并行开发多个功能或应用程序模块,而不必担心集成问题。4.快速扩展虽然云服务和微服务都在为未来铺平道路,但企业仍有未充分利用的遗留基础设施投资。由于云原生应用程序是打包到容器中的自治服务的集合,因此它们可以动态地向外扩展和向内扩展(使用或多或少的计算或存储资源),这与传统基础设施中的虚拟机不同。云原生应用程序允许与遗留系统和数据进行基于API的集成。这使得即使是小型企业也能在从传统基础设施向云计算过渡时加速其数字化转型过程。5.复合应用功能微服务非常适合独立审查、分析和评估。因此,开发人员可以在独立的基础上以及在整个项目的上下文中评估每个微服务的性能。由于模块化和弹性架构,全栈可观察性和特定的监控机制使调整应用程序变得更加容易。结论云原生应用程序专为下一个软件开发和云技术时代而设计。凭借其多功能性和敏捷性,云原生技术使企业能够将其技术投资与业务目标相匹配。无论您是中小企业还是大型企业,现在都可以智能地使用云原生来帮助解决业务问题,提高运营效率。译者介绍卢新望,51CTO社区编辑,90后半途出家程序员。做过前端页面,写过业务接口,做过爬虫,学过JS,有幸接触到Golang,参与过微服务架构的改造。目前主要编写Java,负责公司可定制低代码平台数据引擎层的设计和开发。原标题:HowToGetStartedWithCloudNativeApplicationDevelopmentbyDiptiParmar
