聊聊与前端工程师天然互补的 Serverless

作者:灵轮_(阿里云前端技术专家)_
作为前端工程师,我们的使命是为用户提供良好的前端用户体验。随着云原生时代的到来,显而易见的,我们能做的更多了。Serverless 产品的特点是免运维、按量付费和自适应弹性,所以我们可以利用云上的各种 Serverless 能力,用相对更低的成本开发出更酷的产品,为我们的客户创造更多价值。
如何构建云原生现代化的 Web 应用?
让我们先回顾一下,我们是如何把一个静态网站发布出去的。
在云原生时代之前,我们想到的可能是需要先找一台服务器,安装 Nginx,然后上传静态文件,再经过一系列的配置,最终完成网站的发布。完成这些以后,发现已经花掉了小半天的时间,实际上这些花在运维上面的时间其实并没有为我们的客户创造价值。但这其实还只是一个开始,随着业务的发展,稳定性、弹性、安全和成本等问题,我们都要逐一解决,我们花在运维上的时间和精力会越来越多。否则,这个网站可能只是一个玩具。
但是随着云原生时代的到来,发布静态网站简单了很多,我们可以通过云产品,轻松地托管我们的网站。例如,可以将网站通过阿里云对象存储 OSS 提供的工具,将静态资源上传到 OSS,然后开启一键托管。此外,为了让客户能够更快地打开页面,还可以通过阿里云 CDN,将 OSS 设置为 CDN 的源站,从而让静态资源离客户更近,让客户的使用体验更好。这两款产品都是按量付费的免运维 Serverless 产品,它们大大地减少了我们各种繁杂的运维成本。我们可以把更多的时间花在研发和体验上,为我们的客户创造更多价值。
但是随着业务的发展,我们的网站如果并不只是一个静态网站了呢?
- 对外服务的 API(需要对接缓存,数据库,消息队列,文件存储等)
- 定时执行任务,甚至是执行海量任务
- 发送电子邮件/短信/即时消息(钉钉,微信,飞书),拨打智能语音电话
- 对用户上传的图片,音视频等进行处理(转码,缩略图,鉴黄,加水印,GPU 推理)
- 服务端渲染 SSR 页面
- 大促,秒杀
- 采集用户在网站上的行为,分析如何提高用户的转化率
面对这些需求,难道我们又要去找服务器?为了保证服务的稳定性,弹性,安全和成本,难道我们又要把大量的时间花在运维上?有没有云产品可以像 OSS/CDN 解决静态网站的运维问题一样,解决我们的这些后端需求呢?
面对这些挑战,阿里云的 Serverless 产品**函数计算 FC **是一个不错的选择。除了通过函数计算 FC 处理 API 请求和大规模任务之外,还可以在函数计算 FC 中访问阿里云的 RDS、SLS、Tablestore、NAS 等丰富的云服务或者是其他第三方服务,从而满足对存储,计算,网络,安全,大数据,人工智能等各种业务的需求。
各种 Serverless 云产品就像是前端工程师的“武器库”,我们可以使用这些云产品来为我们的客户提供高质量的服务。

