作者:袁纪,阿里云原生架构师。
Chanjet介绍
cloud native
Chanjet成立于2024年,是中国领先的小微企业财税和商业云服务提供商。 2024年,尚捷在中国小微企业云财税市场占有率排名第一,产品前瞻、行业全覆盖领先市场,位居中国小微企业云财税厂商矩阵领先象限前列。 作为面向小微企业的云服务和软件提供商,尚捷在2024年创新性地在行业内提出了“智慧企业”的概念,并在2024年进一步丰富了“智慧商业范式六步走法”,旨在帮助小微企业清晰、精准地迈向智能化。 昌捷以小微企业财务和管理转型为目标,通过技术赋能,帮助小微企业实现人员、业务、客户、管理,改变传统业态,推动数智化升级转型。
艾瑞咨询发布的《2022中国小微企业云财税行业研究报告》中的市场数据**在数字经济快速发展的战略机遇下,小微企业积极寻求业务转型,利用数智化增收、降本增效的需求将进一步增强。 昌捷为小微企业提供以数智财税和数智业务为核心的云服务,并延伸生态服务,推出了一系列SaaS产品,包括好会计(智能云财税)、好商(营销云购销盘点)、T+Cloud(全场景数智商务云应用)、 好商财(创新型企业数智化管理平台)、易账(数智财税平台)等,累计注册用户超过800万。
业务和技术背景
cloud native
Chanjet拥有5大核心SaaS产品,均以数智财税和数智业务为基础,延伸数据服务和生态服务,为小微企业提供云服务。
好记账:集票、财、税于一体的智能云财税系统,帮助财务人员通过PC、手机、微信随时随地管理现金银行、发票、交易、纳税申报、业务分析等。 好生意:基于营销的云购售仓系统,旨在帮助企业以管理门店、拓展客户为核心,实现智能获客和业务、智能决策和业务、智能高效的业务管理。 T+Cloud:数智化商业云服务,通过数字化、智能化手段,帮助创新型企业快速获取广泛的业务资源(客户、商品、资本和专业服务),实现对运营管理要素(人、财、货、客)的有效精细化、数字化、智能化管理。 轻松记账:专为会计和会计公司设计的云应用,集管理、记账、报税于一体的智能财税系统。 做好商财:面向小商贸、工贸、零售企业的云服务产品,以数字化、智能化运营管理为核心,帮助企业实现工融融合、全渠道、全场景移动化管理,实现线上线下数据协同,全面提升企业竞争力。 众所周知,SaaS软件基本上是面向To B业务的,虽然在请求量和流量上都远不如To C业务的系统,但是对稳定性和安全性的要求要比To C业务高很多,而且因为涉及的业务领域更深, 产品的功能会极其复杂,模块与模块之间有着密切的关系,如多租户管理、租户数据隔离、网络隔离、系统可扩展性(APaaS 能力)、BI(数据显示和分析)等都是亟待解决的问题。
在Chanjet近13年的发展中,IT技术架构不断完善和优化,旨在更好地解决上述难题。
部署架构演进路线图:主要部署架构:传统 ECS 部署架构->K8S 部署架构探索式部署架构:Serverless 部署架构技术架构演进路线图:J**A 单体服务 -> 基于 HSF 的分布式架构 -> 基于 J**A SpringCloud 的微服务架构 -> Serverless 函数架构 从部署架构的演进角度来看,Chanjet 很早就看到了 K8S 能给产品和产研团队带来的价值,在 CTO 的果断决策下,对容器化转型进行了再投入, 将之前的 ECS 部署架构改为 K8S 部署架构,选择了阿里云 ACK截至目前,已有十几个ACK集群稳定支撑着Chanjet的核心业务。
技术架构的演进其实是与部署架构的演进相辅相成的,在ECS部署架构中存在J**单体服务和HSF,在容器化转型阶段,同时将服务向微服务转型,同时还引入了消息中间件(rocketmq、rabbitmq)来辅助微服务的转型。
在大环境的驱动下,降本增效基本成为每个企业的核心KPI,尚捷也不例外,但尚捷似乎在和平时期更做好了防患于未然的准备,因为早在2024年,因为提效率的问题,就开始研究Serverless技术,这也是香捷目前部署架构和技术架构在不断演进的最早铺垫无服务器。
为什么选择无服务器
cloud native
Serverless 技术的概念出现在 2012 年,出现在 2014 年(AWS Lambda),国内云厂商在 2017 年开始推出相关产品。 Serverless 其实是服务器+少的组合,并不是说没有服务器,而是帮助用户屏蔽底层繁琐的服务器维护,让企业可以更专注于业务。 业界普遍认为,Serverless = Faas(即功能即服务)+ BaaS(即后端即服务),支持自动弹性伸缩和按量付费。
事实上,Serverless 技术刚出现的时候,就特指 Faas,即函数计算的产品形态,经过这么多年的演进,已经延伸到 Serverless 技术概念和 Serverless 应用架构,云厂商也围绕 Serverless 推出了许多相关产品和服务,涵盖计算、存储、数据库、大数据等, 等,帮助企业用户构建无服务器应用。
如何将 Chanjet 的非 Serverless 架构转变为 Serverless 架构,以降低成本、提高效率和提高资源利用率。 Serverless的技术理念是指闲置时零服务器运维+无计算成本,核心思想是让企业专注于业务,减少运维。 因此,根据Serverless的概念,运维工作将大大简化,研发人员可以在一定程度上控制资源的使用,从而提高业务迭代的效率。 因此,这个理念非常符合Chanjet研发和运维团队的发展思路。
无服务器技术研究
cloud native
Chanjet首席架构师郑芸女士组织核心研发和运维同学与我们一起深入了解Serverless技术领域,全面分析了底层架构的实现、适用的业务场景、现有业务的转型成本最后,决定以函数计算FC为试点,开始对Serverless的探索。
函数计算业务场景
对于SaaS系统来说,最适合函数计算的场景应该是HTTP和Web应用场景、大数据ETL场景和周期性任务场景,而Chanjet之后已经落地的项目基本都属于这三类场景。
如何从非无服务器架构过渡到无服务器架构
选好场景后,就要解决如何转型的问题,这里的转型有一个维度的概念:
现有非Serverless架构业务向Serverless架构的转型:将涉及较大的转型成本新业务直接采用Serverless架构:遵循Serverless架构的最佳实践范式来完成这两部分,根据函数计算的概念,我们也总结了转型的最佳实践,包括编程语言的选择, 运营环境的选择、DevOps的转型流程、**转型流程等,都将与Chanjet一一验证。
无服务器实践
Litmus Stone - 用于执行任务的 SQL 脚本
cloud native
Chanjet 的 Serverless 实践是循序渐进的迭代路线,经过技术调研,第一个试点项目是运维中的 SQL 脚本执行任务,因为对于 to B 客户的 SaaS 系统来说,为了稳定起见,发布节奏一般不会特别频繁,但每次发布的工作量都非常大, 尤其是在发布大版本时,最重要的任务之一就是批量运行 SQL 脚本,要么更新元数据,要么更新表结构。主要在T+Cloud系统中试点,改造相对简单,风险相对可控。
原路的痛点
批量运行 SQL 脚本任务需要计算资源,但这些计算资源的利用率极低,因此不可能长期预留计算资源,但如果要从支持业务的资源中分配,可能会对业务产生影响。 另外,每次批量运行需要的计算量不小,所以每次都要依靠运维人员手动增减服务器,费时费力,有时因为资源不能及时准备,影响发布进度,有时还会忘记释放资源, 这将产生额外费用。因此,核心痛点是提高效率,提高运维的幸福感。
无服务器架构
基于Serverless On-Demand和按量付费计费的特点,将执行SQL脚本的任务放在函数计算中,这样在执行SQL脚本时,通过运维管理平台按需请求函数计算,通过自动拉取所需的计算资源,自动处理SQL脚本, 并且脚本执行后自动释放,相当于拥有了一个资源池供客户使用。转换为无服务器架构后,主要优势如下:
彻底解决了按需计算资源的问题操作员无需花费额外的时间来考虑准备资源。 得益于函数计算的弹性速度和并发扩展能力,在保证SQL脚本间顺序性的前提下,在Serverless架构下并行执行SQL脚本的能力得到了极大的提升有效缩短发布时间。 在此场景中,您可以有效地自动处理执行失败的 SQL 脚本任务,例如在执行失败后发送消息、在执行失败后重试执行或拉取另一个函数来补偿逻辑。 大大提高了 SQL 脚本批量执行的稳定性。 无服务器实践如火如荼
cloud native
在SQL脚本执行任务的试点项目中,Serverless架构确实为客户带来了价值,因此Chanjet正在逐步寻找其他适合函数计算的场景。
O&M 工具集
在实践Serverless架构时,大多数客户都有一种惯性思维,即先找一个边缘非核心业务的试点,达到预期效果后,从运维端开始,Chanjet也不例外。 因此,开始实践Serverless架构的第二个项目,其实是SQL脚本任务的延伸,即用函数计算替换整个运维管理平台中的合适场景。 与业务系统相比,运维管理平台对资源的要求相对较低,其中一些任务可能一天执行几次,甚至一个月执行几次,因此各种运维任务脚本本质上都是在函数计算中运行的。 除了按需使用函数计算资源、大并发执行、后处理容错等优势外,函数计算在脚本异常快速修复的场景下还具有先天优势。
函数计算提供WebIDE快速修复脚本异常,您可以快速打开控制台,在WebIDE中修改脚本,一键部署发布。 它在紧急情况下非常有效。 函数计算提供了灰度版本的能力,因此在需要快速修复问题的场景下,可以快速创建新版本,然后在运行状态下快速切换版本,保留之前的版本,以便后续分析。
开放平台
我们平时在评判一款SaaS产品的能力时,对业务领域的理解深度很重要,但另一个非常重要的衡量标准是它是否具有Apaas扩展性或者API开放平台,因为这关系到SaaS产品未来能走多远,比如订阅付费的占比和定制化的交付收入, 上下游生态系统建设等。 Chanjet的SaaS产品具有很强的可扩展性和API开放平台。
Chanjet 的 API 开放平台有一个应用非常广泛的场景,即他们的用户去对接第三方系统,或者其他 SaaS 系统,比如接收来自美团的消息、接收来自饿了么的消息等等,并且在这个场景下有明显的 To C 特征,即消息数量波动较大,高峰时段的消息 TPS 可以达到 10000 级, 但在低高峰时段的消息 TPS 可能只有几十条。所以在这个场景中,有几个痛点:
例如,大多数第三方SaaS系统都连接了HTTP协议,一些用户自研的系统可能希望使用MQ协议或Kafka协议。 为了适应多种接收协议,后端需要实现多套**。 维护成本高。 消息流波动较大,峰谷相差上万tps,导致资源储备只能按峰值预留,导致资源利用率极低,成本浪费严重。 这些痛点完美契合了函数计算的核心特性,再加上函数计算在前两个场景中的良好表现,因此尚捷的第三个试点项目是API开放平台,用函数计算架构取代了接受和处理第三方消息的架构。
从架构图中可以看出,处理消息或请求的函数逻辑相同,但接收协议不同,因此使用函数计算维护三个逻辑相同的函数,但每个函数的触发器不同,这样只需要维护一组**即可实现多种接收协议。
说到函数计算的触发因素,我们不得不说,Serverless架构的另一个优势是生态集成
函数计算上游连接了近100个触发器,因此如果采用函数计算架构,相当于具备了与近100款阿里云产品集成和集成的能力,大大提高了效率,降低了集成成本。
因此,Chanjet 将 API 开放平台转变为 Serverless 架构也收获颇丰:
函数计算触发器用于解决在多个接收协议下维护多组**的问题。 大大提高了资源利用率,有效优化了资源成本。 在此方案中,处理消息的函数使用 go 语言,使用 01c 和 005c 类型函数实例,使用单个实例,多并发。 在上万条消息的高峰期,只需要十几个函数实例就可以稳定支持,相比原来的K8S架构,成本从每月几千元节省到每月几百元。 智慧业务
随着越来越多的项目试点无服务器架构,以及所获得的巨大收益,Chanjet 开始逐渐将目光投向无服务器架构实践的核心业务。 也许这是命运的安排,正好有新业务要开始规划设计,并考虑功能计算,这就是智能业务。 业务是基于企业的业务数据,根据库存、采购、销售或物料消耗情况,帮助采购员创建最佳模型,从而快速帮助采购员进行计算,生成最佳参考结果的智能助手。
由于业务数据量较大,业务采用离线+实时数据同步计算,需要将第一次计算涉及的档案和业务数据同步到数据仓库,并根据业务需求的定义对数据进行预处理,整体属性如下:
由于突发流量的特点,由于计算的数据量比较大,用户可以选择过去半年甚至一年的业务数据进行计算分析,这是一个密集的计算,因此对计算资源的要求很高。 智能业务不是新产品,而是现有产品中的一个新业务模块,受限于微服务的拆分粒度,这部分逻辑会与现有业务逻辑高度耦合,因此如果在计算算法逻辑时消耗大量资源,可能会出现抢占资源的问题, 影响现有业务的稳定性。智能除了主要的智能之外,还支持用户自定义的规则,所以在一定程度上,每个用户的规则都像一个业务流程,整个系统需要具备调度和编排这个业务流程的能力。 综上所述,智能业务有三个特点:
它具有流量的潮汐性,希望计算资源具有很强的可扩展性。 您希望使计算资源独立,而不是抢占资源来支持现有服务。 希望有一套架构来支持规则的灵活调度和编排。 函数计算的核心特性来了,那就是具备Serverless工作流的编排能力
可以看出,最先进的算法逻辑层全部放在函数计算中,与ACK中部署的上下游服务互联互通,通过函数计算的快速弹性能力,解决了流量潮汐下的资源利用率和成本问题,同时将这部分耗费资源的逻辑分离出来, 这也解决了资源抢占的问题。
Serverless 工作流不仅支持函数计算的编排,还支持其他数学逻辑运算和其他阿里云核心产品,如ECS、SAE、ACK、OSS等,在版本管理和发布管理方面也比较成熟。 因此,通过这套架构增强了业务功能的可伸缩性。
虽然该服务对延迟不敏感,但我们也尽可能地优化了 j**a 函数的冷启动问题,例如使用镜像加速能力,使用阿里云优化的 dragonwell for JDK,以及启用预留实例 + 空闲计费,从而满足服务的延迟要求。 此外,我们还开始对快照进行更深层次的技术优化的研究和调度,尽最大努力彻底解决j**a函数的冷启动问题。
更多业务场景
截至目前,除了上述四个场景外,Chanjet 还有其他场景采用了 Serverless 架构实践,都达到了预期的收益,比如 RPA 业务、零售数据全租户离线**、离线数据处理等。 它涵盖了运维领域、核心业务领域和大数据领域,相信未来会有更多场景向Serverless架构转型。
同伴的建议
cloud native
Serverless 从根本上降低了使用云的门槛和成本,Serverless 在行业中已经发展了 8 年多。 同时,函数计算也在做AIGC场景,致力于帮助用户以更低的门槛接入大模型服务。
从去年开始,阿里云就大力推广Serverless产品和服务,升级为战略定位,包括提出All in Serverless,现在云消息队列MQ计划在Apsara大会后推出Serverless版本,数据库RDS也推出了Serverless版本,大数据团队也在推广Serverless,从用户的角度来看, 我认为这很好。
借助全面的无服务器产品和服务,您可以构建端到端的无服务器架构或应用程序,从而带来改变游戏规则的变化。 与其观望,不如提前拥抱,希望 Chanjet 在 Serverless 上的实践经验能给更多企业带来一些启示。