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

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

开源为了前端和 Node.js 的发展,Github:https://github.com/midwayjs/midway,点击直接跳转点 Star

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

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

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

如今的 ServerX ] e 0 H w aless,是云厂商各自开疆拓土的黄金时代,也是各3 = @ j R u k ; o位尝试的最好年代,如今 Node.js 在这个时候成为了最佳选择,MidwaC 0 N Gy 体系也当仁不让地站在这十字路口,去朝着引S + E 领的方向去行。

什么是 Midway Serverless

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

1. 平台间迁移更c | h B l {容易

  • ; E + $ | 9提供统一的配置规p i 7 范以及入口抹平机制,让代~ t a P s Z u码在每G @ l 7 G U z个平台基本相同;
  • 扩展不同云平台的运行时 API,不仅能加载w H K通用的平台间扩展,也能接入公司? F r 9内部的私有化部署方案。

2. 让应用更易维护和扩展) O G l ?

  • 提供了标准的云平台函数出入参事件定义;
  • 提供了多套和e G f H = w (社区前端 React、Vue 等融D 7 _ 2 % q = y合一体化开发的方案;
  • 使用了 TypeS6 g B | dcript 作为基础语言,方便应用扩展和定义;
  • G G ) 2 n D (供了完善的 Midway 体系标志性的依赖注入解决方案。

3. 生J V { c s g态更轻量和自由

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

上面提到的全部能力,都已经在D _ 2 G Midway Serverless 仓库[ - H ^ J 2开源,欢迎点击链接直接跳转点 Star。Github:https://github.com/midwayjs/midway

Serverless 和 FaaS

FaaS是 Serverless 架构的其中一种形态,也是这一次 Mi$ } } % tdway 希望解决的场景,在 v= & ( H . t } n 91.0 之前,我们在 FaaS 上投入2 W g ) l n z F 2了许多,但是事实上 Serverless 架构非常庞大,FaaS 只是其中的一小部分,基于事件驱[ g I 0动的模型,从微服务(MicroService)这种专注于单一职责与功能的小型功能块演进而来。如今这种更加“代码碎片化”的软件架构范式,相比微服务更加细小的程序单元,E | H F ~ f 6 !给业务代码提供了无与伦比的灵活性。

今天按照《福布斯》杂志的统计,在商. 1 R 9 % ? [ v U业和企业数据中心的典型服B a 3务器仅提供 5%~15% 的; ] | * j平均最大处理能力的输出,这无疑是一种资源的巨v ] 大浪费。( ` ( c 8 M W而随着 Serverless 架构的出现,让服务提供商提供我们的计算能力最大限度满足实时需求,这将使我们能更有效地利用计算资源。

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

防平台锁定

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

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

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

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

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

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

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

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

TS 与装饰器

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

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

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

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

@ Z Z同云平台的实际结构是不同I N S,如果用户需要使用到传统的 ev# Z _ R w q Dent、context 结构, 我们也给不同平台触发器提供了不同的定义,方便代码编写,如下图。

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

复用社区生态

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

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

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

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

前端赋能

云 + 端的开 9 r发体验是 Midway Serverless 目标之一,传统应用的开发,前端和后端分离,多W 6 * V ?仓库开发,部署分离。就算使用了 Node.js 的胶水层,也无法避免人员开发体感上的割裂。而在 Sel R Hrverless 体系下f ] h q n = k,这不是什么问题。

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

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

如今的 Midway Sd 5 4 )erverless,提供了和前端一体的开发方U ` e I 3 8 s,囊括了社区现有a H p ^ d ~ A的 React、Vue 等生态,也对整个工具链(Webpack,ice scrips,umi 等- L p R ,)做了定制化方案,对不同的场景,比如博客等也提供了开箱即用的解决方案。

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

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

应用和函数

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

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

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

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

最后

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

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

期望8 5 : 4 R 2在未来透过我们对规模化成本、交付速度的持续投入,Node.js/ServC 4 U e ( j e Herless 体系可以体现出全面的先进性。如果你有任何疑问,欢迎加入钉钉p ? F 6 2 ~ ! `交流群:https://qr.dingtalk.com/action/joingroup?code=v1,k1,Lr3HsEsA55Pk8NPqlkhxajuhpcBUpGWa3bRHcW7wwTw=&_dt_no_comment=1&origin=11

Midway Serverless,Go!

体验有礼:55 D _ . = l S 分钟极速上手 Serverless

“Serverless” 近年来非常火爆。人人都热衷于探讨它出现的k 3 1 a s x d意义,但对于如何上手使用或在生产环境落地,却谈之甚少。我们设计了体验场景,手把手带你 5 分钟上手 Serverless,还送 2000 个阿里云“第一行代码”鎏金限量马克杯!

点击查看/ 2 a , Q 9详情:https://deveQ @ y 8 6 :loper.aliyun.com2 t C b I g w/adc/series/fc/

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地s ! 1 x实践,做最懂云原生开发者的公众号。”