函数计算 FC 的优势和相关原理介绍
极致弹性,轻松应对流量洪峰
函数计算 FC 会根据请求量自动进行毫秒级弹性扩容,快速调度计算资源。从而使我们可以轻松应对海量 API 请求和大规模的并发任务。
在使用函数计算时,可以为函数配置一个“实例并发度”,这个并发度代表一个函数实例最多可以同时处理多少个请求。函数实例本质上是一个 Linux 安全容器,它是函数对外提供服务的最小单元。
例如,在“实例并发度”设置为 20 时,如果函数计算平台同时收到了 100 个请求,则会拉起 5 个函数实例来处理这些请求。处理完这些请求后函数实例会被冻结,如果在接下来的 2~5 分钟内(实例冻结以后就不再计费了)如果没有新的请求,函数实例将被自动销毁。在某些场景下,如果业务对延迟非常敏感,或者业务代码启动很慢,可以通过配置弹性规则,设置最小函数实例数量,这样函数计算 FC 会预先启动好函数实例,从而保证用户的使用体验。也可以通过设置函数实例的最大数量,限制函数实例的最大数量,从而保护下游服务,并控制成本。
对比传统服务器模式下需要自己进行服务器的扩容缩容的操作,函数计算 FC 这种自动弹性的方式不仅可以减少此类繁锁的扩缩容运维操作,也可以避免传统服务器模式下由于扩容不及时导致的业务不可用,从而提高系统的稳定性。
降低成本,提高资源利用率
函数计算 FC 中可以自由配置 CPU,内存,GPU 等实例的规格。最小可以创建 0.05 核,128 MB 的函数,并提供了极小梯度的规格选择,基本可以做到应用需要什么规格就配置什么规格。
函数计算 FC 的计费是毫秒级别的,比如我们的代码业务逻辑执行的时间为 5 毫秒,那么我们只需为这 5 毫秒进行付费。并且在无流量时,函数计算 FC 会将函数实例缩容到 0。这对业务量还没有起来的新业务,或者是一些调用本身就很少的中长尾业务非常友好,我们无需为它们付出固定的服务器费用。
自由配置规格,毫秒级别计费,缩容到 0 等特点可以帮助我们大幅提升资源利用率,极大的降低成本。
免运维,更安全
在传统的服务器架构中,我们时刻需要关心运行应用的物理机的资源使用情况。在函数计算 FC 中,我们无需关心底层物理机的资源使用情况,函数计算 FC 平台会自动调度并运维资源。但是如果是我们的业务代码消耗了过度的资源,例如发生OOM 等,函数实例会自动重启,请求会失败,这时我们需要根据监控指标和日志找出代码中的问题,或者修改函数的规格,给函数实例更多的资源。
函数计算 FC 也提供了函数默认的 HTTP/HTTPS 域名,从而方便我们访问函数。同时也支持绑定自己的域名到函数。所以相对于传统的服务器架构,在使用函数计算时,我们就免去了对应用服务器和负载均衡服务器的运维和购买成本。
从安全的角度出发,由于传统服务器需要一直运行着,在安全配置不合理时,或是没有及时修复代码漏洞时,黑客可以通过扫描 IP 和端口,发现并攻入服务器。函数计算FC因为不会一直起着实例,也不会直接将 IP 暴露在公网上,因此可以避免此类被扫描攻破的问题发生。
除此之外,操作系统的安全漏洞我们也无需关心,在出现安全漏洞时函数计算 FC 会第一时间完成修复。
在需要访问其他服务时,函数计算 FC 也会根据配置,自动生成临时密钥,这个临时密钥的有效期是 36 小时,所以无需将重要的访问密钥写在代码里或配置文件中,从而降低由于密钥泄漏产生的风险。
随着业务的不断发展,也可以额外购买阿里云的 Web 应用防火墙 WAF 产品来保护函数安全。
零改造,研发效率高
函数计算支持创建 3 种类型的函数,“内置运行时”,“自定义运行时”和“容器镜像”。并且提供了 API,SDK,控制台和 Serverless Devs 工具,帮助我们完成应用的开发、构建、部署和观测。
在使用“内置运行时”时,我们需要按照函数计算 FC 定义的接口规则编写代码处理请求。例如,下面为一个 Node.js 的 API 示例,使用这几行代码创建完函数之后,我们就可以立刻在我们的网站中使用这个 API 了。

使用“自定义运行时”时,我们无需改造代码就可以将 SpringBoot、Flask、Express、NextJS、NestJS、Gin 等 Web 框架开发的应用跑在函数计算上。只需在函数计算中配置应用监听的“端口号”和“启动命令”即可。它和使用传统服务器的部署方式非常类似。下图中的代码,对熟悉 Express 框架的同学来说,应该是再熟悉不过了。

使用“容器镜像”时,我们可以完全定制应用的执行环境,不用学习如何更新函数计算运行环境中的 Linux 版本,GCC 版本,安装各种依赖,字体等问题。此外,因为容器镜像的可移植性极好,我们不用担心被云厂商绑定,同一个容器可以运行在云上或本地数据中心的服务器上,或者是云上或本地数据中心的 Kubernetes 集群里。甚至您可以同时将一个镜像部署在服务器、Kubernetes 集群和函数计算里,通过几款不同的产品完成灾备。

