无服务器计算(Serverless Computing)来了,设备商先别急着跑,这其实是软件开发人员和管理者的春天。所谓“无服务器”是一种抽象概念,开发人员编好代码上传到云,无需配置或管理服务器即可运行代码,按照所编好的被管理代码计算时间付费。如果说DevOps(开发运维一体化)是敏捷协作的代表,那么无服务器计算强调的则是NoOps。
什么是NoOps?当然不是完全放弃运维,而是要突出自动化运维,避免更多的人工干预,与无服务器计算的思路有着异曲同工之妙。既然无法摆脱“显性”的基础设施,干脆就把应用程序从原有的框架中取出来。在一定程度上,算是改变了软件的开发和部署模式,对于开发者来说最直观的影响就是付费。事实上,随着虚拟机转向容器和微服务,这也为无服务器计算概念的推广奠定了基础,带来了更加细分化的需求。
原有整体交付的方式可以被拆分为单独功能或代码实现,即一段完整的业务流不仅能够体现为一段视频或一幅图片,也可以是一行代码,这些代码形成的片段均可实现完整功能。借助无服务器计算,系统能够自行编排代码片段。应用程序会直接在服务器上运行,几乎所有的管理工作交由服务商来负责,使用者无需进行预置、扩展、维护等操作,即可运行数据库、存储或软件程序。
无论是虚拟机还是容器,都可以看作是通过代码实现的方案,本质上与无服务器计算并不冲突。操作过程中,开发人员无需考虑选择什么容器,只要安心编写代码,由服务商将片段加以整合管理,节省了软件创建时的付出,让双方做各自擅长的事情,效率更高。在弹性基础架构中,开发者能够将应用“切成”小块通过高度扩展的方式部署。从某种程度上来说,无服务器计算为资源使用提供了新模式,其定位更像是介于IaaS和PaaS之间。
计费方面,开发者不用像原来那样为了数分钟或数小时的应用实例支付整套费用,而是只需支付某一段函数运行的几毫秒,这种方式是更精准的按需付费。按照这个逻辑,无服务器计算平台在云端似乎更适用于由众多微服务“拼接”而成的应用。无论是基础设施管理还是应用构建,均节省了不少“无用功”。
目前,涉足无服务器计算的不仅包括亚马逊(AWS Lambda)、微软(Azure Functions)、谷歌(Cloud Functions)、IBM(OpenWhisk)这样的巨头公司,还有Iron.io这样的垂直公司。这些服务各有特色,例如OpenWhisk主打开源,Azure Functions结合了微软IoT、SaaS方案,Iron.io则是希望构建主流公有云和私有云的全平台兼容,确保高度可移植性。
尽管有大厂商撑腰,无服务器计算也并非尽善尽美,至少在操作难易度、运行时间效率、开发语言支持等方面仍需完善。同时,由于开发者的代码控制权有所削弱,随之而来的安全性问题也必须引起重视。对于企业客户来说,微服务、容器、无服务器计算只是丰富了更多选项,至于如何在实践中提升效率,还要看开发者对架构和应用的评估,毕竟Serverless Computing不是万能药。
本文转自d1net(转载)