简介: 开源只是开始,终态远没有到来!从微服务开源,到 Serverless 开源,我们正持续将阿里沉淀的技术能力进行开放。只是这一次不同的地方在于,借助 Serverless 能力的释放,将帮助前端进入一个崭新的时代,只需写几个函数即可实现后端业务逻辑,推动业务快速上线,让整个前端研发效能大幅提升。

开源只是开始,终态远没有到来。

从微服务开源,到 Serverless 开源,我们正持续将阿里沉淀的技术能力进行开放。

只是这一次不同的地方在于,借助 Serverless 能力的释放,将帮助前端进入一个崭新的时代,只需写几个函数即可实现后端业务逻辑,推动业务快速上线,让整个前端研发效能大幅提升。

什么是 Mindway Serverless

自7月初发布 V1.0 以来,Midway Serverless 已经获得了超过 2.7k 的 star。Midway Serverless 是一套面向 Serverless 的解决方案,包括框架、运行时、工具链、配置规范4个部分,这4部分组合之后,就能提供了一些面向 Serverless 体系的特有能力:

1、平台间迁移更容易

通过提供统一的配置规范以及入口抹平机制,让代码在每个平台基本相同;

扩展不同云平台的运行时 API,不仅能加载通用的平台间扩展,也能接入公司内部的私有化部署方案。

2、让应用更易维护和扩展

提供了标准的云平台函数出入参事件定义;

提供了多套和社区前端 React、Vue 等融合一体化开发的方案;

使用了 TypeScript 作为基础语言,方便应用扩展和定义;

提供了完善的 Midway 体系标志性的依赖注入解决方案。

3、生态更轻量和自由

函数体系复用 koa 的生态和 Web 中间件能力,在处理传统 Web 时更加得心应手;

提供 egg 组件复用 egg 插件的生态链,企业级开发链路更简单顺畅;

Midway 体系的装饰器能力统一,让传统 Web 迁移到 Serverless 体系更快更好。

**Midway Serverless @GitHub
https://github.com/midwayjs/midway**

防平台锁定

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

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

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

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

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

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

前端赋能

云 + 端的开发体验是 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 体系可以体现出全面的先进性。

生态体系:

image.png

社区合作伙伴:

Koa、Egg、icejs、ykfe/ssr


阿里云开发者
3.2k 声望6.3k 粉丝

阿里巴巴官方技术号,关于阿里巴巴经济体的技术创新、实战经验、技术人的成长心得均呈现于此。