写点什么

Malagu:平台无关的开源 Serverless First 应用开发框架

  • 2021-09-22
  • 本文字数:3459 字

    阅读完需:约 11 分钟

Malagu:平台无关的开源Serverless First应用开发框架

什么是 Malagu


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


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


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

开源项目与社区发展


截至 2021 年 9 月,Malagu 经历了三年的打磨和真实项目实践,陆续发布了 128 个版本。目前 Malagu 核心部分已经稳定,拥有 10 位左右的核心共建成员。在微信小程序、钉钉小程序、uniapp、门户网站、内容管理平台、云文档平台等场景都有真实项目成功落地。我们自己每天都在用 Malagu 开发真实业务项目。​


在社区发展过程中,被越来越多的开发者和云厂商的认可,陆续有 29 位开发者加入到我们的社区共建团队。在早期,阿里云 CRO 团队就采用了 Malagu 实现了内部的 CMS 平台,并成功上线了几十个 CMS 系统。后面主要有以下实际应用:


  1. 被阿里云开发者平台集成为多个场景解决方案;

  2. 被阿里云函数计算的 Serverless Devs 工具集成;

  3. 被腾云扣钉 Cloud Studio 内置到预置环境;

  4. 被腾讯云 Serverless 团队认可,并成为腾讯云函数首个合作的第三方开发框架


我们的愿景是做世界上最好用的 Serverless First 开发框架,我们也期待有更多的社区开发者参与进来。

Malagu 架构图



为什么需要 Malagu

坚信 Serverless 是未来

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

Serverless 现状如何


现在,所有云厂商和社区都在大力推广和布道 Serverless 理念,通过 Serverless 可以低成本高质量快速落地商业方案。目前,大家普遍认为 Serverless = FaaS + BaaS,未来也可能是其他的形态,不管形态如何变化,Serverless 的核心理念是不变的。所有 Serverless 的开发体验关键在 FaaS 的开发体验,而 FaaS 目前开发体验不是很理想,存在着很多的痛点。部分痛点短时间内在 FaaS 底层上可能难解决,部分痛点可能在工具、框架层面去解决更合理。比如冷启动、CICD、微服务、数据库访问、本地开发调试运行、平台不锁定等。未来,会有越来越多的 Serverless First 的开发框架框架出现,而不仅仅是资源编排运维工具,结合 Serverless First 开发框架提供更高级的 Serverless 开发平台或者低代码平台。

如何解决这些痛点


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

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

传统框架在开发体验上,大家肯定是接受的,毕竟已经使用了这么多年。但是传统框架开发的应用在迁移到 Serverless 环境时,往往会遇到各种各样难以解决的问题,这些问题往往是与框架底层设计密切相关。虽然我们可以通过框架扩展能力去解决或者缓解部分问题,实践下来的结果是框架改造门槛很高、效果不太理想、需要 Hack,不够优雅。当您在 Serverless 采用传统框架时,您往往会感觉虽然应用可以跑起来,但是真正应用到生产级别您会有顾虑。当然,随着 Serverless 平台底层技术的不断发展,传统框架在 Severless 场景上的处境也会有极大的改善。要想达到最佳状态,单方面的改变是不够的,需要框架也能合理去适配 Serverless 场景。就像前端 UI 框架需要 Mobile First,浏览器提供响应式支持,前端 UI 框架提供相关的适配。所有我们需要一个全新的、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 @malagu/cli  # 安装 Malagu 命令行工具$ malagu init project-name    # 使用命令行工具 malagu init 命令,选择一个模板,初始化一个模板应用$ cd project-name             # 进入到应用的根目录$ malagu serve                # 启动应用,默认端口为 3000
复制代码


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

Malagu 与传统框架、Serverless Framework(sls) 比较

与传统开发框架比较


Malagu 是一个全栈应用开发框架,如果只看后端部分,Malagu 与 Spring Boot 是同一层次的东西,如果只看前端部分,Malagu 是 React、Vue 等前端框架之上的更上层的抽象,所以 Malagu 是前端框架无关的。Malagu 与传统框架比较,Malagu 提供了前后端渐进式一体化方案,在前后端之上做了一层抽象,让前后端在开发、测试、部署拥有一致的体验。传统框架一般不考虑应用部署环节,Malagu 借助 Serverless 技术优势,让部署环节变得流畅且低成本。


