一文读懂无服务器架构的优势和劣势,以及用例

无服务器计算是云用例中火热的技术架构之一。在过去的几年里,AWS推出其Lambda平台之后,无服务器已经成为BBC,Airbnb,Netflix,耐克等品牌的主流架构,并且更多采用新方法来处理其后端。

一文读懂无服务器架构的优势和劣势,以及用例

首先无服务器这个概念并不代表该技术的实际状态。因为还有一台服务器,但你只是不需要购买,管理或维护它。你将所有服务器管理外包给其他人,在你的云基础架构中添加抽象级别。对于开发人员来说,这意味着最终推动了服务器后台配置的能力和创建应用程序之间更加友好。对于企业来说,带来了更快的上市时间,以及专注于开发和部署的应用程序,而不是如何管理服务器的后台配置。基本上,无服务器方法是由业务驱动的,第三方处理你的技术问题,而用户自己专注于交付。

现在,你可能会想:“我们已经将我们的基础架构放在了云中,并且不拥有任何硬件。那么,这跟无服务器计算有什么不同呢?”

使用传统的云模式(通常称为Cloud 1.0),只需将存储和网络移动到云中,但仍需通过虚拟机(VM)远程访问和监控它。无服务器的方法将它带到了另一个级别。程序员选择编写代码的环境(Node.js.Python,C#等),并上传代码文件,然后由系统自动部署。通过使用供应商自己的生态系统,你可以轻松描述这些服务如何通信以及他们可以访问数据的位置。这是一种近乎NoOps的方法,大多数Ops都是外包给供应商的。

一文读懂无服务器架构的优势和劣势,以及用例

图:应用程序部署如何随着云发展而变化

为了更深入地了解它如何工作,以及它带来的好处,我们首先描述一下无服务器架构的一些定义特征。

无服务器的特征

Function-as-a-Service

无服务器计算的另一个名称是功能即服务(FaaS),指的是开发人员将代码组装到称为功能的构建块中的方式。这与微服务非常相似,在这种微服务中,一个大型代码块被分割成小的,可管理的元素,可以分别并行地进行缩放和更新。然而,FaaS通过进一步分解来将其提升到一个新的水平。

一文读懂无服务器架构的优势和劣势,以及用例

图:微服务与无服务器:相同的概念,不同的实现

事件驱动的编程

你显然不希望家里安装的摄像头记录你的街道24/7发生的一切。这就是为什么当我们不在家时,我们使用激活的摄像头来检测可疑行为。无服务器架构的工作原理类似:就像运动传感器一样,它只在特定的预编程事件触发时才起作用。无服务器是无状态的,这意味着它只执行一个任务,不存储或重用请求。

可伸缩服务

无服务器方法非常灵活,是扩展应用程序的理想选择。FaaS供应商将你的每个功能都分别放在不同的容器中运行。这使你可以无限制地自动调整它们。这是无服务器和传统云之间的另一个区别。在这里你不必购买预订的资源量,你可以尽可能地灵活。

每次调用帐单

在传统的云模式中,你需要服务器随时准备处理请求。不管实际使用的CPU时间和内存如何,持续的服务器可用性都会导致每月大量的后端成本。或者,无服务器供应商允许你为每个请求支付一小部分的费用,这意味着你的成本仅取决于你本月的流量。

AWS Lambda,微软Azure Functions,Google Cloud Functions和IBM Bluemix OpenWhisk等功能即服务供应商提供了类似的解决方案。谈到定价,他们在预算上很容易:高达100万的请求是免费的,给你一个很好的起点。差异主要在于社区支持和支持语言的可用性,这使得选择更具个性化。

无服务器计算的优点

在工程方面,无服务器的好处是显而易见的。这是一种简化的开发方法,消除了复杂的层面,简化了工程设计。但是商业方面呢?你如何说服利益相关者,证明FaaS是未来方向?

比传统云便宜

正如我们所提到的,FaaS允许你为每个请求支付一小部分的费用。如果你是一家创业公司,那么你几乎可以免费创建一个MVP,并且轻松进入市场,而不需要处理大量的账单以获得最小的流量。

可扩展

每个人都想要构建下一个优步,但是你会冒险调配基础设施以防万一?无服务器,你不必做出选择,但你仍然可以为任何增长量做好准备。

降低人力资源成本

就像你不必花费数百或数千美元购买硬件一样,你可以停止为工程师付费来维护它。

能够专注于用户体验

允许公司投入更多时间和资源来开发和改进面向客户的功能。

无服务器计算的缺点

供应商锁定

当你让供应商控制你的运维时,你必须按照他们的规则来玩。如果你已将应用程序设置到Lambda上,将应用程序移植到Azure也不是一件容易的事情。同样的问题涉及编程语言:现在只有Node.js和Python开发人员可以自由选择现有的无服务器选项。

学习曲线

尽管有全面的文档和社区资源,你可能很快就会发现FaaS工具的学习曲线非常陡峭。此外,为了平滑的迁移到无服务器,你可能希望将你的“庞然大物”分为微服务,这是另一个需要解决的复杂任务。这就是为什么最好从无服务器工具经验丰富的专业人士那里获得帮助。

不适合长期任务

Lambda给你五分钟执行任务,如果花费更长时间,你将不得不调用另一个函数。无服务器非常适用于发送电子邮件等短实时或接近实时的流程。但长时间操作(如上传视频文件)需要额外的FaaS功能,或者更适合“服务器”的架构。

无服务器架构用例

目前,大多数技术采用者都是初创公司,他们寻求平滑扩展和降低入口障碍的可能性。无服务器也是一种完美的方法,适用于不连续运行,但具有安静时段和高峰流量的应用程序。

物联网应用

无服务器方法的实时响应特性非常适合物联网用例。上面已经提到的激活摄像头,以及对天气,温度或健康状况变化作出反应的应用程序,对于无服务器用例而言是完美的,它不会让你的服务全天候闲置。

虚拟助理和聊天机器人

希望得到即时响应,这就是无服务器数据处理速度更快的原因。随着你的应用程序从一百个增加到几千个用户,你的处理时间也应该保持不变,FaaS可以自动处理。

图像丰富的应用

为了保持良好的用户体验,开发人员必须为不同的屏幕尺寸提供多个版本的相同图像,从台式机到平板电脑和智能手机。这显著减少了加载时间。然而,来自AWS和Google的工具将自动优化你的图像以满足任何需求,使其成为适合图像大量应用的完美解决方案。

敏捷和持续集成管道

仅当某个事件被触发时才运行代码的想法完全符合敏捷或持续集成原则。将代码分离成函数还有助于纠正错误和发送更新。无服务器是实现最大自动化和快速部署过程的整体友好方式。

无服务器是未来吗?

走向无服务器不仅仅意味着技术变革,而且意味着业务变革。对于许多在传统基础设施上运行的公司而言,迁移将是痛苦的,并不具有成本效益。当你已经建立了工作流程时,采用FaaS工具来彻底摆脱服务器管理是很难证明的。另外,无服务器远非主流,尽管它朝着这个方向发展并且非常快。

Gartner预测,在2017年的新兴技术炒作周期中,无服务器/FaaS将在未来2-5年内达到如机器学习,VR和物联网的生产力水平。该技术已经可用,而真正的挑战是确定可能用例的广度,并等待来自所有供应商的更大的编程语言和功能支持。

相关推荐