ARTIFACTORY:关于云原生开发的7个误解
是什么原生云发展吗?那些认为这只是一个托管在云上的开发过程,或者是运行在云上的应用程序的开发操作的人,可能不太理解云原生开发的真正含义。
实际上,人们很容易对云原生开发的工作方式产生一些误解。下面,我们将介绍关于云原生应用及其背后的开发过程的常见误解。
1 .云原生开发意味着在云中开发应用
对于初学者来说,使用基于云的开发工具——比如云IDE,或者托管的应用程序发布管道,比如Azure管道或AWS豆茎——并不一定意味着你在做云原生开发。
如果您愿意,当然可以使用基于云的开发工具进行云原生开发。但是您也可以使用传统的本地开发工具集。云原生开发并不意味着特定类型的开发工具或流程。
2 .云原生开发意味着开发在云中运行的应用程序
同样,仅仅开发将部署到云中的应用程序并不意味着你正在进行云原生开发。
事实上,人们对云原生技术最大的误解之一就是认为云原生应用必须在云中运行。云原生的真正含义是从架构的角度来看,你的应用是可伸缩的、分布式的和(通常)模块化的。尽管托管在云环境中的应用程序通常具有这些特征,但并非所有应用程序都具有这些特征。例如,您可以在EC2实例中部署一个不可伸缩的单片应用程序,这意味着您将在云中运行应用程序,但它不是云原生的。
同样,您可以使用Kubernetes这样的平台在本地部署云原生应用程序,它允许您在任何地方操作分布式、可扩展的、基于微服务的应用程序——无论是在您自己的数据中心还是在云中。
#3:云原生开发需要容器
说到Kubernetes——以及容器,它是Kubernetes托管的资源类型——认为云原生开发必须关注容器是错误的。确实,容器是其中之一位于云原生世界中心的技术.事实上,很多云原生应用都是在容器中运行的。
然而,容器并没有垄断云原生应用。您还可以使用无服务器功能开发和部署云原生应用程序,unikernels,甚至是直接在主机操作系统上运行的传统应用程序。只要您的应用程序是可伸缩的和分布式的,它就是云原生的。
4 .微服务应用是云原生应用
云原生应用使用微服务架构。微服务将应用程序功能分解为离散的单元和代码库,这使得高效部署应用程序变得容易,因为您可以独立部署每个微服务。此外,由于微服务独立运行,它们增加了容错性;一个微服务的故障不会导致整个应用的崩溃。
也就是说,使用微服务并不一定意味着你开发了云原生应用。例如,你可以创建难以扩展的微服务,或者需要在同一台主机上运行的微服务。在这些情况下,您将无法实现作为云原生开发核心的可伸缩性和分布原则。
5 .云原生开发更快
在大多数情况下,云原生应用程序是使用DevOps CI/CD管道,它支持快速的应用程序开发和交付。但是,不能保证迁移到云原生开发策略将使您的开发过程更快。相反,如果您的管道没有得到很好的管理,它可能会造成复杂性,从而导致较慢的发布。
这里的要点是,虽然云原生开发应该是快速的,但要确保它实际上是需要努力的。
#6:云原生开发不太安全
有一个长期存在的神话云计算本质上比本地基础设施更不安全。人们可能很容易认为,云原生开发也不太安全。
这两种说法都不对。正如您可以构建非常安全的云环境一样,您也可以创建非常安全的云原生开发操作。要做到这一点,您需要了解您的云原生代码位于何处,谁访问和管理它,您在软件交付管道中生成哪些工件,以及如何保证所有这些的安全性。
#7:开发可以立即转向云原生
人们可能会认为云原生开发是一种先实现然后称之为完成的东西。然而,事实上,将云原生开发视为一个旅程而不是一个目的地更有意义。在云原生开发过程中总是有改进的空间;例如,它们可以变得更高效、更快、更安全。
因此,即使您已经在进行云原生开发,也不要认为这是您已经克服并可以克服的挑战。专注于寻找双倍利用云原生开发的方法。
那么,什么是云原生开发?
既然我们已经讨论了云原生开发不是什么,我们可以解释它实际上是什么。
云原生开发没有官方定义。但一般来说,您可以将其定义为专注于构建可伸缩、分布式、有弹性的应用程序的任何开发实践。正如我们所指出的,构建这样的应用程序没有“一种正确的方法”,也没有部署云原生应用程序的特定方法。您可以决定如何创建云原生开发策略,并在实施该策略后找到不断改进该策略的方法。
