
1.3 Serverless的优缺点
O'Reilly在2019年对Serverless领域用户的一项调研反映出了Serverless用户层的优势和不足。总的来说,Serverless能够屏蔽底层资源烦琐的概念和运维等工作,让开发者和企业专注于业务逻辑的开发,从而降低成本、提升效率。但由于Serverless技术还在快速发展和上升的阶段,也面临着性能、平台、成本和安全等方面的挑战。
1. 优势
(1)节省资源成本
基于细粒度的计费模型,Serverless的第一项优势是极大降低了资源成本,这也是许多企业将架构部署或迁移到Serverless上的重要原因之一。
(2)节省人力成本
除了节约资源成本,对于企业领导而言,Serverless能够有效节约人力成本,将人力从机器资源配置、运维中释放出来,专注于业务的开发和实现,从而极大提升开发效率,减少进入市场(Go To Market,GTM)的时间。这是Serverless架构受到个人开发者欢迎的原因之一。
(3)弹性扩缩容
基于Serverless架构动态分配资源的特性,Serverless应用可以根据业务的实际请求弹性扩缩底层资源,起到削峰填谷的作用,十分适合有突发请求的业务场景。
(4)免除运维烦琐
Serverless架构可以有效免除运维的烦琐工作,但这里并不是说Serverless就不需要运维了。恰恰相反,Serverless可以让运维从“资源运维”转为“业务运维”,从而更好地优化业务,提升软件开发效率。
2. 不足
(1)厂商绑定
由于Serverless架构托管在云端,很多企业担心出现厂商绑定的情况,即业务部署在单一厂商后,过于依赖该厂商的架构和规范,耦合度高,难以迁移或进行多厂商部署。
(2)底层不透明
Serverless的底层调度对于用户来说是黑盒,因此大大增加了测试/调试的难度。同时基于云端的Serverless开发方式也和传统的开发方式有一定的差异。由于链路的不透明性,在业务遇到故障时,排障也变得更加困难。
(3)花销难预测
Serverless架构按需付费特性的另外一面是在遇到攻击等突发异常流量时,可能会造成难以预测的较大花销,因此对架构做安全防护/过滤策略也是必要的。
(4)性能
基于Serverless计算中按需分配的资源模型,Serverless架构可能出现首次请求“冷启动”的情况,对于性能要求较高的架构,需要做进一步的优化。
(5)安全
Serverless架构可以让开发者更专注于业务,但开发过程中的数据安全、传输安全也需要投入更多的关注,并且链路之间的安全性也需要进一步配置。