云原生使集群扩展变得更容易,部署更快,并且降低计算成本。
当云原生计算基金会总经理Priyanka Sharma在晚宴上向某人解释她的工作时,她首先问他们是否听说过Kubernetes,Kubernetes是CNCF最重要的开源软件项目,它帮助组织以及管理云计算资源。
并不是所有人都听说过Kubernetes。在这种情况下,她会接着问他们是否听说过亚马逊网络服务(Amazon Web Services),这是亚马逊旗下一家颇受欢迎的出租云计算资源的子公司。
很多人知道“云”的意思,但不知道“原生”代表着什么?
她解释说:“云原生技术是指工程师和软件人员利用云计算构建更快、更有弹性的技术,这样做是为了快速满足客户的需求。”什么是云原生?
云原生技术是指工程师和软件人员利用云计算构建更快、更有弹性的技术,这样做是为了快速满足客户的需求。
—— Priyanka Sharma,云原生计算基金会
什么是云计算?
要理解云原生技术,理解云计算很重要。
服务器提供计算能力和存储能力用于存储和共享数字信息。很长一段时间以来,大多数公司都购买了自己的物理服务器,通过增加或减少服务器的数量来调整自己的计算能力,但这需要内部IT部门的支持。
随着虚拟机的普及,事情变得简单了一些。有了虚拟机,公司可以用更少的物理服务器获得同样的计算能力。
技术人员通过安装称为hypervisors的软件,将物理机变成了虚拟机。通过给多台机器安装hypervisors,他们发现可以让虚拟机像一个大系统一样共享资源。共享计算资源,这时出现了“云”的朦胧概念。
如今,技术人员可以在私有服务器上创建自己的云环境,或者向微软、亚马逊或谷歌这样的公司付费,以获得公共云中的计算资源。
什么是云原生?
在公有云上运行软件缓解了公司的一些IT需求和可伸缩性问题。但仅仅是向云计算的过渡,并没有创造出云原生技术。
Sharma说:“你完全可以在别人的计算资源上做你过去做的事情。”
随着技术人员越来越了解云环境的好处,他们开始构建能够利用这些好处的软件。Sharma说,最显著的变化是从由许多依赖组件组成的紧耦合系统转向由可以准独立运行的微小组件组成的松耦合系统。
多亏了容器技术Docker,技术专家们找到了如何将软件与所依赖的库打包和装箱的方式,这样软件就可以在任何地方运行了,组件就是容器。同时也催生了微服务体系结构。
使用容器和微服务,可以根据客户的需求,对单个组件进行伸缩、修改或删除。“当你听到‘云原生’这个词时,你可能会听到各种各样的说法。这是一个巨大的生态系统。”Sharma说,想象这样一款天气应用。如果一个城市遭遇了自然灾害,这个城市的数据量很可能会激增。该应用程序的运维人员可以增加专用于该城市数据的计算资源,而不会影响其他地方的用户。
她还说,“云原生非常成功,因为它对业务的影响是直接的,人们能够更快地满足客户的需求,取悦他们,赚更多的钱。”
对应的,支持云原生技术的平台和服务迎来了繁荣。比如Kubernetes,它帮助组织跨云环境部署和管理容器化应用程序。
这就是为什么当你听到“云原生”这个词时,你可能会听到各种各样的说法,这是一个巨大的生态系统。
云原生技术的优势是什么?
也许云原生技术最大的优势是快速部署。还是那个天气应用,让我们假设一个国家的特定地区需要空气质量指数数据,要求快速实现功能。
如果空气质量指数数据依赖于原系统运行,部署该功能可能需要数月的计划和数十次对话,以确保过程中没有其他中断。不过,有了独立的服务,一个由两名工程师组成的团队就有可能在几天内构建并部署该功能。
更容易自动化是另一个好处。CNCF有很多成熟的技术和正在孵化中的技术,比如GitOps和Hashicorp的Vault,支持安全的构建部署脚本,这大大加快了部署速度。现在,每个不同的部署环境都不需要定制脚本。
然后是可伸缩性和可靠性。有了基于云的软件,开发团队就可以随意地添加功能、规划容量、存储等等,而不需要担心物理硬件。这是因为在分布式系统中运行的容器化软件不需要了解系统的其他部分就可以工作。工程师和运维人员也不用担心影响系统地其他部分或有数据丢失的风险。
最后,还有成本节约。简单的可伸缩性使得优化更容易。特别是对于托管的云服务,云服务提供商或中介帮助公司分配计算负载,公司只支付他们所需的资源,而不是让固定数量的服务器一直运行。
云原生技术的挑战是什么?
随着新技术的出现,新的挑战也随之而来。在云原生的世界里,可观测性,或者说是看到计算机系统内部发生了什么的能力,是一个很大的挑战。
“人们正试图弄清楚如何确保他们拥有和以前一样的信息和能力来理解他们自己的系统,”Sharma说,“复杂、松散耦合的分布式系统的一个缺点是,随着公司规模的扩大,一个人很难完全理解它。”
换句话说,所有这些容器都运行在不同的服务器上。容器可以在不同的服务器之间移动,但谁在跟踪呢?如果系统的可观测性很差,就很难理解在提交请求之后会发生什么。
云原生如何改变了开发人员的工作?
在某些方面,云原生并没有改变开发人员的工作。
Sharma说:“你依然在用同样的语言写同样的写代码。这里的细微差别是有些语言比其他的好,不管怎样,现在Golang是最好的。但是你做的是同样的工作,除了不同的运维方式。”
对于许多科技公司来说,这种差异体现在DevOps(软件开发和IT运营的混合)和持续集成和部署(CI/CD)上。对于那些编写代码来部署和管理微服务的人来说,使用容易打包的微服务是有意义的。类似地,由云支持的自动化管道支持快速和频繁的部署。
对于开发人员来说,为在云原生公司工作做好准备,很大程度上意味着理解分布式系统以及容器化如何改变了我们的计算方式。“一个关于云原生的误解是,这是一个非常稀有的世界,你必须有20年的经验才能理解它。这不是真的。”Sharma说,有一天,大学将会在课程中全面地教授云原生知识。但在那之前,程序员可以通过其他培训机会来弥补这一差距。CNCF提供云工程师训练营和Kubernetes认证。另一种学习方式是参与开源项目。
Sharma补充道:“如果你在云原生的项目中已经做出了贡献,你将会是很多雇主的黄金候选人。一个关于云原生的误解是,这是一个非常稀有的世界,你必须有20年的经验才能理解它。这不是真的。”
云原生软件几乎可以在任何地方运行
云托管的工作流和分析平台在大多数行业引起了轰动,但许多硬件制造商,如汽车和航空公司,一直难以加入。他们笨重的软件需要大量的物理基础设施,而且他们的数据安全需求很高。
First Resonance由前SpaceX和NASA工程师创立,为这个服务不足的市场搭建了一个SaaS平台,云原生能力对这家初创公司的成功至关重要。
通过在微服务中架构其产品,First Resonance变得足够灵活,以满足潜在客户的不同需求。一些制造商希望在公共AWS云上运行该平台。其他公司,比如航空航天公司,出于安全考虑,希望将其托管在自己的私有云中。还有一些用户需要很低的延迟,所以他们希望将其安装在自己的办公场所。
First Resonance的DevOps和后端工程师Chris Magorian告诉《内建》,目前,该公司约有四分之三的客户很满意他们提供的服务。但很多人对于这种新模式依然犹豫不决,要么是出于习惯,要么是由于严格的数据安全协议。
Magorian说:“很多人觉得将应用软件运行于自己的办公场所,是保证数据安全的唯一方法。”当我们最终与他们交谈时,我们说,“你们的东西是从每个端点加密的AES 256,我们为所有数据传输提供端到端的加密。“在某种程度上,这对他们很有启发,因为他们会说,‘哦,好吧,我不知道这是怎么回事。’”
Magorian说,一旦数据安全问题得到解决,从复杂的本地软件系统到现代SaaS平台通常是制造商欢迎的变化。该平台只有一个URL,客户端工程师可以使用First Resonance的API构建自定义可视化和分析。
但是根据Magorian的说法,云原生平台的真正好处是功能的快速交付。与重新部署、重新安装和更新本地数据库相比,客户可以通过刷新页面立即获益。
假设制造商想要一种功能,输入零件的序列号,可以知道使用该零件的产品数量。那么制造商需要与其软件供应商的代表进行沟通,然后软件供应商将该特性添加到未来的软件版本中。18个月后,制造商可能会在新版本中看到这一功能。
对于基于云计算的软件,这一功能将在几周内实现。First Resonance与客户共享Slack的渠道,这样一来,它就能及时看到功能请求和反馈。
Magorian说:“与重新部署、重新安装和更新本地数据库相比,客户可以通过刷新页面立即获益。”
即使使用了First Resonance平台,客户仍然可以享受云原生技术带来的其他好处。First Resonance平台可以安装于本地服务器,也可以安装于像AWS这样的云平台之上。
Magorian说:“如果我们可以为他们自动化整个过程,更新只是简单地点击网页上的几个按钮,而不是联系几个代表来帮你做,这将是巨大的胜利。”
云原生的下一个发展方向是什么?
使用云技术并在附近运行,而不是在一个遥远的数据中心,被称为边缘计算。
对于那些需要超过集中式云计算所能提供的延迟、安全或带宽的公司来说,边缘计算是未来的潮流。随着集中式云的扩张机会减少,大型云服务提供商正在投资边缘节点。个别公司甚至可以为自己的边缘系统付费。
假设有一家制造商希望处理连接到不同工厂部件的数千台设备的数据,并将这些数据推送到工厂员工使用的iPad上。Magorian说,目前,来自联网设备的大部分数据是手动记录的,或者是由完全独立的系统记录的,客户需要具有高可观察性的边缘计算系统。云原生让我们能够在三种完全不同的环境中交付软件。我们有几种方法可以做到这一点。但我们可能会用Kubernetes来做,结合一些其他软件技术,我们能够提供低延迟,并且构建一个安全的隧道,像VPN那样,客户可以得到更高的计算能力,而不用自己购买这些设备。
通过这样的设置,客户端工程师可以稍微了解一下First Resonance的API,然后开始编写自己的脚本,以便从物联网设备获取大量数据。
总而言之,对航空工业的了解帮助First Resonance认识到市场需求,而云原生技术帮助这家初创公司解决了这个问题。
Magorian说:“云原生使我们能够在三种完全不同的环境中交付软件。”