HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

评论

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

PHP文件包含小总结

Thrash

安全

Nginx-代理服务器

进击的梦清

nginx Docker Linux Docker-compose 代理

华仔架构训练营作业(模块三)

不听不听王八念晶

rocketmq优雅停机往事

捉虫大师

私域流量这件事,古代就有了……

白洞计划

第一个鸿蒙应用

释缘

鸿蒙 HarmonyOS

架构实战营模块3作业

Vic

架构实战营

NumPy之:使用genfromtxt导入数据

程序那些事

Python 数据分析 Numpy 程序那些事

存算解耦的多模型数据管理平台介绍:以星环科技TDH8.0为例

星环科技

人工智能 大数据 云平台 数据管理平台 存算解耦

轶事

言未卜

nmon和nmon analyser的网盘下载安装与使用

InfoQ_Springup

工具

架构实战营 -- 模块三

永佳

架构实战营

Nginx 常用配置清单

Java小咖秀

nginx Web 反向代理 HTTP

从5大挑战带你了解多模态机器学习

华为云开发者联盟

机器学习 多模态机器学习 多模态 异构数据

求求你别再用 MySQL offset 和 limit 分页了

xcbeyond

MySQL 5月日更

架构实战营模块三作业

竹林七贤

AI英雄出少年!奔赴星辰,他们正在创造黄金时代

百度大脑

AI

第三次作业

Geek_9cf7b5

数据架构:数据冷热分离实践思考

程序员架构进阶

数据架构 架构设计 28天写作 5月日更 冷热分离

深入浅出 LVS 负载均衡系列(二):DR、TUN 模型原理

UCloud技术

负载均衡

在线体验四大名著情景(地图、游戏)

不脱发的程序猿

开源 程序人生 四大名著

STM32低功耗模式下GPIO如何配置最节能?

不脱发的程序猿

嵌入式 stm32 单片机 低功耗模式

看了小姐姐的Spring SPI 总结,双非渣硕的我差点跳起来,被征服了

牛哄哄的java大师

Java

新书见面 | 《云原生时代的微服务架构实践》

Damon

微服务 云原生 5月日更

“区块链+疫情预警”!这个科研团队研发了传染病预警系统

CECBC

疫情

数仓ETL系统:给强大的“心脏”配上“超级流水线”

华为云开发者联盟

数据库 数据仓库 GaussDB(DWS) ETL系统 MPPDB

基于OpenPAI细化部署 Hadoop 集群

Damon

hadoop 5月日更

技术探索系列 - 轻松带你掌握JMM(2)

洛神灬殇

JVM JMM 5月日更

区块链+农业,如何升级农业价值链

CECBC

农业

双向循环链表:鸿蒙轻内核中数据的“驿站”

华为云开发者联盟

鸿蒙 数据结构 结构体 OpenHarmony 双向循环链表

中国式美好假期:用AI地图,抢先体验未来出行

脑极体

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