写点什么

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

评论

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

解读亚马逊云服务器 EC2 预留实例与按需实例的区别,及其在成本节约的优势

亚马逊云科技 (Amazon Web Services)

sdk 云服务器 Amazon EC2

体验华为云CodeArts Check IDE插件国际化展示效果

软件开发 代码质量 华为云 代码检查

火山引擎DataLeap一站式数据治理解决方案及平台架构

字节跳动数据平台

大数据 数据中台 数据安全 数据研发 企业号10月PK榜

3D孪生场景搭建:模拟仿真

3D建模设计

数字孪生 3D应用场景 3D编辑器

【AI模型】首个Joy 模型诞生!!!全民生成Joy大片 | 京东云技术团队

京东科技开发者

AI模型 企业号10月PK榜 京东joy

小白修图必备Topaz Photo AI for Mac图像智能处理工具

展初云

图像处理 Mac 软件 修图软件

socks5代理怎么帮助广告投放?

巨量HTTP

http代理

火山引擎DataTester智能发布:助力产品降低功能迭代风险

字节跳动数据平台

大数据 A/B 测试 对比实验 数字化增长 企业号10月PK榜

透明度和透明贴图制作玻璃水杯

3D建模设计

3D模型 材质修改 纹理贴图

如何在Mobpush中配置应用包名

MobTech袤博科技

大数据

EMQ 云边协同的 IIoT 解决方案架构,亮相 2023 工博会

新消费日报

OWASP Top 10漏洞解析(3)- A3:Injection 注入攻击

云计算 软件开发 华为云

用户案例合集 | 物联网平台的时序数据处理难点与优化实践

TDengine

时序数据库 ​TDengine 国产时序数据库

苹果Mac视频编辑软件 Final Cut Pro

展初云

Mac软件 视频编辑工具 FCPX软件 fcpx

要体验 AI 编程助手吗?

亚马逊云科技 (Amazon Web Services)

亚马逊云科技 AIGC

3D孪生场景搭建:参数化模型

3D建模设计

模型 数字孪生 参数化模型

3D孪生场景搭建:3D漫游

3D建模设计

数字孪生 3D编辑器 3D漫游

Embedding技术与应用 (2) :神经网络的发展及现代Embedding方法简介

Baihai IDP

人工智能 神经网络 AI 嵌入 白海科技

从 Greenplum 到 YMatrix,某头部动力电池厂商核心业务数据的迁移实践

YMatrix 超融合数据库

greenplum 迁移数据 超融合数据库 YMatrix 电池厂商

DCloud崔红保:云开发与跨端技术,构建企业降本增效新篇章

TRaaS

支付宝小程序 云开发 DCloud

电力行业首个自主可控的大模型发布了!百度飞桨、文心大模型提供支持

飞桨PaddlePaddle

飞桨 大模型 文心大模型

3D孪生场景SDK:Viwer 孪生世界

3D建模设计

数字孪生

华为云API自然语言处理的魅力—AI情感分析、文本分析

人工智能 软件开发 API

Mac电脑数据转换 EasyDataTransform激活最新

胖墩儿不胖y

数据处理 Mac软件 数据处理工具 编辑数据

操作系统迁移难?Alibaba Cloud Linux 支持跨版本升级 | 龙蜥技术

OpenAnolis小助手

开源 操作系统 迁移 阿里云服务器 龙蜥社区

零售业:别让数据安全成为业务的绊脚石!

极盾科技

数据安全 零售行业

3D孪生场景搭建:模型区域摆放

3D建模设计

数字孪生 3D场景编辑器

位移贴图和法线贴图的区别

3D建模设计

材质修改 纹理贴图

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