另外,Malagu 也是一个 Serverless 优先的框架,屏蔽了 Serverless 底层的细节,开箱即用。针对 Serverless 场景做了很多优化,如冷启动、数据库操作等等;同时,也提供了很多开箱即用的能力,比如安全、认证与授权、OAuth2.0、OIDC、数据库操作、缓存、前端框架集成、依赖注入、AOP、微服务等等。

与 Serverless Framework(sls) 比较


Malagu 重点还是在开发框架上。Malagu 与 sls 唯一有重叠的地方是 Malagu 基于自身的组件机制实现了一套平台无关的部署组件,该部署组件,目前只服务与 Malagu 自身,为 Malagu 提供极致的部署体验,零配置,一键部署。当然 Malagu 也可以很方便地使用 sls 部署。


sls 偏运维工具,侧重于对 Serverless 相关资源的编排。sls 提供 component 机制,方便不同的开发框架去集成 sls。

加入我们


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


【编者按】

如果你有开源故事或对开源的深刻观点想要分享、或开源项目想要寻求报道,欢迎联系微信 caifangfang842852(请注明姓名和来由)。


2021-09-22 17:415571

评论

发布
暂无评论
发现更多内容

修改ElementUI样式

源字节1号

软件开发 前端开发 后端开发 小程序开发

学历通过大数据培训学习合适吗?

小谷哥

CnosDB 2.0 产品发布会预告:一切为了万物智联,用 Rust 打造云原生时序数据库

CnosDB

时序数据库 开源社区 CnosDB CnosDB 2.0发布会

解密GaussDB(for Influx) :让智能电网中时序数据处理更高效

华为云开发者联盟

数据库 华为云 企业号十月 PK 榜

ironSource 与 Sensor Tower 宣布达成战略合作,共同拓展应用市场增长潜力

极客天地

校招面试真题 | 测试流程大概是什么?

霍格沃兹测试开发学社

更轻量的百度百舸,CCE Stack 智算版发布

Baidu AICLOUD

AI工程化 高性能计算 异构计算 百度百舸

固定QPS异步任务功能再探

FunTester

JavaScript, ABAP 和 Scala 里的尾递归(Tail Recursion)

汪子熙

JavaScript 编程语言 尾递归 abap 11月月更

【JVM】关于JVM,你需要掌握这些 | 一文彻底吃透JVM系列

冰河

Java 性能优化 JVM Java虚拟机 系统编程

COSCon'22 第七届中国开源年会圆满落幕

腾源会

开源

CSS写一个圣诞树Chrome浏览器小插件

肥晨

11月月更 css写圣诞树 Chrome插件

用低代码平台搭建低代码平台

iofod jude

如何通过机器学习赋能智能研发协作?

LigaAI

人工智能 智能化 LigaAI 研发协作平台 亚马逊云科技

【LeetCode】二叉树最大宽度Java题解

Albert

算法 LeetCode 11月月更

Java应用在docker环境配置容器健康检查

程序员欣宸

Java Docker 11月月更

新能源锂电池极片制造设备如何实现故障智能诊断?

PreMaint

智能诊断 故障诊断 新能源 设备健康管理

网站停服、秒杀大促…解析高可用网站架构云化

华为云开发者联盟

云计算 后端 华为云 企业号十月 PK 榜

自学前端达到什么水平才能找到工作,来看这套前端学习路线图

千锋IT教育

武汉web前端培训学习前景如何

小谷哥

京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

京东科技开发者

联邦学习 同态加密 隐私计算 加密算法 多方安全计算

基于OpenHarmony L2设备,如何用IoTDeviceSDKTiny对接华为云

华为云开发者联盟

云计算 华为云 企业号十月 PK 榜

佛萨奇1.0 2.0矩阵公排项目系统开发详情

开发微hkkf5566

【愚公系列】2022年11月 微信小程序-日期时间组件封装

愚公搬代码

11月月更

工作多年,技术认知不足,个人成长慢,职业发展迷茫,该怎么办?

霍格沃兹测试开发学社

从 0 开始学 Python 自动化测试开发(二):环境搭建

霍格沃兹测试开发学社

工作多年,技术认知不足,个人成长慢,职业发展迷茫,该怎么办?

测试人

软件测试 自动化测试 测试开发

大专学历通过大数据培训好找工作吗?

小谷哥

4步消除漏洞积压

SEAL安全

漏洞修复 软件供应链安全 漏洞管理 11月月更

在web前端学习中如何学习知识点

小谷哥

Malagu:平台无关的开源Serverless First应用开发框架_架构_木香丘_InfoQ精选文章