创建旨在使用云资源的软件应该是迁移组织的下一个重大举措。
人们对流行术语通常有一种爱恨交织的关系。一方面,它通常被严重地滥用,几乎失去了所有实际意义。另一方面,它们似乎是简洁地传达某些概念的唯一方式。
云原生就是这样一个流行语。最近,一切和任何东西似乎都标记为云原生。不信是吗?谷歌的短语“云原生硬件”,“云原生销售专家”和“云原生的会计师事务所。”这是一种流行病。
然而,人们还应该如何谈论在公共云平台上运行的明确目标正在构建的新一波软件?似乎没有更好的标签。虽然人们对最近普及的“现代云应用程序”有一定的亲和力,但并不认为这是向前迈进的一步,而且人们正在认真考虑如何进入这个领域。
作为一个采用非常不同的方法来保护这些新类型应用程序的安全创业公司,如果甚至无法有意义地谈论已经发生的变化,那么如何开始解释人们的工作?
因此,需要尝试将云原生的含义达成一致。技术有很多定义,大多数定义都过于详细,但令人惊讶的毫无用处。对人们来说,理解云原生这一术语最有用的方式是,当人们将云平台视为操作系统时,云原生就是它背后的整个哲学。
从历史上看,人们使用云计算作为消费虚拟化硬件的一种方式,例如计算、存储、网络。当企业“以云为原生”时,可以提升级别并设计、构建、部署和运行依赖于云平台的软件,以提供企业可以利用的丰富服务和有用的抽象,使其更容易消费这些服务。
与任何其他操作系统一样,企业希望它可以防止其担心管理存储资源,将处理需求与硬件核心相匹配以及处理许多应用程序中常见的复杂任务等问题。与任何其他操作系统一样,企业通常不希望知道的内容的详细信息。像任何其他操作系统一样,
这是事情的原则......
以下来看一下源自上述定义的云原生软件的一些关键原则。
尽可能使用托管服务
如果AWS就像Windows一样,那就把Kinesis想象成DirectX吧。如果企业正在寻找为Windows构建游戏,可能不会推出自己的图形渲染引擎。企业将使用本机平台为其提供的功能。如果企业正在寻找收集和处理实时流数据,不应该站在EC2机器上的复杂管道上,而是应该尝试利用Kinesis。
让云计算提供商处理运行状况和扩展
避免需要企业监视运行状况和负载以及处理扩展的体系结构。这些都是涉及性能和成本的复杂问题,它们是大多数组织存在的祸根。现代云平台越来越多地摆脱了这些问题。AWSLambda和GoogleCloudRun等服务可让企业在不处理扩展和健康状况的情况下运行代码。AzureBlob或AWSS3等存储服务可让企业忘记容量和吞吐量。这使您的应用程序更具弹性,并使其操作更加简单。
代码适用于业务逻辑
编写代码应该是最后的手段,并且应该主要用于实现有价值的业务逻辑。企业需要的其他所有内容都应该是API调用。如果它不是核心,那么其他人已经建立了它。使用它们。它们可能看起来更昂贵,但企业需要考虑它的成本,不仅要编写代码,还要测试、维护和操作它。
不要担心供应商锁定
这个很重要。当企业编写软件时,如果需要切换平台,思考会发生什么并没有错。但是如果为了避免使用某些未来平台中可能不存在的东西而使其应用程序瘫痪,那么企业至少有所准备。对于公共云,这更加明显。企业永远不会被锁定在一个平台上。企业始终可以将部分或全部应用程序移动到另一个云平台。因此,只需专注于从企业选择的平台中获得最大的收益,并且不要过分强调当企业决定移动时会发生什么。
还有DevOps、CI/CD、敏捷性和十二因素
这是人们做的另一件事。他们把他们喜欢的一切都混在一起。构建软件有许多很好的趋势。如果企业没有将所有可以(包括安全性)自动化到现代CICD管道中,那么将在以后遭受损失。虽然这些事情没有直接关系,但并不意味着企业不应该遵循它们。它只是意味着即使企业正在构建非云原生软件,也应该关注它们。
结论
俗话说,如果不能打败他们,那么就会加入他们。如果企业正在构建云原生软件,可以使用云原生流程和云原生架构,并且不要忘记一些云原生安全、云原生成协调和云原生操作。