阿里 Midway 正式发布 Serverless v1.0,研发提效 50%

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 在过去的半年里,Midway FaaS 收获了很多同学的关注,也有不少大企业已经直接开始使用,在此感谢你们。今天,Midway FaaS 将演进为 Midway Serverless,并正式成为 Midway 体系的核心场景,同时正式发布 v1.0 版本。

Github: https://github.com/midwayjs/midway, 开源为了前端和 Node.js 的发展,请到 Github 点 Star!


去年阿里提出 Serverless 架构,并利用其新一代研发架构,减少了大量研发人员对基础设施和运维的关注。对前端开发者而言,他们只需写几个函数即可实现后端业务逻辑,推动业务快速上线,让整个前端研发效能提升 50%。


在过去的半年里,Midway FaaS 收获了很多同学的关注,也有不少大企业已经直接开始使用,在此感谢你们。今天,Midway FaaS 将演进为 Midway Serverless,并正式成为 Midway 体系的核心场景,同时正式发布 v1.0 版本。


v1.0 版本代表着一个正式的版本,可以放心的使用。通过整个 Midway Serverless 新体系,我们将阿里的 Serverless 能力逐步开放,前端将进入一个崭新的时代。就像两年前说的一样,开源只是开始,终态远没有到来。


如今的 Serverless,是云厂商各自开疆拓土的黄金时代,也是各位尝试的最好年代,如今 Node.js 在这个时候成为了最佳选择,Midway 体系也当仁不让地站在这十字路口,去朝着引领的方向去行。


未命名2.jpg

什么是 Midway Serverless


就像前面提到的一样,Midway Serverless 是套面向 Serverless 的解决方案,它包括框架,运行时,工具链,配置规范几个部分,这几部分的组合之后,提供了一些面向 Serverless 体系的特有能力:

  1. 平台间迁移更容易

    • 通过提供统一的配置规范以及入口抹平机制,让代码在每个平台基本相同;
    • 扩展不同云平台的运行时 API,不仅能加载通用的平台间扩展,也能接入公司内部的私有化部署方案;
  2. 让应用更易维护和扩展

    • 提供了标准的云平台函数出入参事件定义;
    • 提供了多套和社区前端 React、Vue 等融合一体化开发的方案;
    • 使用了 TypeScript 作为基础语言,方便应用扩展和定义;
    • 提供了完善的 Midway 体系标志性的依赖注入解决方案;
  3. 生态更轻量和自由

    • 函数体系复用 koa 的生态和 Web 中间件能力,在处理传统 Web 时更加得心应手;
    • 提供 egg 组件复用 egg 插件的生态链,企业级开发链路更简单顺畅;
    • Midway 体系的装饰器能力统一,让传统 Web 迁移到 Serverless 体系更快更好;


上面提到的全部能力,都已经在 Midway Serverless 仓库开源,欢迎 Star
Github: https://github.com/midwayjs/midway

Serverless 和 FaaS


FaaS是 Serverless 架构的其中一种形态,也是这一次 Midway 希望解决的场景,在 v1.0 之前,我们在 FaaS 上投入了许多,但是事实上 Serverless 架构非常庞大,FaaS 只是其中的一小部分,基于事件驱动的模型,从微服务(MicroService)这种专注于单一职责与功能的小型功能块演进而来。如今这种更加“代码碎片化”的软件架构范式,相比微服务更加细小的程序单元,给业务代码提供了无与伦比的灵活性。


今天按照《福布斯》杂志的统计,在商业和企业数据中心的典型服务器仅提供 5%~15% 的平均最大处理能力的输出,这无疑是一种资源的巨大浪费。而随着 Serverless 架构的出现,让服务提供商提供我们的计算能力最大限度满足实时需求,这将使我们能更有效地利用计算资源。

弹性容器,能够满足当前的对资源利用全部憧憬,也是云平台不断追求的目标之一,而对于开发者,不管是弹性的容器,还是弹性的函数,只要有一套代码能都运行其中,满足业务的需求即可。Midway Serverless 的目标由此而来,从原来的 FaaS 场景开拓到了其他领域,不管是函数还是新的架构,我们都将一一满足,并落地业务、反哺社区。

防平台锁定


