线上应用 10 秒启动、只占 20M 内存不再是想象~SOFAServerless 为你带来极致研发体验...

0b8be37e502bcbb2838b2ff944d6ff89.gif

你是否遭遇过大应用多人协作互相阻塞,发布效率太低?你是否苦于小应用太多,资源浪费严重

想要让手上的工程仅需增加一个打包插件,即可变成 10 秒启动、只占 20M 内存的工程吗?

今天我们为大家介绍——基于模块化能力,从应用架构、研发框架和运维调度方面提供完整配套的 SOFAServerless 项目。助你解决上述问题,让存量应用一键接入,享受秒级启动、资源无感等收益,轻松跨入 Serverless 研发模式,帮助企业降本增效!

01

模块化应用架构

为了解决文章开头提到的这些问题,我们对应用同时做了横向和纵向的拆分。

第一步,纵向拆分:把应用拆分成基座业务两层。这两层分别对应两层的组织分工。基座小组与传统应用一样,负责机器维护、通用逻辑沉淀、业务架构治理,并为业务提供运行资源和环境。通过关注点分离的方式,基座小组为业务屏蔽业务以下所有基础设施,使业务能够聚焦在业务自身上。

第二步,横向切分:我们将业务横向切分出多个模块,模块之间独立并行迭代、互不影响。同时模块由于不包含基座部分,构建产物非常轻量,启动逻辑也只包含业务本身,所以启动快,且具备秒级的验证能力,让模块开发得到极致的提效。

37d871ce2228556771c6dc677ce79ccd.png

拆分前,每个开发者可能感知的部分包括框架中间件、业务公共部分、业务自身所有代码和逻辑

拆分后,团队的协作分工也发生改变,研发人员分工出两种角色:基座模块开发者。模块开发者不用关心资源与容量,只需聚焦在业务逻辑自身,并且享受秒级部署验证能力。


2acae21530cc7b1e49fd80dbf9326eba.png

需要重点关注的是,我们是如何做这些纵向和横向切分的。切分是为了隔离,隔离是为了能够独立迭代、剥离不必要的依赖。然而如果只是隔离,没有共享,那就相当于只是改变部署的位置而已,很难达到好的效果。

所以想要理解模块化架构背后的原理,需要聚焦到隔离与共享上来。

架构的优势

我们根据模块化架构在蚂蚁内部实际落地的效果进行总结,其优势主要集中在这四点:灵活部署以及平滑演进

1081ba5bb68833b13ebb939cd37957e8.png

与传统应用对比,,数据如下,可以看到在研发阶段、部署阶段、运行阶段都得到了 10 倍以上的提升效果。

b3653738336ffe1389070d1b2a171b71.png

适用的场景

经过在蚂蚁集团内部四到五年的打磨,逐渐沉淀出的 6 大适用场景,看看是否有你需要的?

34d52596c95afd24be522e88ec29fa06.png

02

运维调度平台架构

光有应用架构还不够。只有在研发阶段、运维阶段、运行阶段都提供完整的配套能力,才能让模块化应用架构的优势真正触达到研发人员。

20cfe091c21b902bb6eb8188ed4a8487.png


在研发阶段,需要提供基座接入能力、模块创建能力,更重要的是模块的本地快速构建联调能力;在运维阶段,提供快速的模块发布能力,在模块发布基础上提供 A/B 测试秒级扩缩容能力;在运行阶段,提供模块的可靠性能力,模块可观测流量精细化控制调度伸缩能力。

3579950e1605299080d9abafaf792e17.png

在整个平台里,需要 4 个组件:

  • 研发工具 Arkctl,开发者使用 Arkctl 完成模块快速创建、快速联调测试等能力

  • 运行组件 SOFAArk,提供基于 ClassLoader 的多模块运行的环境

  • Arklet 和 Runtime 组件,提供模块运维、模块生命周期管理、多模块环境适配

  • 控制面组件 ModuleController

● ModuleDeployment,提供模块发布与运维能力

● ModuleScheduler,提供模块调度能力

● ModuleScaler,提供模块伸缩能力

在这些组件基础上,我们提供了从研发到运维再到运行时的完善配套能力。

多集群、弹性与调度

fb388f84c52b439c11d03fab10d8c81b.png

