当前位置: 首页 > 后端技术 > Node.js

阿里Midway正式发布Serverlessv1.0,研发效率提升50%

时间:2023-04-03 10:41:21 Node.js

前端和Node.js开发开源,Github:https://github.com/midwayjs/midway,点击直接跳转星标。去年,阿里提出了Serverless架构,利用其新一代研发架构,减少了大量研发人员对基础设施和运维的关注。对于前端开发者来说,只需要写几个功能就可以实现后端业务逻辑,促进业务快速上线,将整个前端研发效率提升50%。在过去的六个月里,MidwayFaaS得到了很多同学的关注,很多大公司已经开始直接使用。谢谢你们。今天,MidwayFaaS将进化为MidwayServerless,正式成为Midway系统的核心场景,同时正式发布v1.0版本。v1.0版本代表正式版,可以放心使用。通过全新的Midwayserverless系统,逐步开放阿里的serverless能力,前端将进入一个新时代。正如我两年前所说,开源只是开始,结束状态还远未到来。今天的Serverless是云厂商开疆拓土的黄金时代,也是大家尝试的最佳时机。现在Node.js成为了这个时候最好的选择,Midway系统也站在了这个十字路口。朝着你引导的方向前进。什么是中途无服务器?前面提到,MidwayServerless是一套面向Serverless的解决方案,包括框架、运行时、工具链和配置规范。这些部分组合之后,提供了一些面向Serverless的解决方案。系统独有的能力:1.平台间迁移更容易通过提供统一的配置规范和入口平滑机制,代码在各个平台上基本相同;扩展不同云平台的运行时API,不仅可以加载通用的跨平台扩展,还可以接入公司内部的私有化部署方案。2.使应用更易于维护和扩展提供标准的云平台功能入口和出口参数事件定义;提供多套与社区前端React、Vue等集成开发方案;使用TypeScript作为基础语言,方便应用的扩展和定义;提供完整的Midway系统签名依赖注入解决方案。3、生态系统更轻量级,自由函数体系复用koa的生态和Web中间件能力,在处理传统Web时更加得心应手;提供egg组件生态链,复用egg插件,企业级开发环节更简单顺畅;Midway统一了系统的装饰器能力,使得传统Web向Serverless系统的迁移更快更好。以上提到的所有能力都已经开源在MidwayServerless仓库中,欢迎点击链接直接跳转Star。Github:https://github.com/midwayjs/midwayServerless而FaaSFaaS是Serverless架构的一种形式,也是Midway这次希望解决的场景。在v1.0之前,我们在FaaS上投入很多,但实际上Serverless架构非常庞大,FaaS只是其中的一小部分。它基于事件驱动模型,由MicroService演化而来,是一个专注于单一职责和功能的小功能块。与微服务相比,如今更加“代码碎片化”的软件架构范式为业务代码提供了无与伦比的灵活性,微服务是更小的程序单元。根据《福布斯》杂志今天的统计,商业和企业数据中心的典型服务器只提供平均最大处理能力的5%到15%的输出,这无疑是一种巨大的资源浪费。随着Serverless架构的出现,让服务商提供我们的计算能力,最大程度满足实时需求,将使我们能够更高效地使用计算资源。弹性容器,能够满足目前所有对资源利用的期望,也是云平台不断追求的目标之一。对于开发者来说,不管是弹性容器还是弹性函数,只要有一套代码可以在里面运行,就可以满足业务的需求。需要。MidwayServerless的目标就来自于此。已经从原来的FaaS场景扩展到了其他领域。无论是功能还是新架构,我们都会一一满足,落地业务,回馈社区。反平台锁VendorLock-in是每个使用云平台的人都会拷问灵魂的问题。MidwayServerless的初衷是让一套代码可以运行在不同的平台和运行时。我们不建议在您了解全局时自定义运行时是非常危险的。其实官方的runtime是最稳定的,性能肯定是最好的。所有基准都基于此。我们知道的大多数公司面对Serverless的第一个问题就是我的代码是否必须绑定阿里云、腾讯云、AWS等。面对这个问题,MidwayServerless提供了一套“隐藏”的入口加上广义的定义来解决这个问题.针对每个平台,MidwayServerless提供了不同的runtimestarter来抹平平台之间的差异,通过这些starter对每个平台的输入输出参数,以及每个事件结构和网关的返回格式进行正则化,使得用户尽可能不了解底层容器和协议的差异。另外,MidwayServerless提供了一套Spec定义来抹平多个平台之间的差异,同时可以方便的在多个平台之间复用相同的工具链和功能逻辑。这样无论是APIGateway还是普通的HTTP触发器,都可以在统一的编程平面上提供API,让编写代码变得更加简单。TS和装饰器函数的写法非常灵活。灵活性带来了便利,但也带来了维护成本。这将TS引入功能,引入标准和可扩展性。下面的代码看似是koa的标准语法,其实是函数中的HTTP触发器的API。学习成本降低,可以更好的迁移原有代码。另一方面,被装饰器修饰的方法将成为函数入口,从而使整个函数的结构变得自由。通过构建的方式,隐藏了真正的入口,不仅可以跨平台调用函数,还可以适配不同的路由。如上例,一个文件中有多个入口,可以共享相同的代码,但实际上每个函数调用都是独立的,这为管理和后期维护提供了方便。不同云平台的实际结构不同。如果用户需要使用传统的事件和上下文结构,我们也为不同的平台触发器提供了不同的定义,以方便代码编写,如下图所示。社区生态复用前文提到,MidwayServerless系统的设计初衷是复用现有的koa生态,将多个平台的底层事件正则化为统一的类koaAPI。API类似的目的是为了整个koaweb生态,我们也希望整个koa中间件生态能够复用。如下图,引入了@koa/cors。另一方面,由于出色的IoC组件化能力,Midway提供了上层的egg基础设施,也可以复用已有的egg插件,让传统的企业级开发能力得以延续。例如下图使用的egg-mysql插件示例。MidwayServerless的目标之一是让前端云+端的开发体验,传统应用的开发,前后端分离,多仓库开发,分离的部署。即使使用了Node.js的胶水层,还是避免不了人员开发的物理分离。在无服务器系统中,这不是问题。由于后端的大幅简化,再加上云服务的BaaS,数据聚合和页面渲染变得更加容易,前端也可以更快的使用和开发。融合逐渐成为这一领域的前端诉求。所谓集成,不仅仅是传统仓库的集成,更是整个开发模式的演进。从工程系统到代码,重塑整个CI/CD系统的机会。今天的MidwayServerless提供了与前端融合的开发方案,包括社区现有的React、Vue等生态,同时也针对整个工具链(Webpack、icescrips、umi等)做了定制化的方案,用于不同的场景,比如博客等也提供了开箱即用的解决方案。至于详细的前后端整合能力,我们后面会单独写一篇文章,介绍前后端整合的细节和思考。应用与功能Serverless是未来一段时间的方向,也是前端走向更高层次的铺路砖。之前我一直在想,今天功能开发的最终状态和应用有什么关系?现阶段,我们的答案趋于统一。经过无数次灵魂的追问和用户的需求,我们得出了这个答案。功能是应用在当前业务中的最小体现。更简单地说,是在最小规格容器中运行应用程序的代码的一部分。在接下来的一段时间里,我们将重点关注更多平台的接入和传统应用的迁移计划,让之前的用户也能享受到Serverless灵活性的红利,让企业的成本更低,业务上线更简单。最后,在集团大中小前端业务架构不断深化的背景下,借助集团云原生Serverless开发,去年Node.js在业务端到端看到了未来-结束交付场景。新一代云+终端前端业务交付模式正在逐步成为现实,可以帮助技术团队打造具有整体业务交付能力的特种部队,助力业务快速制胜。然而,在前进的道路上还存在许多不完善之处。为了尽快走到这一步,我们需要关注两个核心问题:规模成本和交付速度。希望未来通过我们在规模成本和交付速度上的持续投入,让Node.js/Serverless系统能够体现出全面的先进性。有问题欢迎加入钉钉交流群:https://qr.dingtalk.com/action/joingroup?code=v1,k1,Lr3HsEsA55Pk8NPqlkhxajuhpcBUpGWa3bRHcW7wwTw=&_dt_no_comment=1&origin=11MidwayServerless,Go!体验礼遇:5分钟极速入门Serverless“Serverless”这几年很火。每个人都热衷于讨论它出现的意义,但很少有人谈论如何在生产环境中开始或实施它。我们设计了体验场景,5分钟带你上手Serverless,还赠送2000个阿里云“代码第一行”镀金限量版马克杯!点击查看详情:https://developer.aliyun.com/adc/series/fc/《阿里云原生专注于微服务、Serverless、容器、ServiceMesh等技术领域,聚焦云原生流行技术趋势,与云原生大规模做最懂云原生开发者的公众号。”