Serverless Frist 的渐进式应用开发框架 Malagu

用户头像
木香丘
关注
发布于: 2020 年 10 月 05 日
Serverless Frist 的渐进式应用开发框架 Malagu

什么是 Malagu



Malagu 是基于 TypeScript 的 Serverless First、组件化的渐进式应用开发框架。使用同一套编程语言和 IoC 设计,用于开发前端、后端和前后端一体化应用。并且结合了 OOP(面向对象编程)、AOP(面向切面编程)等元素,借鉴了很多 Spring Boot 设计思想。



在后端,Malagu 抽象一套接口,方便适配任意的平台和基础框架,是一个平台或基础框架无关的上层框架。平台如阿里云函数计算、腾讯云云函数、Vercel 等,基础框架如 Express、Koa、Fastify 等。



在 Serverless 场景,Malagu 是以应用为单位开发项目,一个应用一般包含多个 API 接口。如果我们的应用很大,我们应该将大应用拆解成一个个小的微应用或者微服务。就像微服务架构的粒度拆分原则一样,合理的粒度拆分,对我们的应用管理是有很多好处的。框架会保证一个应用在一个函数中的运行性能。



为什么需要 Malagu



坚信 Serverless 是未来



Serverless 是云计算新一代计算引擎,为取代传统云服务器架构而生。Serverless 核心理念是让开发者不用关心服务器的存在,专注于业务代码。



Serverless 现状如何



现在,所有云厂商和社区都在大力推广和布道 Serverless 理念,通过 Serverless 可以低成本高质量快速落地商业方案。目前,大家普遍认为 Serverless = FaaS + BaaS,未来也可能是其他的形态,不管形态如何变化,Serverless 的核心理论是不变的。所有 Serverless 的开发体验关键在 FaaS 的开发体验,而 FaaS 目前开发体验不是很理想,存在着很多的疼点,短时间内在 FaaS 底层上很难解决,比如冷启动、数据库访问、本地开发调试运行、平台无关等等。



如何解决这些痛点



我们可以换一个思路,从开发框架层面尝试解决这些问题(事实证明,可以通过开发框架来解决这些问题)。那么,我们面临新的抉择是采用传统框架,还是需要一个全新的框架?如果选择做一个新框架,那么,我们是选择特定编程语言,还是通用编程语言?



为什么需要一个全新的框架



传统框架在开发体验上,大家肯定是接受的,毕竟已经使用了这么多年。但是传统框架开发的应用在迁移到 Serverless 环境时,往往会遇到各种各样难以解决的问题,这些问题往往是与框架底层设计密切相关。虽然我们可以通过框架扩展能力去解决或者缓解部分问题,实践下来的结果是框架改造门槛很高、效果不太理想、需要 Hack,不够优雅。当您在 Serverless 采用传统框架时,您往往会感觉虽然应用可以跑起来,但是真正应用到生产级别您会有顾虑。所有我们需要一个全新的、Serverless Fisrt 的开发框架。只有这样才能极大发挥 Serverless 优势,并让 Serverless 开发体验超越传统开发体验。



为什么选择特定编程语言



目前,开源社区也存在不少语言无关的 Serverless 工具或框架,比如 Funcraft、Serverless Framework、Vercel 等等。这类通用语言型 Serverless 工具在运维层面确实可以做到不错的体验,也可以形成通用的标准。但是,在应用代码开发、调试、运行等开发体验上不那么理想。每种编程语言在开发、调试和运行等方面都有自己独特的地方,通用语言型 Serverless 工具很难做到统一,且开发体验还能做到很好。只有选择特定的编程语言,才能让开发、调试和运行等方面的体验达到极致。



为什么选择 Typescript



Serverless 让后端开发门槛变得极低,前端开发者基于 Serverless 开发后端应用学习成本也极低。未来越来越多的前端开发者成为全栈开发者。Typescript 既可以开发前端,又可以开发后端,对于前端或者全栈的开发者来说十分友好。



前端架构其实就是一种类 Serverless 架构,比如前端浏览器需要加载前端代码来执行,而 Serverless 场景也需要加载用户的代码来执行。因此,前端的很多解决方案天然适合 Serverless 场景,比如前端通过打包、压缩、Tree Shaking 来减少代码体积,减少代码部署和冷启动时间。同样,该优化方案也适用与 Serverless 场景,所以选择 Typescript,则相当于直接拥有了经过无数真实场景打磨的现成解决方案。



另外,Typescript 和 Java 很接近,Java 开发者也能很方便切换到 Typescript 技术栈。



Malagu 带来的价值



Malagu 是基于 TypeScript 的 Serverless First、可扩展和组件化的渐进式应用开发框架。Malagu 屏蔽掉不同 Serverless 平台底层细节和 Serverless 场景存在的大部分痛点。Malagu 基于真实业务场景打磨,提供生产级别可用的解决方案。提供多云解决方案,云厂商不锁定。



如何使用 Malagu



Malagu 框架是由一系列组件组成,每一个组件其实就是一个 node 模块,根据您的业务场景选择合适的组件,您也可以基于组件机制开发属于自己的组件。为了快速开发,Malagu 提供了一个命令行工具,命令行工具内置不同场景的开箱即用的模板,通过命令行工具可以快速创建您的应用。首先,我们需要安装相关命令行工具:

$ npm install -g yarm # 框架默认推荐使用 Yarn 工具,您也可以使用 Npm
$ npm install -g @malagu/cli # 安装 Malagu 命令行工具
$ malagu init project-name # 使用命令行工具 malagu init 命令,选择一个模板,初始化一个模板应用
$ cd project-name # 进入到应用的根目录
$ malagu serve # 启动应用,默认端口为 3000

打开浏览器并导航到 http://localhost:3000/



支持我们



Malagu 是 MIT 许可的开源项目。需要优秀人士的支持使它不断发展。如果您想加入我们,请联系我们,我们的邮箱是 kevin@cellbang.com



相关链接





用户头像

木香丘

关注

Serverless 爱好者 2019.01.18 加入

Serverless 原生框架 Malagu 的作者。杭州细胞矩阵科技有限公司创始人。从事 Serverless 相关工作两年多。开源爱好者。

评论

发布
暂无评论
Serverless Frist 的渐进式应用开发框架 Malagu