写点什么

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:415968

评论

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

MySQL遇到瓶颈怎么办?GaiaDB 支撑「账三丰·代账业务」服务数万家企业

Baidu AICLOUD

数据库 :MySQL 数据库

什么样的MES系统能够让制造业IT部门省事省心呢?

万界星空科技

数字化 制造业 mes 万界星空科技mes 生产管理MES系统

DApp开发的安全设计

北京木奇移动技术有限公司

区块链技术 dapp开发 软件外包公司

阿里巴巴1688 API接口深度探索:商品详情获取与按图搜索商品(拍立淘)实战指南

代码忍者

1688API接口 关键词搜索1688API

Web3软件开发需要注意的问题

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

华为云Flexus X实例全面杜绝DDoS、XSS、CSRF与SQL注入攻击,为企业部署无懈可击的跨境电商独立站

轶天下事

深度评测,华为云Flexus X实例在Sysbench性能测试中的亮眼表现

轶天下事

部署轻量级任务管理工具DooTask

轶天下事

使用 TiDB Vector 构建 LightRAG 知识库

TiDB 社区干货传送门

实践案例 应用适配 数据库前沿趋势

云服务器Flexus X实例,Docker集成搭建Mysql集群

轶天下事

使用华为云Flexus云服务器X安装搭建crmeb多门店商城教程

轶天下事

望来路,启新程:皮阿诺2024卓越时刻

新消费日报

云服务器Flexus X实例,Docker集成搭建Jenkins CI/CD平台

轶天下事

抖音运营:解锁流量增长密码

科普小能手

数据分析 短视频 抖音引流 抖音接口

大语言模型提示词工程

测试人

人工智能 软件测试

华为云Flexus X实例下的场景体验——小企业使用Python语言——超迅速搭建简单公网API接口服务

轶天下事

在线CAD绘制墙体(WEB CAD开发室内设计软件)

WEB CAD SDK

华为云Flexus X搭建借贷管理系统、二次开发借贷小程序 前端源码uniapp

轶天下事

华为云Flexus X服务器推荐公司、企事业单位及生产环境使用,特别注重安全和稳定性

轶天下事

WebGL软件开发注意事项

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

云服务器Flexus X实例,Docker集成搭建Gitea私有仓库

轶天下事

Web3项目智能合约开发

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

构建高效搜索解决方案,Elasticsearch & Kibana的完美结合

轶天下事

大语言模型提示词工程

测吧(北京)科技有限公司

测试

枫清科技荣膺“2024 中国大数据产业年度最具投资价值企业”

Fabarta

#人工智能 企业数智化转型 #大模型

在基于华为云Flexus云服务器X部署的CRMEB商城系统中进行二次开发

轶天下事

管报经分,助力企业构筑管理大脑

用友智能财务

财务 会计 政策解读

华为云服务器Flexus X搭建BTC虚拟币质押投资理财系统(仅测试学习)

轶天下事

主从同步从Binlog切换到Ticdc,性能提升巨大

TiDB 社区干货传送门

7.x 实践

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