你是否遭遇过大应用多人协作互相阻塞,发布效率太低?你是否苦于小应用太多,资源浪费严重?
想要让手上的工程仅需增加一个打包插件,即可变成 10 秒启动、只占 20M 内存的工程吗?
今天我们为大家介绍——基于模块化能力,从应用架构、研发框架和运维调度方面提供完整配套的 SOFAServerless 项目。助你解决上述问题,让存量应用一键接入,享受秒级启动、资源无感等收益,轻松跨入 Serverless 研发模式,帮助企业降本增效!
01
模块化应用架构
为了解决文章开头提到的这些问题,我们对应用同时做了横向和纵向的拆分。
第一步,纵向拆分:把应用拆分成基座和业务两层。这两层分别对应两层的组织分工。基座小组与传统应用一样,负责机器维护、通用逻辑沉淀、业务架构治理,并为业务提供运行资源和环境。通过关注点分离的方式,基座小组为业务屏蔽业务以下所有基础设施,使业务能够聚焦在业务自身上。
第二步,横向切分:我们将业务横向切分出多个模块,模块之间独立并行迭代、互不影响。同时模块由于不包含基座部分,构建产物非常轻量,启动逻辑也只包含业务本身,所以启动快,且具备秒级的验证能力,让模块开发得到极致的提效。
拆分前,每个开发者可能感知的部分包括框架、中间件、业务公共部分、业务自身所有代码和逻辑。
拆分后,团队的协作分工也发生改变,研发人员分工出两种角色:基座和模块开发者。模块开发者不用关心资源与容量,只需聚焦在业务逻辑自身,并且享受秒级部署验证能力。
需要重点关注的是,我们是如何做这些纵向和横向切分的。切分是为了隔离,隔离是为了能够独立迭代、剥离不必要的依赖。然而如果只是隔离,没有共享,那就相当于只是改变部署的位置而已,很难达到好的效果。
所以想要理解模块化架构背后的原理,需要聚焦到隔离与共享上来。
架构的优势
我们根据模块化架构在蚂蚁内部实际落地的效果进行总结,其优势主要集中在这四点:快、省、灵活部署以及平滑演进。
与传统应用对比,,数据如下,可以看到在研发阶段、部署阶段、运行阶段都得到了 10 倍以上的提升效果。
适用的场景
经过在蚂蚁集团内部四到五年的打磨,逐渐沉淀出的 6 大适用场景,看看是否有你需要的?
02
运维调度平台架构
光有应用架构还不够。只有在研发阶段、运维阶段、运行阶段都提供完整的配套能力,才能让模块化应用架构的优势真正触达到研发人员。
在研发阶段,需要提供基座接入能力、模块创建能力,更重要的是模块的本地快速构建与联调能力;在运维阶段,提供快速的模块发布能力,在模块发布基础上提供 A/B 测试和秒级扩缩容能力;在运行阶段,提供模块的可靠性能力,模块可观测、流量精细化控制、调度和伸缩能力。
在整个平台里,需要 4 个组件:
研发工具 Arkctl,开发者使用 Arkctl 完成模块快速创建、快速联调测试等能力
运行组件 SOFAArk,提供基于 ClassLoader 的多模块运行的环境
Arklet 和 Runtime 组件,提供模块运维、模块生命周期管理、多模块环境适配
控制面组件 ModuleController
● ModuleDeployment,提供模块发布与运维能力
● ModuleScheduler,提供模块调度能力
● ModuleScaler,提供模块伸缩能力
在这些组件基础上,我们提供了从研发到运维再到运行时的完善配套能力。
多集群、弹性与调度
将线上应用根据场景隔离出不同机器组,不同机器组上可以安装不同模块,给不同业务提供不同的 QOS 保障。同时可以单独划分出 Buffer 机器组,当业务机器组机器不够时,可以快速从 Buffer 机器组里调度出机器,安装上相应的模块,完成 10 秒级的扩容。
由于模块的启动速度在 10 秒级,所以在弹性上也能做到与服务更加同频、伸缩更加实时。从上图可以看到,应用实例数曲线与流量曲线基本处于一致的状态。
可观测、高可靠、排障等能力
模块化运维调度作为在 pod 上一层的模型,与现有配套设施会有所不同,所以需要针对配套设施完成可观测、监控排障等能力适配。
A/B 测试、灰度测试
一个模块更新时,可以同时存在多个版本。通过引流规则完成灰度测试,或者 A/B 测试。
流量隔离与精细化路由
在上述内容中,已经将应用粒度从机器分组、代码分组(模块)上做了更细粒度的划分,这里我们将流量也进一步进行细粒度划分。
一组模块和对应所在的机器组可以分配不同的流量单元,再根据请求的不同参数,精细化路由到对应的流量分组中。
当前完整能力已经开源:https://github.com/sofastack/sofa-serverless。非常期待与大家一起建设社区!
还有 2 分钟上手试用视频教程,欢迎在 https://sofaserverless.gitee.io/docs/video-training/ 进行查看&试用。
SOFAServerless 当前已接入 15+ 企业:
如果你也想为企业实现降本增效,欢迎扫码咨询探讨~
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 感兴趣,欢迎前来参与体验~
扫描下方二维码或者点击「阅读原文」均可报名参与。
进入 SOFAServerless 官网抢先体验:https://sofaserverless.gitee.io/docs/tutorials/trial_step_by_step/
如遇问题,可在 SOFAServerless GitHub 页面及时提交 issue 互动交流~
推荐阅读
蚂蚁 SOFAServerless 微服务新架构的探索与实践
超越边界:FaaS 的应用实践和未来展望
大象转身:支付宝资金技术 Serverless 提效总结
Lunettes - 让 Kubernetes 服务运营更简单