总结
通过函数计算 FC 等 Serverless 云产品,我们无需管理服务器等基础设施,Serverless 云产品会为我们准备好资源,以弹性、安全、可靠的方式运行我们的应用,存储我们的数据,并为我们提供其他额外的附加价值。
Serverless 的免运维特性与前端工程师天然互补,前端工程师只需编写业务代码,即可快速搭建云原生的现代化的 Web 应用。让前端工程师可以将更多的时间专注在为用户创造价值上。
更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。
聊聊与前端工程师天然互补的 Serverless的更多相关文章
- GMTC 2019-前端夜话《聊聊前端工程师的成长和发展》会后简要总结
今天晚上去参加了winter主持的前端夜话:聊聊前端工程师的成长和发展圆桌论坛分享会,真的是收益颇多,这次的这个嘉宾阵容也是很有诚意的,在现在前端领域都是有一定影响力的嘉宾,嘉宾阵容也列一下: 主 ...
- 淘宝前端工程师:国内WEB前端开发十日谈
一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是" ...
- 前端工程师手中的Sublime Text
原文地址:http://css-tricks.com/sublime-text-front-end-developers/ 我的Blog:http://cabbit.me/sublime-text-f ...
- web前端工程师在移动互联网时代里的地位问题
支付宝十周年推出了一个新产品:支付宝的十年账单,我也赶个时髦查看了一下我的支付宝十年账单,哎,感慨自己真是太屌丝了,不过这只是说明我使用淘宝少了,当我大规模网上购物时候,我很讨厌慢速的快递,所以我大部 ...
- WEB前端工程师的职业发展路线图、怎样做WEB前端职业规划
20151028整理 —————————— 知乎-Web前端的路该怎么走?(2015年发表) 在规模越大的团队,工作划分得越细腻,专注的点就越深,但同时就可能会被限制在某个狭窄点上,成为某个角落的技术 ...
- web前端工程师在移动互联网时代里的地位问题 为啥C/S系统在PC端没有流行起来,却在移动互联网下流行了起来 为啥移动端的浏览器在很多应用里都是靠边站,人们更加倾向于先麻烦自己一下,下载安装个客户端APP
web前端工程师在移动互联网时代里的地位问题 支付宝十周年推出了一个新产品:支付宝的十年账单,我也赶个时髦查看了一下我的支付宝十年账单,哎,感慨自己真是太屌丝了,不过这只是说明我使用淘宝少了,当我大规 ...
- web前端工程师面试技巧 常见问题解答
web前端工程师面试技巧 常见问题解答 每年的春招是各企业需求人才的黄金时期,不少的前端大牛或者前端新手在面试时候不知道怎么来回答面试官的问题,下面来看下我转载的这篇文章吧,希望对从事前端工作的你有所 ...
- 物联网是前端工程师的新蓝海吗? | Live笔记
物联网是继 Web .无线之后的又一次重大技术变革,在变革的大潮中,程序员的知识体系和思维方式将面临全面更新. 前端开发的历史 在准备这个live的过程中,我回顾了前端开发短暂的历史,有几次我认为非常 ...
- Web前端工程师成长之路——知识汇总
一.何为Web前端工程师? 前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript ...
- 前端工程师技能之photoshop巧用系列第三篇——切图篇
× 目录 [1]切图信息 [2]切图步骤 [3]实战 前面的话 前端工程师除了使用photoshop进行测量之外,更重要的是要使用该软件进行切图.本文是photoshop巧用系列的第三篇——切图篇 切 ...
随机推荐
- Markdown语法入门与进阶指南
一.Markdown简介 Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(john Gruber).它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文 ...
- [CF1416F] Showing Off
题目链接 如果把方向看做有向边,整个图是一个内向基环树. 所以考虑哪些点有可能放在基环树的非环部分上,当且仅当一个点周围有严格小于他的点. 由于图一定是二分图(黑白染色),没有奇环,所有偶环一定可以拆 ...
- [P7880][Ynoi2006] rldcot
[Ynoi2006] rldcot 题目描述 给定一棵 \(n\) 个节点的树,树根为 \(1\),每个点有一个编号,每条边有一个边权. 定义 \(dep(x)\) 表示一个点到根简单路径上边权的和, ...
- 16级C程序设计竞赛C题
问题 C: 回文 时间限制: 1 Sec 内存限制: 128 MB提交: 74 解决: 36[提交][状态][讨论版] 题目描述 给定一个字符串,你可以对字符串做任意改动,你可以在任意地方增加一个 ...
- 初次认识 Git (v2.x)
什么是版本控制? 版本控制,也称为源代码控制,是一种跟踪和管理软件代码变更的实践.版本控制系统是软件工具,可帮助软件团队管理源代码随时间推移而发生的变更.随着开发环境的加速,版本控制系统可以帮助软件团 ...
- 数字孪生为何需要融合GIS?以智慧城市项目为例说明
数字孪生和地理信息系统(GIS)是两个在现代科技中崭露头角的概念,它们的融合为智慧城市项目带来了革命性的机会.本文将解释数字孪生为何需要融合GIS,并以智慧城市项目为例进行说明. 数字孪生是一种虚拟模 ...
- 【1】从零玩转OSS阿里云存储服务之阿里云平台等操作-1-cong-ling-wan-zhuan-oss-a-li-yun-cun-chu-fu-wu-zhi-a-li-yun-ping-tai-deng-cao-zuo
title: [1]从零玩转OSS阿里云存储服务之阿里云平台等操作 date: 2021-06-09 17:21:12.037 updated: 2021-12-26 17:43:18.92 url: ...
- Huggy Lingo: 利用机器学习改进 Hugging Face Hub 上的语言元数据
太长不看版: Hub 上有不少数据集没有语言元数据,我们用机器学习来检测其语言,并使用 librarian-bots 自动向这些数据集提 PR 以添加其语言元数据. Hugging Face Hub ...
- MySQL的事务(看看也许有帮助呢)
MySQL的事务 一.事务的概念 在MySQL中,只有InnoDB存储引擎才支持事务. 事务的处理用来维护数据库数据的完整性,保证同一个事务里的一批SQL语句,要么全部执行,要么全部不执行. 事务用来 ...
- CodeForces 1030E Vasya and Good Sequences 位运算 思维
原题链接 题意 目前我们有一个长为n的序列,我们可以对其中的每一个数进行任意的二进制重排(改变其二进制表示结果的排列),问我们进行若干次操作后得到的序列,最多能有多少对 \(l, r\) 使得 \([ ...