近几年来,Serverless开发模式正不断得到认可。如果你是一个开发者,可能或多或少都有听说过它,但我相信还是有相当部分的初级开发者对于它来说还是一副“黑人问号”脸。
1.简述
云开发,本文以微信小程序的云开发为例。大述来讲,微信小程序的云开发就是Serverless的一种。今天,我们就来用一种接地气的说法来讲讲什么是云开发和Serverless。
Serverless,将其翻译成英文来讲,就是“无服务器”。
云开发,顾名思义,就是在“云”上面进行开发,而不需要依赖实体。Serverless就是一种这样的概念,它不需要开发者过多地去关注服务是如何被实现的,而只需要“站在前人的肩膀上”,主要着手于考虑程序的逻辑是如何被实现的。
换个说法,相信大家都有学过数学。就高数来说,有很多很多的定理,大家只需要在期末考试前把这些定理记住并熟练运用,就可以成功解出题目,拿到好分数。而这些定理,其实就相当于云开发的各个功能模块,你可以把这些模块的使用方法熟练掌握,你就可以实现不错的小程序效果。相信你从来不会关注一条条的高数公式是如何被证明的吧,就如云开发,你也不需要关注这些模块背后是如何运作,你只需知道他们这些模块如同高数公式一般“可靠”,然后在这个基础上灵活运用他们就好了。
2.经济与高扩展
既然如此,开发者们也不需要购买一台传统意义上的服务器了,他们只需要为使用到的模块提供对应模块的费用即可。正如同你进入一个培训班,你无需支付这个培训班运转需要的租金、水费、电费,你只需要支付对应兴趣班的费用,如果你想学唱歌,那你就只需要支付声乐班的费用。如果后续你又想学习跳、rap,那就再支付这些兴趣班的费用即可。
对应的,如果他们后续需要扩展模块的性能,那就支付扩展性能需要的费用即可。比如云开发中一个云数据库的基础配置是:日数据库读请求数200次、储存空间1G,如果要升级到:日数据库读请求数200万次、储存空间1T,那就支付对应的费用即可。兴趣班这个例子也是一样,如果你想多上一些课,那就多交一些费用就好了。
3.限制与不足
诚然,我们看到Serverless模式的好处,也需要看到Serverless模式的不足点。就如微信小程序云开发这种类型,其中就如“云函数”来说,业界尚未完善一个统一的开发语言、语法与运行库管理模式,例如 Node.js 场景,随着版本的不断更新迭代,需要平台不停去适配新的 Runtime 版本。另外,不同的开发语言往往还有很多的配套框架。例如 Node.js 生态的 Koa 和 Express 等等,这些框架往往依赖于系统平台的一些机制,而云函数本身需要额外的成本去适配这些框架,对框架的适配度也将大大影响相关语言开发者的使用意愿。
此外,就是成本制约与数据安全问题。传统的后端开发模式胜在所有的数据与运行环境搭建都在自己可控的范围内,而云开发一旦在上面做好了成熟的项目,后期的使用成本(定价方面)就可能会受到服务商的波动而波动。若成本变高,迁移云开发项目到别的平台又存在一定的成本与兼容性。
正如一个偏远的地区,附近一个银行,这个地区的居民只能存到这个银行,若这个银行的服务费大幅上涨,迁移到另一家偏远的银行需要考虑长途的费用,而继续留在这个银行,就只能“任人宰割”。同时,若这个银行十分不可靠,你的钱可能还会收到损失。此时,倒不如将钱放在家里自己保管,也许可能并没有银行管理那般高效,但是至少一切的一切,都掌握在自己手中。
4.结语
对于云开发和Serverless,开发者仍需切合实际考虑经济成本以及可能存在的各种风险。Serverless也许是一种好的趋势,但开发者们仍需好好度量,以实现利益最大化。