当前位置: 首页 > Web前端 > HTML

说起Serverless

时间:2023-03-28 12:59:07 HTML

,与前端工程师自然互补作者:Linglun_(阿里云前端技术专家)_作为一名前端工程师,我们的使命是为用户提供良好的前端用户体验。随着云原生时代的到来,显然我们可以做得更多。Serverless产品具有免运维、按需付费、自适应弹性等特点,因此我们可以利用云端的各种Serverless能力,以相对较低的成本开发更酷的产品,为客户创造更多价值。如何构建云原生的现代Web应用程序?我们先回顾一下我们是如何发布一个静态网站的。在云原生时代之前,我们的想法可能是需要先找服务器,安装Nginx,上传静态文件,再经过一系列的配置,最终完成网站发布。做完这些,发现用了半天时间。事实上,花在运维上的时间并没有为我们的客户创造价值。但这实际上只是一个开始。随着业务的发展,我们要一一解决稳定性、弹性、安全、成本等问题。我们会在运维上花费越来越多的时间和精力。否则,这个网站可能只是一个玩具。但是随着云原生时代的到来,发布静态网站就简单多了,我们可以很方便的通过云产品来托管我们的网站。比如可以使用阿里云OSS提供的工具将静态资源上传到OSS,然后开启一键托管。另外,为了让客户更快打开页面,还可以通过阿里云CDN将OSS设置为CDN的源站,让静态资源更贴近客户,客户体验更好。这两款产品都是按量付费的serverless产品,免运维,大大降低了我们各种复杂的运维成本。我们可以花更多的时间在研发和体验上,为我们的客户创造更多的价值。但是随着业务的发展,如果我们的网站不仅仅是一个静态网站呢?对外服务API(需要连接缓存、数据库、消息队列、文件存储等)定时执行任务,甚至执行海量任务发送邮件/短信/即时消息(钉钉、微信、飞书),让智能语音调用处理用户上传的图片、音视频(转码、缩略图、色情识别、水印、GPU推理)服务端渲染SSR页面大促、秒杀,收集网站用户行为,分析如何提高用户转化rate面对这些需求,我们是不是又要上服务器了?为了保证服务的稳定性、弹性、安全性和成本,我们是否要在运维上花费大量的时间?有没有什么云产品可以像OSS/CDN解决静态网站的运维问题一样,解决我们的后端需求?面对这些挑战,阿里云的Serverless产品FunctionComputeFC是一个不错的选择。除了通过函数计算FC处理API请求和大规模任务,您还可以在函数计算FC中接入阿里云丰富的云服务,如RDS、SLS、Tablestore、NAS或其他第三方服务,以满足存储要求。计算、网络、安全、大数据、人工智能等业务需求。各种Serverless云产品就像是前端工程师的“武器库”,我们可以利用这些云产品为客户提供优质的服务。函数计算FC的优势及相关原理引入极致弹性,轻松应对流量高峰。函数计算FC会根据请求量自动进行毫秒级弹性扩容,快速调度计算资源。这使我们能够轻松处理海量API请求和大规模并发任务。在使用函数计算时,可以为函数配置一个“实例并发”,表示一个函数实例可以同时处理的最大请求数。函数实例本质上是一个Linux安全容器,是函数对外提供服务的最小单元。例如,当“实例并发”设置为20时,如果函数计算平台同时接收到100个请求,则会拉起5个函数实例来处理这些请求。处理完这些请求后,函数实例将被冻结。如果接下来的2-5分钟内没有新的请求(实例冻结后不计费),函数实例将自动销毁。在某些场景下,如果业务对延迟非常敏感,或者业务代码启动缓慢,可以配置弹性规则设置最小函数实例数,让函数计算FC提前启动函数实例,保证用户经验。您还可以通过设置最大函数实例数来限制最大函数实例数,从而保护下游服务和控制成本。相比于传统的需要自己进行服务器扩容和缩容操作的服务器模式,函数计算FC的自动化弹性方式不仅可以减少这种繁琐的扩容运维操作,还可以避免扩容不足带来的问题在传统的服务器模式下。及时造成的业务不可用,将提高系统的稳定性。降低成本,提高资源利用率在函数计算FC中,CPU、内存、GPU等实例规格可以自由配置。可创建最小0.05核128MB的函数,提供极小梯度的规格选择。基本上,可以配置应用程序所需的任何规范。函数计算FC的计费是毫秒级别的。比如我们代码业务逻辑的执行时间是5毫秒,那么我们只需要为这5毫秒付费。而在没有流量的时候,函数计算FC会将函数实例收缩为0。这对于业务量还没有上升的新业务,或者一些本身调用量很少的中长尾业务,是非常友好的,我们不需要为他们支付固定的服务器费用。免费配置规范、毫秒级计费、0缩容等特性可以帮助我们大幅提升资源利用率,大幅降低成本。免运维,更安全在传统的服务器架构中,我们始终需要关心运行应用的物理机的资源使用情况。在函数计算FC中,我们不需要关心底层物理机的资源使用情况。函数计算FC平台会自动调度和运行资源。但是如果我们的业务代码消耗过多资源,比如OOM等,函数实例会自动重启,请求失败。这时候我们就需要根据监控指标和日志,找出代码中的问题,或者修改函数的规范。为函数实例提供更多资源。函数计算FC也提供了函数默认的HTTP/HTTPS域名,方便我们访问函数。它还支持将自己的域名绑定到函数上。因此,与传统的服务器架构相比,在使用函数计算时,我们避免了应用服务器和负载均衡服务器的运维和采购成本。从安全的角度来看,由于传统服务器需要一直运行,当安全配置不合理,或者代码漏洞没有及时修复时,黑客可以通过扫描IP和端口来发现并侵入服务器。由于函数计算FC不会一直运行一个实例,也不会直接将IP暴露在公网,因此可以避免此类被扫描被攻破的问题。另外,我们也不需要关心操作系统的安全漏洞。当出现安全漏洞时,函数计算FC会第一时间完成修复。当需要访问其他服务时,函数计算FC会根据配置自动生成一个临时密钥。该临时密钥的有效期为36小时,无需在代码或配置文件中编写重要的访问密钥,从而降低因密钥泄露带来的风险。随着业务的不断发展,您还可以购买阿里云的Web应用防火墙WAF产品来保护功能安全。零修改,研发效率高函数计算支持创建“内置运行时”、“自定义运行时”和“容器镜像”3类函数。并提供API、SDK、控制台和ServerlessDevs工具,帮助我们完成应用的开发、构建、部署和观察。在使用“内置运行时”时,我们需要根据函数计算FC定义的接口规则编写代码来处理请求。例如,以下是一个Node.jsAPI示例。用这几行代码创建一个函数后,我们可以立即在我们的网站中使用这个API。使用“自定义运行时”,我们可以在不修改代码的情况下,将SpringBoot、Flask、Express、NextJS、NestJS、Gin等Web框架开发的应用运行在函数计算上。你只需要在函数计算中配置应用监听的“端口号”和“启动命令”即可。这与使用传统服务器进行部署非常相似。下图中的代码,熟悉Express框架的同学应该不会陌生。在使用“容器镜像”时,我们可以完全自定义应用程序的执行环境,而无需学习如何在函数计算运行环境中更新Linux版本和GCC版本,安装各种依赖、字体等。另外,因为容器镜像的可移植性非常好,我们不用担心被云厂商束缚。同一个容器可以运行在云端或本地数据中心的服务器上,也可以运行在云端或本地数据中心的Kubernetes集群中。甚至可以在服务器、Kubernetes集群、函数计算上同时部署一个镜像,通过几个不同的产品完成容灾。总结通过函数计算FC等Serverless云产品,我们不需要管理服务器等基础设施。Serverless云产品会为我们准备资源,以弹性、安全、可靠的方式运行我们的应用程序,存储我们的数据,并为我们提供其他额外的附加值。Serverless的免运维特性自然是对前端工程师的补充。前端工程师只需编写业务代码,即可快速构建云原生现代Web应用。让前端工程师有更多的时间专注于为用户创造价值。