无服务器服务器的Allure计算,尽管它的名字,仍然运行在服务器上.
区别在于你没有管理它们。
你部署函数,云提供方处理缩放,补丁和可用性.
承诺很简单:你专注于代码,而不是基础设施。
这确实吸引了许多项目,但并非银弹.
让我们来谈谈什么时候没有服务器,什么时候变得头痛.
当无服务器帮助
1.
Spiky和不可预测的交通 Server无服务器比例自动.
如果用户突然激增,函数会旋转来处理负载,然后在闲置时缩放为零.
你只付你用过的钱 这对流量可变的API来说是理想的,比如移动的app后端可以看到每天的高峰和安静的夜晚.
例如,使用 AWS Lambda 和 API Gateway 的简单 REST 端点:没有服务器配置,没有负载平衡器设置.
它只是工作起来。
2.
Event-Driven Worldloads 服务器在对事件的反应方面表现优异:文件上传,数据库更改,消息在队列中.
您可以用最小代码粘贴服务 。
例如,一个图像被上传到S3时重新大小化: 这是一个完美的无服务器使用案例:短命,无国籍,以及事件触发.
3.
减少业务间接费用 对于小团队或侧面项目来说,不需要补丁服务器,配置自动缩放,或者担心高可用性是一个巨大的胜利.
你可以更快地运送特性 因为你没有花时间在基础设施上。
当无服务器伤害
1.
长跑过程 多数无服务器供应商拥有最大执行时间.
AWS Lambda默认为3秒,最长可达15分钟.
Google Cloud函数最多可运行9分钟.
如果需要处理大文件,进行复杂的计算,或者处理流线,就会被击中极限.
你可能会被迫将工作分成更小的块或者使用额外的服务,比如Step函数,这增加了复杂性.
2.
寒冷的开始 当一个功能有一段时间没有被引用时,平台需要初始化:加载您的代码,回旋一个容器,并运行初始化.
这可以增加100-500ms的耐用性,或超过Java或.NET.
如果您有用户化的 API , 延迟可以明显 。
缓解措施存在(提供货币、保持功能温和),但成本会增加,成本收益会减少。
3.
高成本、常载 如果你有稳定的流量流,没有服务器会比传统的服务器更昂贵. 24/7全天候运行的专职志愿人员可能比每次付费都要便宜。
例如,一个每月运行一亿次的函数可能会耗资巨大,特别是如果它使用内存或外部服务.
你需要估计你的工作量和比较价格。
4.
调试和可观察性挑战 分布式系统很难调试.
在没有服务器的情况下,您的代码会运行在电平环境中,不能将SSH放入框中.
你依赖记录和追踪工具。
如果工作流程复杂,具有多种功能,那么在它们之间追踪请求可能很困难。
您通常需要设置分布式追踪( 如 AWS X- Ray) , 并对记录进行纪律处分 。
5.
供应商无锁服务器与云供应商的生态系统密切相关。
你会用他们的事件源,他们的SDK, 和他们的配置。
向另一供应商转移或采用基于VM的方法需要进行重大的再设计。
如果您想要可移植性, 您需要将您的功能抽象到一个共同的界面后, 它会增加间接费用 。
以“决定”为起点, 如果是,则无服务器是一个强大的候选人。
我的职能是短暂和无国籍的吗?
不错。
我有一支队伍可以处理分布式调试吗?
如果不是,也许要坚持单地 我可以预测我的交通吗?
若是常和高, VM可能更便宜.
无服务器是一种工具,而不是一种宗教.
以相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相 最终的想法,我用无服务器 工作cron,webhooks, 和小API,