深入理解Serverless架构︱新兴云计算服务交付模式

千寻生活
佚名
2014年11月,亚马逊AWS推出了"无服务器"范式服务--Lambda,开辟了另一个云计算战场Serverless。随着云计算时代服务端架构逐渐去服务器化,越来越多的云厂商开始关注 Serverless。这种新兴云计算服务交付模...

2014年11月,亚马逊AWS推出了"无服务器"范式服务--Lambda,开辟了另一个云计算战场Serverless。随着云计算时代服务端架构逐渐去服务器化,越来越多的云厂商开始关注 Serverless。这种新兴云计算服务交付模式为开发人员和管理人员带了很多好处,代表着未来的一种发展趋势。本文将分成上、下两部分,带大家深入理解这个无需担心维护问题、能降低整体运营费用的模式。

回溯本源

常见的应用服务开发上线流程有三种最常见方式,先来一一了解。

直接使用物理设备

开发者将应用程序开发测试完毕后,直接将程序和相关软件部署在物理设备上,服务器使用物理机。

这种方式不可避免地需要大量人工运维和重复劳动。比如,由于用户数量逐渐增长,需要扩容物理设备以应对更高的网站访问压力,此时就需要购置更多物理服务器,并且搬运到机房的对应机架机柜中。然后,需要手动为新购置的物理服务器安装各种运行软件,填写配置文件,手动部署启动需要运行的应用程序。这些大量重复运维劳动导致产品上线慢,迭代周期长。

此外,使用物理设备直接部署应用程序将导致资源浪费。如今的物理服务器配置越来越强大,64核128G现在看来也不过是普通配置,因此很难想象买一台32核物理机却只想搭建个人博客。另外,电商行业经常为了应对促销秒杀等活动准备大量物理资源,然而在非促销等流量低谷时段,大量物理资源处理闲置状态,不利于节约成本。

最后,为了解决资源浪费问题,想到的解决办法多数是将多个应用程序部署在同一台服务器上。但由此又导致了新麻烦,不同应用程序经常会抢占CPU、磁盘IO、内存,难以做到隔离资源,互不干扰。

IaaS托管硬件

虚拟化技术的成熟解决了上述直接使用物理设备的几个痛点。

首先,使用IaaS平台,服务器由物理机变成虚拟机,申请服务器资源仅需调用IaaS平台的API或者点击控制台页面就可以轻松完成。CPU个数、内存大小、网络带宽、存储磁盘容量都可以按需指定,随心所欲;虚拟机被玩坏了也不用重装系统修复,删除重建新虚拟机即可;扩容服务器不再需要大量重复人工运维劳动,加速了产品上线和迭代。

其次,使用IaaS平台一定程度上减少了资源浪费。在IaaS平台上很容易申请和删除虚拟机以及升降带宽配置等操作,当业务低谷时段直接删除多余虚拟机,降低带宽购买配额,节约成本。

最后,IaaS平台解决了资源隔离问题。不同虚拟机之间有独立CPU、内存、磁盘、网卡,它们之间的程序不会进行资源抢占。

然而,IaaS平台仅为开发者做好了硬件托管工作。所以开发者依然需要为虚拟机安装操作系统和各种软件,填写配置并部署应用;依然需要关注服务器、带宽、存储等资源的使用量和扩容缩容。此外,IaaS平台没有完全解决资源浪费问题,大量虚拟机在日常运行中依然存在超低负载运行情况。

PaaS托管应用

使用PaaS平台,开发者无需关注服务器的申请采购、系统安装和资源容量。PaaS服务提供商为开发者提供了操作系统、开发环境以及支持的SDK和API,还能自动调整资源来帮助应用服务更好应对突发流量。有了PaaS平台,开发者只需要把应用开发好,在PaaS平台完成服务部署即可上线应用服务。

相比IaaS平台,PaaS平台能更加精准的为应用程序所消耗资源计费。IaaS平台仅依据用户申请的资源量,如CPU核心数、网络带宽来计费,而不关注用户是否真正充分使用了其所申请资源。PaaS平台则可以通过统计应用程序所占用的CPU和内存使用率来做更精准的计费,甚至可以实现应用层面计费,比如服务响应时间或应用所消耗事务。

对常见应用服务开发上线流程做了大致了解之后,再来进一步探讨什么是Serverless。

Serverless是指由开发者实现的服务端逻辑运行在无状态的计算容器中,它由事件触发,完全被第三方管理,其业务层面状态则被开发者使用的数据库和存储资源所记录。

(图片来自网络)

以上图为例,上半部分描述互联网应用传统架构的模型:用户客户端APP与部署在服务器端的常驻进程通信,服务端进程处理该应用的大部分业务逻辑流程。下半部分则描述了Serverless架构模型。

与传统架构模型最大不同在于,互联网应用的大部分业务逻辑流程被转移到客户端上,客户端通过调用第三方服务接口来完成诸如登录、鉴权、读取数据库等通用业务场景,高度定制化的业务逻辑则通过调用第三方FaaS平台执行自定义代码来完成。总体上看,Serverless架构将传统架构中服务器端的整串后台流程,拆分成在客户端上执行一个个第三方服务调用或FaaS调用。

回顾之前所述,无论是直接使用物理服务器设备部署程序,还是基于IaaS平台托管硬件,或者使用PaaS平台托管应用,开发部署互联网应用都离不开传统的"客户端-服务器"模式,即客户端向服务端发送请求,服务器运行处理各种业务逻辑,并响应来自客户端的请求。至于物理机,IaaS、PaaS归根结底只是服务器程序的部署模式不同。

而在Serverless架构中,软件开发者和运维工程师不再需要关心服务器部署、架设、伸缩,这些问题交给云平台商来解决,程序员们得以将精力投入用代码实现业务逻辑中,而不是管理服务器。不过,Serverless也并不意味着完全不需要服务器,只是服务器资源的申请、使用、调度、伸缩由云服务商自动实现,应用开发者无需再费精力。

在下半部分文章里,将介绍Serverless如何工作,与非Serverless方案对比的不同特点,以及使用Serverless前需要了解的适用场景等内容。

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论