Vendor Lock-in 是每个使用云平台的的人都会拷问灵魂的问题,Midway Serverless 一开始的初衷就是让一套代码能够运行在不同的平台和运行时之上,我们不建议在不了解全貌时去自定义运行时,那非常的危险。事实上,官方的运行时是运行最稳定,也一定是性能最好的,所有的基准跑分都是基于此。


我们了解的大多数企业在面对 Serverless 的第一个问题就是,我的代码是不是一定得绑死到阿里云,或者腾讯云,aws 等等


面对这个问题,Midway Serverless 提供了一套 “隐藏式” 入口加上通用化定义来解决这个问题。

针对每个平台,Midway Serverless 提供了不同的运行时启动器,用于抹平各个平台的差异,并且通过这些启动器,将各个平台的出入参,以及各个 event 结构,网关的返回格式进行规则化,让用户尽可能不感知底层容器以及协议的差异。


image.png




除此之外,Midway Serverless 提供了一套 Spec 定义,来抹平多个平台的差异,同时也能方便的在多个平台间复用相同的工具链和函数逻辑。


image.png


这样,不管是 API Gateway,还是普通的 HTTP 触发器,都能在统一的编程平面中提供 API,让编写代码变的简单。


TS 与装饰器


函数的写法是十分灵活的,灵活带来了简便,同时也带来了维护成本。由此在函数中引入了 TS,引入了标准和扩展性。


下面的代码,看起来似乎是 koa 的标准语法,其实是函数中面向 HTTP 触发器的 API,为了和 Web 栈语法保持一致,通过一些转变,使得参数的获取,调用都尽可能无缝衔接,也减少了学习的成本,原有的代码也能更好的迁移过来。


Carbonize 2020-07-01 at 8.12.50 PM.png


另一边,通过装饰器修饰的方法都将变为函数入口,让整个函数的结构变得自由。通过构建的方式,让真实的入口隐藏起来,不仅让函数跨多个平台调用,也可以适配到不同的路由。如上面的示例,在一个文件中入口有多个,可以共享同一份代码,但是实际上每个函数的调用又是独立的,在管理和后期维护上都提供了便利。


不同云平台的实际结构是不同,如果用户需要使用到传统的 event、context 结构, 我们也给不同平台触发器提供了不同的定义,方便代码编写,如下图。

2020-07-02 11-44-28.2020-07-02 11_46_40.gif

复用社区生态


上面提到,Midway Serverless 体系的设计的初衷就是复用现有 koa 生态,将多个平台的底层 event 规则化成统一的类 koa API。API 相似的目的是为了整个 koa 的 web 生态,我们同时也希望整个 koa 的 middleware 生态都可以复用。如下图,引入了 @koa/cors 。


2020-07-02 13-02-30.2020-07-02 13_11_26.gif


另一面,Midway 由于出色的 IoC 组件化能力,提供了上层的 egg 基础组建,同时也能复用现有的 egg 插件,让传统企业级开发的能力得以延续,比如下图就是使用 egg-mysql 插件的示例。


2020-07-02 13-42-19.2020-07-02 13_47_12.gif


前端赋能


云 + 端的开发体验是 Midway Serverless 目标之一,传统应用的开发,前端和后端分离,多仓库开发,部署分离。就算使用了 Node.js 的胶水层,也无法避免人员开发体感上的割裂。而在 Serverless 体系下,这不是什么问题。


由于后端的大幅简化,再加上云服务的 BaaS 化,让数据聚合,页面渲染变的更容易,也能更快的让前端上手和开发。


一体化慢慢成为了这一块的前端诉求,所谓的一体化,不仅仅是传统仓库的融合,也是整个开发模式的演进,从工程体系加上代码,CI/CD 的整套体系重塑的机会。


如今的 Midway Serverless,提供了和前端一体的开发方案,囊括了社区现有的 React、Vue 等生态,也对整个工具链(Webpack,ice scrips,umi 等)做了定制化方案,对不同的场景,比如博客等也提供了开箱即用的解决方案。


image.png
至于详细的前后端一体化能力,我们后续将单独开一篇文章来介绍前端一体化的细节和思考。


应用和函数


Serverless 是未来一段时间的方向,也是前端迈向更高层次的铺路砖。


之前一直在思索,如今的函数式开发的终态和应用的关系到底是什么?