将线上应用根据场景隔离出不同机器组,不同机器组上可以安装不同模块,给不同业务提供不同的 QOS 保障。同时可以单独划分出 Buffer 机器组,当业务机器组机器不够时,可以快速从 Buffer 机器组里调度出机器,安装上相应的模块,完成 10 秒级的扩容。

ce054fe7cf44591bd92dd87459e1bd03.png

由于模块的启动速度在 10 秒级,所以在弹性上也能做到与服务更加同频、伸缩更加实时。从上图可以看到,应用实例数曲线与流量曲线基本处于一致的状态。

可观测、高可靠、排障等能力

模块化运维调度作为在 pod 上一层的模型,与现有配套设施会有所不同,所以需要针对配套设施完成可观测、监控排障等能力适配。

6700ff2560eaccb5ac5da666a4cc42ac.png

A/B 测试、灰度测试

一个模块更新时,可以同时存在多个版本。通过引流规则完成灰度测试,或者 A/B 测试。

86d2d68bc8f756e4dc1d0e15abc39274.png

流量隔离与精细化路由

在上述内容中,已经将应用粒度从机器分组、代码分组(模块)上做了更细粒度的划分,这里我们将流量也进一步进行细粒度划分。

一组模块和对应所在的机器组可以分配不同的流量单元,再根据请求的不同参数,精细化路由到对应的流量分组中。

e3b594df187816ad71d4def35b95778a.png


当前完整能力已经开源:https://github.com/sofastack/sofa-serverless。非常期待与大家一起建设社区!

还有 2 分钟上手试用视频教程,欢迎在 https://sofaserverless.gitee.io/docs/video-training/ 进行查看&试用。

SOFAServerless 当前已接入 15+ 企业

170cbeca65d0e9defa44c152240d0235.png

如果你也想为企业实现降本增效,欢迎扫码咨询探讨~

88040e653bd5587fe7ce1162bb4ba648.png

3a2e72f0b4438ad0fd2373b123941e5b.png

03

未来展望&议题分享

在未来,SOFAServerless 还将持续不断地探索。发现业务痛点,并为各行各业提出 Serverless 的解决方案。

以下,感谢各位开源共建开发者一直以来的支持与付出!(排名不分先后)

@QilingZhang @lvjing2 @glmapper @yuanyuancin @lylingzhen @yuanyuan2021 @straybirdzls @caojie09 @gaosaroma @khotyn @FlyAbner @zjulbj @hustchaya @sususama @alaneuler @compasty @wuqian0808 @nobodyiam @ujjboy @JoeKerouac @Duan-0916 @poocood @qixiaobo @lbj1104026847 @zhushikun @xingcici @Lunarscave @HzjNeverStop @AiWu4Damon @vchangpengfei @HuangDayu @shenchao45 @DalianRollingKing @lanicc @azhsmesos @KangZhiDong @suntao4019 @huangyunbin @jiangyunpeng @michalyao @rootsongjc @liu-657667 @CodeNoobKing @Charlie17Li @TomorJM @gongjiu @gold300jin @nmcmd

12 月 16 日 KCD 2023 深圳站(👈点击查看活动详情),期待和各位技术爱好者面对面交流探讨!

蚂蚁集团技术专家赵真灵将分享《云原生微服务的下一站,蚂蚁 SOFAServerless 新架构的探索与实践》。活动现场将设立展台进行 SOFAServerless 能力演示、操作流程互动展示。如果你对 SOFAServerless 感兴趣,欢迎前来参与体验~

扫描下方二维码或者点击「阅读原文」均可报名参与。

e8c3d1f873a4282efad49068a223b0a0.png

进入 SOFAServerless 官网抢先体验:https://sofaserverless.gitee.io/docs/tutorials/trial_step_by_step/

如遇问题,可在 SOFAServerless GitHub 页面及时提交 issue 互动交流~

   推荐阅读  

825b3f980a9b61c40eb6bdd8c2de2ec2.png

蚂蚁 SOFAServerless 微服务新架构的探索与实践

72100821365863e0ed154a5fc34703c1.jpeg

超越边界:FaaS 的应用实践和未来展望

9ee5dfe1334ed1a6dbabf2862050122b.jpeg

大象转身:支付宝资金技术 Serverless 提效总结

553f8c0ac7cc67b774327a195c1544ab.png

Lunettes - 让 Kubernetes 服务运营更简单

fac8d76922dbf151e06afdd3d2511b3d.jpeg

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值