本篇文章分享来自淘系Node架构团队--张挺
每一个时代,历来不缺机会。前端
云原生的浪潮席卷而来,从 14 年到如今,上云的声音就没有停歇过,而现在到了 2020,云厂商都已经准备好了,而前端,是否也准备好踏入这纷争的领域,去拥抱时代给予的蜜糖,亦或者是带刺的玫瑰?git
你们都或多或少的在如今的云战场上接收到信息,也难免的去学习,对比各家云平台的功能,甚至还会实际调研,考虑用在本身的产品或者业务中,而阿里在内部通过一年的实践和总结,将 Serverless 和现有框架有机的整合到了一块儿,同时,但愿能简化现有社区的云函数开发。github
本篇文章就是交给你们如何避(快)免(速)踩(上)坑(手)。后端
PS.文末福利大放送,7天玩转云端开发,免费开发还有多重好礼!浏览器
而 Web 栈开发框架, 阿里的 Midway 体系也早早在去年就开始了新的尝试。从传统 Web 到 Serverless 体系的转换,没有那么容易,看起来很干净整洁的代码,在 Severless 体系中甚至变为了枷锁,步步桎梏。架构
俗话说,聚是一团火,散是满天星,就拿简单的 Web 请求来讲,你们想的是,我一个接口变为一个函数,很是简单。我一个应用,根据路由,可能会分为 1,2,3,4 ... 100 个接口吧。而事实是,一个 Web 请求,从接到数据的那一刻,坑就已经挖好了,等着跳呢。框架
第一个坑来了,我该选择哪一个平台呢?打开搜索引擎,各家云平台的广告接踵而至,为了不提早选择平台,midway faas 使用的是固定的模板代码,要使用它,须要安装咱们的 CLI 工具。less
midway faas 的 CLI "f" 也是 Node.js 写的,大部分前端开发者第一次使用 Serverless 即将从它开始。同时还集成了阿里云、腾讯云等众多云厂商云服务发布,并支持的开发、调试、部署等能力。前后端分离
咱们能够用 "f" 建立咱们的第一个函数示例。运维
它的 CLI 也是 Node.js 写的,因此极可能大部分前端开发者第一次使用 Serverless 都从它开始。
midway faas 的代码文件是以 class 的形式,这样全部的方法均可以是一个可复用的函数,而且还能够享受到传统 OO 的能力。
各个云平台以下的代码宣传深刻人心。
这些简单的宣传函数,类似又有着细微的不一样(不建议你们去尝试了), hello world
基本上是经过 callback 或者标准的格式来返回(还有 HTTP response)。
对于前端来讲,先后端分离,到 DevOPS,到全栈开发的洗礼,已经相对比较熟悉相似 Koa/Egg 等这一套 Web 开发的套路,到了 Serverless 下,个人代码怎么办呢?
别急,midway faas 已经作好了一切。
你们会发现,整个写法和传统的 koa 接口如出一辙,只要你会 koa,那么,在瞬间便可上手。用上你熟悉的 API,快速的进入开发节奏。
除此以外,你能够用上大部分 Midway Web 开发的装饰器,甚至直接把业务代码拷贝过来便可,整个 midway faas 框架会帮你完成整合和运行。
这个时候,咱们的代码写完了,按照 Serverless 传统的开发模式,要么本地装一个 Docker,按照平台的方式去测试,要么直接打包发布到平台去测试和调试。
在咱们的调研中,本地装 Docker 对前端来讲太不友好了,每当咱们提出要经过 Docker 作一点事情,试用方就会提出能不能轻量一些,开发 Web 能不能像以前的传统开发同样启动服务,刷新浏览器。
为此咱们的回答是“能”,经过 invoke
命令,既能够直接调用,也能够启动服务。
你熟悉的 http://127.1:3000
已经启动,开发和调试,一切都随你心意。
代码开发完成,也测试完成,咱们就能够发布到平台啦,这个时候,阿里云,腾讯云,其实就看你喜爱啦。
你想发布到哪一个平台,直接配置便可。
而后执行部署。
咱们广告看的很是多,无运维,按请求收费,低成本,简化逻辑,让 Serverless 走进千家万户。本质和传统应用开发是有 Gap 的,Serverless 经过 yml 配置聚合资源,由平台提供资源服务,而业务只须要编写单一的逻辑代码,而因为逻辑的简化以后,再也不须要考虑复用,迭代,乃至维护和管理。
虽然咱们的代码能够在编写时不须要考虑多个接口了,可是还有最开始的那个问题没有回答, “接口多了发布、管理怎么办?”。
midway faas 采用的是接口自定义聚合的模式,根据流量模型,用户能够本身决定部署模式,咱们的 f.yml
中能够进行自由配置,你能够决定将全部接口汇聚到一块儿,部署到一个函数容器中享受总体的扩缩,也能够将热点的接口随意移出单独部署,这一切都不须要修改代码,只须要动 yml 配置文件便可。
咱们总结了下,避坑指南告诉了你几个事情:
一、避免提早选择平台,专一于开发
二、避免新造轮子,复用传统能力
三、避免平台测试,提早本地调试
四、避免额外收费,尽量使用免费方案
就这样,最后咱们避开了各类坑,也没有花特别额外的钱(16块买了个域名),就完成了一些简单的 Web 接口(应用),下降了成本(走上了褥社会主义平台羊毛的道路)。
midway faas 是一个帮前端入门 Serverless 的框架,也是将来能力协同,生产上云的框架,这些避坑的处理只是其中的一小部分,他的完整能力其实更强,提供了更多传统的依赖注入,装饰器自定义,业务配置管理,组件化等能力,甚至还有自定义运行时,私有化部署等方案,将来也将一一展示给你们。
咱们但愿 "Midway will always be with you"。
仓库:https://github.com/midwayjs/midway-faas <-- 戳戳 Star
文档:https://www.yuque.com/midwayjs/faas
最近阿里云云工做台已经将 midway faas 的一些示例作成了云上版本,也对开发进行了深度定制,既有 Web 栈应用,也有 SSR 示例,都只须要点选便可搭建完成,用传统方式开发,支持扩展能力,又有函数接口的灵活,还不花钱,你们还在等什么呢。
地址:https://workbench.aliyun.com/camp
玩转云端开发 7 天训练营