现阶段,我们的答案是趋于统一,在被无数次的灵魂拷问和用户需求的追问中,我们得出了这个答案,函数即是应用在当前业务中的最小体现,更简单的来说,是在最小规格容器中运行应用部分代码。


之后的一段时间,我们将聚焦于更多平台的接入,以及传统应用的迁移方案上,让之前的用户也能享受到 Serverless 弹性的红利,让企业成本更低,业务上线更容易。

最后


在集团大中台、小前端业务架构日趋深化的背景下,借助集团云原生/Serverless 的发展,去年 Node.js 在业务端到端交付场景上看到了未来。


新一代云 + 端的前台业务交付模式逐渐成为现实,这可以帮助技术团队塑造有业务整体交付能力的特种兵,帮助业务快赢。但其路漫漫仍诸多不完善,为了尽早达到这一步,需要高度聚焦在两个核心问题上:1. 规模化成本、2. 交付速度。


期望在未来透过我们对规模化成本、交付速度的持续投入,Node.js/Serverless 体系可以体现出全面的先进性。


Midway Serverless,Go!


image.png

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
4月前
|
弹性计算 运维 Kubernetes
Serverless 应用引擎 SAE 助力袋拉拉研发提效 70%
机汽猫的主要业务是通过部署 IoT 设备解决医院耗材管理问题。面对业务的潮汐特性带来的资源预留难题与运维压力,该公司选择将所有应用部署在阿里云 Serverless 应用引擎 SAE上。SAE 提供的微服务治理、自适应弹性伸缩及平台工程化能力,助力机汽猫研发效率提升了 70%。
|
弹性计算 监控 Kubernetes
带你读《云原生架构白皮书2022新版》——Game On Serverless:SAE 助力广州小迈提升微服务研发效能(上)
带你读《云原生架构白皮书2022新版》——Game On Serverless:SAE 助力广州小迈提升微服务研发效能(上)
294 12
|
监控 Cloud Native Dubbo
带你读《云原生架构白皮书2022新版》——Game On Serverless:SAE 助力广州小迈提升微服务研发效能(下)
带你读《云原生架构白皮书2022新版》——Game On Serverless:SAE 助力广州小迈提升微服务研发效能(下)
298 14
|
弹性计算 运维 Kubernetes
带你读《云原生架构白皮书2022新版》——运维提效 60%,视野数科 SAE+Jenkins 打造云原生 DevOps
带你读《云原生架构白皮书2022新版》——运维提效 60%,视野数科 SAE+Jenkins 打造云原生 DevOps
231 6
|
移动开发 缓存 监控
基于 Serverless 的大前端轻研发平台
基于 Serverless 的大前端轻研发平台
250 0
|
Cloud Native Serverless
《淘系云原生时代的业务研发-闲鱼Serverless云端一体化研发实践》电子版地址
淘系云原生时代的业务研发-闲鱼Serverless云端一体化研发实践
124 0
《淘系云原生时代的业务研发-闲鱼Serverless云端一体化研发实践》电子版地址
|
存储 弹性计算 运维
serverless 学习 | QCon2022-深圳: 美团基于 Serverless 的前端研发体系建设和业务实践
serverless 学习 | QCon2022-深圳: 美团基于 Serverless 的前端研发体系建设和业务实践
287 0
serverless 学习 | QCon2022-深圳: 美团基于 Serverless 的前端研发体系建设和业务实践
|
前端开发 Serverless
《基于 Serverless 的淘系前端研发升级实践》电子版地址
基于 Serverless 的淘系前端研发升级实践
90 0
《基于 Serverless 的淘系前端研发升级实践》电子版地址
|
人工智能 运维 Kubernetes
年终盘点一 | 云原生的 2022 年:降本提效、全面 Serverless 化
展望下一年,Serverless 发展将继续沿着产品体系 Serverless 化,研发模式升级为组装式研发,应用架构全面 Serverless 化3大趋势前进。
|
前端开发 Serverless
《吴敏琦:基于 Serverless 的淘系前端研发升级实践》电子版地址
吴敏琦:基于 Serverless 的淘系前端研发升级实践
97 0
《吴敏琦:基于 Serverless 的淘系前端研发升级实践》电子版地址

热门文章

最新文章

相关产品

  • 函数计算
  • 下一篇
    DataWorks