很多企业开始了其数字化转型之旅,并想知道什么是云原生以及为什么需要它?行业媒体发布了一篇名为“走向云原生:人们需要知道的6个基本内容(Going Cloud Native:6 Essential Things You Need to Know)”的文章,讨论了解术语“云原生”的关键方法,并描述了如何利用云原生功能来加快开发团队的工作效率,并提高企业的创新能力。
云原生简史
根据用户的要求,云原生可能意味着很多不同的事情。十年前,这是由Netflix公司创造的术语,这个公司利用云计算技术,从一家DVD光盘邮购公司发展到全球最大的按需消费内容网络交付商之一。Netflix公司开创了人们称之为“云原生”的先河,对于云计算软件进行重新设计、转换、扩展。
由于Netflix公司获得了惊人的成功,并且能够更快地为客户提供更多功能,很多企业希望知道他们如何采用云原生技术以获得如此巨大的竞争优势。
从本质上讲,云原生是一种提高业务速度的方法,也是一种构建团队的方法,可以利用Kubernetes和容器等云原生技术提供自动化和可扩展性。
云原生架构:它是什么样子的?
(1)单片架构与微服务架构
Netflix公司前云计算架构师Adrian Cockcroft在错误进行了一次灾难性发布之后,该公司将他们的整体架构从单片架构转移到微服务架构。
单片架构的问题是,当开发和测试新特性时,要将这些更改部署到生产环境中,需要付出相当大的努力:
·需要多个团队来协调他们的代码更改。
·同时部署多个功能需要大量的前期集成和功能测试。
·开发团队仅限使用一种或两种语言。
向微服务的转变使Netflix公司开发人员能够更快地向客户提供新功能。
微服务产生了一个具有有界场景、松散耦合的、面向服务的架构。这意味着,如果必须同时更新每个服务,那么它不会松散耦合;并且沿着相同的线路,如果用户对于周围的服务需要进行更多的了解,那么就没有“有界场景”。
(2)微服务、Docker和Kubernetes
Docker容器非常适合微服务。通过在单独的容器中运行微服务,如果愿意的话,它们都可以独立部署,甚至可以使用不同的语言。容器化消除了语言、库或框架之间产生摩擦或冲突的风险。由于容器是可迁移的,并且可以彼此隔离地操作,因此使用容器创建微服务架构并在需要时将其迁移到另一个环境非常简单。
(3)容器编排
一旦有大量的微服务在Docker容器中运行,企业就需要一种方法来管理或协调这些容器,以便它们作为应用程序更有意义。这就是企业需要一个协调器(集群管理器)的地方,比如Kubernetes、Docker Swarm等。
在过去的一段时间里,企业必须做出一个明智的选择,选择使用哪一个容器编排。谷歌公司发布的Kubernetes则名列前茅。所有主要云计算提供商都通过易于安装的解决方案为Kubernetes提供支持。
这个讨论的要点是,为了让大多数公司具有竞争力,他们必须围绕微服务构建应用程序,并在Kubernetes集群中运行它们,尽管有些公司也在其他编排器上运行Docker容器。
(4)自动部署
随着应用程序在容器中运行并在Kubernetes中进行协调,下一步是自动部署。持续自动化的功能流是DevOps与其他软件开发理念和实践(如瀑布模型)的区别,后者的开发将遵循有序的阶段序列。
连续性并不意味着工程师们正在无时不刻地更新代码,或者他们在每次代码行更改时都在部署更新。从这个意义上说,连续性是指通过自动化的连续集成和持续部署管道(CI/CD)定期推出的软件更改和新功能。
可以在构建持续交付管道中找到更多用于构建持续部署管道(CI/CD)的DevOps策略。
(5)监控应用程序和微服务
使用容器和微服务,监控解决方案必须管理比以往更多的服务和服务器。不仅需要管理更多对象,而且云原生应用程序还会生成大量需要跟踪的额外数据。
从由如此多的移动部件组成的环境中收集数据是复杂的。Prometheus是这些动态云环境的最佳现代解决方案。它专门用于监控大规模容器中运行的应用程序和微服务,并且是原生的容器化环境。
(6)文化变迁
将云原生技术和DevOps最佳实践实施到组织中的成功在很大程度上取决于其现有的公司文化。内部团队不仅要学会采用跨功能方法,确保软件以连续的节奏进行迭代,而且还要补充组织的业务目标。实际切换到云原生可能是其旅程中最简单的部分;让这些更改保持不变,并在整个组织中传播它们很可能是流程中最困难的部分。
人们了解有关云原生的更多信息,需要了解以下这些内容:
·采用云原生堆栈的企业的好处
·将云原生策略付诸实践时会发生什么
·云计算基金会(CNCF)的作用
·云原生如何与DevOps相关