无服务器计算是目前IT中最令人困惑的术语。当我第一次听到无服务器计算这个词时,我一笑了之,认为它就像其他任何毫无意义的流行语一样。作为一名IT运营工程师,这个术语仍然令人困惑,因为它仍然依赖于服务器,不是吗?我微笑着想:“你试着在没有基础设施的情况下运行一个应用程序!”。但随后我立即被我的逻辑错误打了脸,因为我一直带着运营商偏见看待Serverless。我在IT运维领域工作了10年,所以我无疑忽略了从开发人员的角度来看待这项新技术。对于开发人员来说,无服务器是游戏规则的改变者。Serverless不仅仅是一个流行语,即使它的名字很糟糕,也没关系。无服务器计算是许多开发人员梦寐以求的平台即服务(PaaS)。像许多其他新趋势(尤其是在软件领域)一样,我们对什么是无服务器并没有真正清晰和完整的理解。有一个完整的相关领域在谈论无服务器可以做到这一点,无服务器可以做到这一点,但他们都专注于特定的产品。要理解什么是Serverless,首先要搞清楚:它是一种新的IT基础设施形态,而不是简单的产品或服务。Serverless通过消耗共享资源池中的计算资源来提供IT服务,而不是以创建(虚拟)服务器或容器的形式。这意味着应用程序的代码不运行在服务器或容器上,而是运行在共享计算资源池上。云计算的核心思想是抹去底层硬件基础设施的概念。大多数其他架构仍然有计算单元(服务器或容器)的概念,但没有服务没有这个概念。这种云平台模型可以真正提供云计算服务:基础设施抽象、弹性、易用性和价值定价。要理解为什么无服务器是IT的游戏规则改变者,我们需要了解传统IT应用程序的部署。以前我们会搭建web服务器、数据库服务器、应用服务器,代码都跑在服务器上。通过这样一个以服务器为中心的视角,你会发现存在一个非常严重的问题:即应用与底层硬件紧密绑定。举个有代表性的例子,我们曾经用hypervisor抽象出服务器,但这并没有改变应用的本质。虚拟化本质上是对基础设施的抽象,但它并没有满足企业更快地开发和部署代码的愿望。容器的出现满足了这种需求,但在我看来这只是权宜之计。容器或微服务是对现有基础架构模型的改造,它并没有改变我们以服务器为中心的模型。过渡到微服务架构可以让应用更加敏捷和弹性,但最终我们只是把计算单元变得比以前更小。在无服务器架构中,代码不再在服务器或容器上运行。代码在共享的计算资源池上运行。曾经有一个很流行的类比。人们将传统服务器比作宠物。它有名字,你要爱护它,你要有归属感。容器更像是牲畜,它们没有名字。当其中一个生病时,你把他扔到牧场上。而无服务器架构没有任何牲畜,只有一群。当我****终于开始理解Serverless的核心价值时,我还在为它的名字纠结。与这个想法本身一样伟大,无服务器的名字真的很糟糕。毕竟我们还是需要服务器的,CPU、内存等物理组件是无法抽象出来的。但如果你冷静地想一想,为什么名字很重要呢?IT领域已经有很多奇怪的名字了,何必纠结于此呢,毕竟只是一个名字而已。无服务器架构填补了微服务留下的一些空白。市场对敏捷性的需求和架构虚拟化的方向没有改变,这些将是未来的大方向。虽然no-service现阶段还不是很成熟,但是市场上已经有很多PaaS平台如雨后春笋般涌现。这些PaaS服务并没有达到Serverless理论的效果,也没有彻底解决一些存在的问题,但这将是一个飞跃点。同时,相信未来大部分的PaaS服务都会变成Serverless架构,对现在的云计算模式会造成翻天覆地的变化。
