畅捷通的 Serverless 探索实践之路

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 畅捷通的 Serverless 探索实践之路

作者:计缘,阿里云云原生架构师

畅捷通介绍


畅捷通是中国领先的小微企业财税及业务云服务提供商,成立于 2010 年。畅捷通在 2021 年中国小微企业云财税市场份额排名第一,在产品前瞻性及行业全覆盖方面领跑市场,位居中国小微企业云财税厂商矩阵领军象限前列。作为专注小微企业云服务、软件提供商,畅捷通于 2017 年在业内创新提出“智公司”的概念,于 2018 年进一步丰富提出了“智能商业范式六步法”,旨在帮助小微企业明确、精准的走向智能化。畅捷通针对小微企业财务及管理转型问题,通过技术赋能,帮助小微企业实现人员在线、业务在线、客户在线、管理在线,改变传统的经营业态,推动数智化升级转型。


市场数据来源于艾瑞咨询发布的《2022 年中国小微企业云财税行业研究报告》


在数字经济快速发展的战略机遇下,小微企业积极谋求业务转型,利用数智化手段增收、降本、提效的需求将进一步增强。畅捷通以数智财税,数智商业为核心,以生态服务为延展,提供小微企业云服务,推出了一系列 SaaS 产品,包括好会计(智能云财税)、好生意(营销型云进销存)、T+Cloud(全场景数智商业云应用)、好业财(创新企业数智经营平台)、易代账(数智财税平台)等,畅捷通云平台累计注册用户数超过 800 万。


业务及技术背景


畅捷通有 5 个核心 SaaS 产品,均以数智财税、数智商业为核心,以数据服务与生态服务为延展,提供小微企业云服务。


  • 好会计:票财税一体化的智能云财税系统,帮助财务人员通过 PC 端、手机端、微信端随时随地管理现金银行、发票、往来、报税、经营分析等。
  • 好生意:营销型云进销存系统,以帮助企业管店拓客为核心,实现智能获客找生意,智能决策做生意,智能高效管生意。
  • T+Cloud:数智商业云服务,帮助创新型企业通过数智化手段快速获取广泛的商业资源(客源、货源、资金及专业服务),对经营管理要素(人/财/货/客/数)实现有效的精细化、数字化、智能化管理。
  • 易代账:面向代账会计和代账公司设计的云应用,集管理、记账、报税于一体的智能财税系统。
  • 好业财:面向小型商贸、工贸一体、零售企业的云服务产品,以数智化经营管理为核心,帮助企业实现业财税票一体化,全渠道全场景移动管理,实现线上线下数据协同,全面提升企业竞争力。


大家知道 SaaS 软件基本都是面向 To B 的业务,虽然在请求量和流量方面远不如 To C 业务的系统,但是对于稳定性和安全性的要求远远高于面向 To C 的业务,并且因为涉及的业务领域更深,产品的功能会异常复杂,且模块和模块之间都有着紧密的联系,像多租户管理、租户数据隔离、网络隔离、系统扩展性(aPaaS 能力)、BI(数据展示分析)等都是畅捷通要解决的难题。


所以这 5 个核心系统基本是生在云上,长在云上的,在畅捷通发展的这 13 年里,IT 技术架构也在不断的做改进优化,目的就是能更好的解决上述的那些难点问题。


  • 部署架构演进路线:
  • 主部署架构:传统 ECS 部署架构 -> K8s 部署架构
  • 探索型部署架构:Serverless 部署架构
  • 技术架构演进路线:Java 单体服务 -> 基于 HSF 的分布式架构 -> 基于 Java SpringCloud 的微服务架构 -> Serverless 函数架构


从部署架构的演进来看,畅捷通很早就看到了 K8s 能给产品和产研团队带来的价值,在 CTO 的果断决策下,重投入进行容器化改造,将之前的 ECS 部署架构改为 K8s 部署架构,并且选择了阿里云 ACK,到目前,有十几个 ACK 集群在稳定支撑畅捷通的核心业务。


技术架构的演进其实是和部署架构的演进相辅相成的,Java 单体服务和 HSF 存在于 ECS 部署架构,在做容器化转型的阶段,同时对服务进行了微服务的转型,并且也引入了消息中间件(RocketMQ,RabbitMQ)来辅助微服务的转型。


在大环境的驱使下,降本增效基本已经成为了每家企业的核心 KPI,畅捷通也不例外,但畅捷通似乎更能居安思危,因为早在 2020 年,就因为改进效率的问题,开始调研 Serverless 技术,这也是畅捷通现在部署架构和技术架构在持续向 Serverless 演进埋下的最早的伏笔。


为什么选择 Serverless


Serverless 技术概念出现于 2012 年,兴起于 2014 年(AWS Lambda),国内云厂商在 2017 年开始有相关的产品推出,经过多年的发展,Serverless 技术在落地场景、产品体验、稳定性等方面逐步趋于成熟。Serverless 其实是 Server + less 的组合,并不是真的没有服务器,而是帮助使用者屏蔽底层繁琐的服务器维护,让企业更加专注于业务。业界普遍认为 Serverless = FaaS(即 Function as a Service) + BaaS(即 Backend as a Service),支持自动弹性伸缩和按量付费。


其实 Serverless 技术刚兴起的时候特指 FaaS,也就是函数计算的产品形态,经过这么多年的演进,已经扩展到 Serverless 技术理念和 Serverless 应用架构,云厂商也围绕 Serverless 推出了非常多相关的产品和服务,涵盖计算、存储、数据库和大数据等,帮助企业用户构建 Serverless 应用。



畅捷通非 Serverless 架构如何向 Serverless 架构转型,实现降本增效,提高资源利用率。Serverless 技术理念是指 Zero Server Ops + No Compute Cost When Idle,核心思想是让企业聚焦业务,降低 Ops。因此按照 Serverless 的理念,运维工作会被极大简化,研发人员一定程度上可以操控资源的使用,进而提升业务迭代效率。所以这个理念非常契合畅捷通研发、运维团队的发展思路。


Serverless 技术调研


畅捷通是一家积极拥抱云的企业,对一切新的技术领域都有着求知欲,畅捷通总架构师郑芸女士多次组织核心研发运维同学和我们深入了解 Serverless 技术领域,从底层架构实现、适用的业务场景、对现有业务的改造成本等几个方面来综合分析,最终确定使用函数计算 FC 作为试点,开始 Serverless 的探索之路。


函数计算业务场景


针对 SaaS 系统,函数计算最适合的场景应该是 HTTP、Web 应用场景,大数据 ETL 场景和周期性任务场景,而畅捷通之后落地的项目基本都属于这三类场景。


非 Serverless 架构如何向 Serverless 架构转型选定好场景后,就需要解决如何转型的问题,这里的转型有个维度的概念:


  • 现存非 Serverless 架构业务向 Serverless 架构转型:会涉及到较大成本的改造问题
  • 新业务直接采用 Serverless 架构:遵循 Serverless 架构最佳实践范式即可


畅捷通这两部分都有涉及到,根据函数计算的概念,我们也总结了转型最佳实践,包括编程语言的选择、运行环境的选择、DevOps 改造流程、代码改造流程等,一起和畅捷通逐一进行验证。



Serverless 实践试金石-SQL 脚本执行任务


畅捷通的 Serverless 实践是渐进迭代的路线,在技术调研后,第一个试点项目是运维中的 SQL 脚本执行任务,因为面向 To B 客户的 SaaS 系统,出于稳定性的考虑,发版的节奏一般都不会特别的频繁,但每次发版的工作量是非常大的,尤其在发布大版本时,其中有一项重中之重的任务就是批量跑 SQL 脚本,要么更新元数据,要么更新表结构。主要在 T+Cloud 这个系统中试点,这个试点项目改造起来相对比较简单,风险也比较可控,属于客户小试牛刀。


原有方式的痛点

批量跑 SQL 脚本任务是需要计算资源的,但这些计算资源的使用率极低,所以不可能长期储备着计算资源,但如果要从支撑业务的资源中分配的话,那可能又会对业务产生影响。另外每次跑批时需要在计算量也不算小,所以每次就得靠运维人员手动加减服务器,费时费力,有时候因为资源不能及时准备好,从而影响发版进度,有时候忘记释放资源,又会产生额外的费用。所以核心的痛点就是提高效率、提升运维幸福度。


Serverless 架构


基于 Serverless 按需所取,按量计费的特点,将执行 SQL 脚本的任务放在了函数计算中,做到了在发版要执行 SQL 脚本的时候,按需通过运维管理平台请求函数计算,通过自动拉起所需计算资源来处理 SQL 脚本,脚本执行完后自动释放,相当于有一个随用随取的资源池供客户使用。改造为 Serverless 架构后,主要带来了以下优势:


  • 彻底解决了按需所取的计算资源问题,运维人员不需要再花额外时间考虑准备资源的问题。
  • 得益于函数计算的弹性速度和并发扩展能力,Serverless 架构下,在保证 SQL 脚本之间顺序性的前提下,并行执行 SQL 脚本的能力大幅提升,有效缩短了发版持续时间。
  • 函数计算异步请求有后处理机制,即当函数执行成功或者执行失败后,可以设置目标服务及时做后处理,在这个场景下,可以有效自动化处理执行失败的 SQL 脚本任务,比如执行失败后发送消息,或者执行失败后重试执行,或者再拉起另一个函数做补偿逻辑等等。极大的提升了 SQL 脚本批量执行的稳定性。


Serverless 实践全面开花


在 SQL 脚本执行任务这个试点项目中,Serverless 架构切实的给客户带来的价值,所以畅捷通逐渐寻找其他适合函数计算的场景。


运维工具集

在实践 Serverless 架构时,大多数客户都有一个惯性思维,那就是先找边缘非核心业务试点,达到预期效果后,开始从运维侧入手展开,畅捷通也不例外。所以第二个开始实践 Serverless 架构的项目其实是 SQL 脚本任务这个点的延展,就是将整个运维管理平台中合适的场景都替换为函数计算。因为运维管理平台相比业务系统,对资源的需求也是较为低频的,其中的一些任务执行可能一天就几次,甚至一个月几次,所以本质上都是将各种运维任务脚本放在函数计算中运行。除了享受到了函数计算资源按需所取,大并发执行,后处理容错机制等红利外,还有一点优势就是在快速修复脚本异常的场景下,函数计算有先天优势。


  • 函数计算提供了 WebIDE,对于需要快速修复脚本异常的情况下,可以快速打开控制台,在 WebIDE 中修改脚本,一键部署发布即可。在应急场景下非常有效。
  • 函数计算提供了灰度版本的能力,所以在需要快速修复问题的场景下,也可以快速创建一个新版本,然后在运行态快速切换版本,保留下来历史版本,用于后续分析。



开放平台

我们通常评判 SaaS 产品的能力好坏时,对业务领域的理解深度固然重要,但也有另一个非常重点的衡量标准就是它是否具备 aPaaS 可扩展能力或者 API 开放平台,因为它关系到这个 SaaS 产品未来能走多远,比如订阅付费和定制化交付收入的占比,上下游生态的建设等。畅捷通的SaaS产品就有很强的扩展能力和 API 开放平台。


畅捷通的 API 开放平台有一个使用很广泛的场景就是他们的用户去对接三方的系统,或者其他的 SaaS 系统,比如接美团的消息,接饿了么的消息等,在这个场景下又有很明显的 To C 特征,即消息量的波动很大,高峰期消息 TPS 可以达到万级别,但低峰期的消息 TPS 可能只有几十。所以在这个场景下,有这么几个痛点问题:


  • 对接的系统无法统一标准,需要支持多种协议,比如对接三方 SaaS 系统大多数是 HTTP 协议,对接一些用户的自研系统可能希望走 MQ 协议,或者 Kafka 协议。为了适配多种接收协议,后端就需要实现多套代码。维护成本高。
  • 消息流波动极大,波峰波谷相差几万 TPS,导致储备资源时只能按照峰值储备,资源利用率极低,成本浪费严重。


这些痛点又完美命中了函数计算的核心特点,结合前两个场景中函数计算的良好表现,所以畅捷通第三个试点项目就是 API 开放平台,将接受三方消息,处理消息的架构换为函数计算架构。



从架构图上可以看出,处理消息或者请求的函数逻辑是一致的,只是接收协议不同,所以使用函数计算可以方便维护三个逻辑一样的函数,但是分别具有不同的触发器,这样只需要维护一套代码即可实现多种接收协议的场景。


说到函数计算的触发器,就不得不说 Serverless 架构的另一个优势,就是生态集成:



函数计算上游对接了近百种触发器,所以如果采用了函数计算架构,那相当于已经具备了和阿里云近百种产品的集成与被集成能力,极大的提升了效率和降低了集成成本。


所以畅捷通将 API 开放平台转型为 Serverless 架构,也是收获满满:


  • 通过函数计算触发器解决了多种接收协议下维护多套代码的问题。
  • 极大的提升了资源利用率,有效优化了资源成本。在这个场景下,处理消息的函数使用 Go 语言,使用 0.1c 和 0.05c 规格的函数实例,并且采用单实例多并发。在有几万消息的峰值情况下,只需要十几个函数实例就可以稳定支撑,相比原有的 K8s 架构,成本从几千元每月节省到了几百元每月。


智能补货业务

随着试点 Serverless 架构的项目越来越多,同时也获得了巨大的收益,畅捷通开始逐渐将 Serverless 架构实践的眼光看向了核心业务。也许这就是命运的安排,正好畅捷通有一块新业务开始规划设计,函数计算被考虑了进去,这就是智能补货业务。该业务是根据企业的业务数据,按商品的库存、采购、销售或材料消耗规律,帮助采购员创立补货模型,从而快捷地帮助采购员计算、生成补货参考结果的智能化助手。


该业务由于业务数据量大,采用了离线+实时数据同步计算,需要参与补货计算的档案、业务数据同步到数据仓库中,并对数据根据业务需求定义进行预加工处理,整体有以下这些性质:


  • 具有突发流量特性,由于计算的数据量比较大,用户可以选择近半年甚至一年的业务数据进行计算分析,是个密集型计算,所以对计算资源的要求较高,如果传统部署架构顶着业务流量峰值储备的话,势必又有成本浪费的问题。
  • 智能补货业务它不是一个新的产品,而是已有产品中的一个新的业务模块,受限于微服务的拆分粒度,这部分逻辑会和已有的业务逻辑耦合度很高,所以如果运算补货算法逻辑时消耗大量资源,有可能存在抢占资源问题,影响到已有业务的稳定性。
  • 智能补货,除了主打智能以外,也支持用户自定义补货规则,所以在一定程度上每个用户的补货规则就像一个一个业务流程,那整个系统需要具备调度和编排这种业务流程的能力。


所以总结下来,智能补货业务有三个特点:


  • 有流量潮汐特性,希望计算资源有较强的扩展能力。
  • 希望计算资源独立,不抢占支持现有业务的资源。
  • 希望有一套架构支撑规则的灵活调度和编排。


这里又出现了函数计算的一个核心特点,那就是具备 Serverless 工作流的编排能力,我们先看架构图:



可以看到,补货算法逻辑层全部放在了函数计算中,和部署在 ACK 中的上下游业务互通,通过函数计算快速弹性能力解决流量潮汐下资源利用和成本问题,同时将这部分耗资源的逻辑剥离出来,也解决了资源抢占的问题。


对于补货规则灵活制定这部分,结合了 Serverless 工作流,每一个规则就是一个流程,流程中的每一个函数就是规则中的一个个算子,Serverless 工作流不止支持对函数计算的编排,也支持其他数学逻辑运算和其他阿里云的核心产品,比如 ECS、SAE、ACK、OSS 等,同时在版本管理和发布管理方面也是比较成熟。所以通过这一套架构增强业务功能的可扩展性。


虽然该业务对时延不敏感,但我们也尽最大可能对 Java 函数的冷启动问题进行了优化,比如使用镜像加速能力,JDK 使用阿里云优化过的 Dragonwell,开启预留实例+闲置计费等,从而达到该业务对时延的要求。另外对于 Snapshot 这些更深一层的技术优化我们也已经开始了调研和排期,尽最大努力彻底解决 Java 函数的冷启动问题。


更多业务场景

到目前为止,除了上文中提到的四个场景外,畅捷通还有其他使用 Serverless 架构实践的场景,都取得了预期的受益,比如 RPA 业务,零售数据全租户离线下载,离线数据处理等。覆盖了运维领域,核心业务领域,大数据领域,相信未来还会有更多的场景会转型为 Serverless 架构。


同行者的建议


Serverless 从根本上降低了用云的门槛和成本,Serverless 在业界的发展历程也已经超过 8 年,从落地效果看,阿里云函数计算是比较适合 SaaS 系统企业的。同时函数计算目前也在做 AIGC 场景,致力于帮用户以更低的门槛接入大模型服务。


去年开始,阿里云在大力推广 Serverless 产品服务,升级到了战略地位,包括提出 All in Serverless,目前云消息队列 MQ 计划在云栖大会后推出 Serverless 版、数据库 RDS 已经推出了 Serverless 版本、大数据团队也在推进 Serverless 化,从用户视角,我认为这是非常利好的。


通过全面的 Serverless 产品和服务,可以构建端到端的 Serverless 架构或者应用,这带来的改变是颠覆性的。与其观望,不如提前拥抱,期望畅捷通关于 Serverless 的实践经验能给更多企业带来一些启发。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
国诚投顾携手阿里云,依托Serverless架构实现技术全面升级,构建高弹性、智能化技术底座,提升业务稳定性与运行效率。通过云原生API网关、微服务治理与智能监控,实现流量精细化管理与系统可观测性增强,打造安全、敏捷的智能投顾平台,助力行业数字化变革。
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
|
3月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
|
7月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
680 69
|
7月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
437 12
|
9月前
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
|
10月前
|
负载均衡 Serverless 持续交付
云端问道9期实践教学-省心省钱的云上Serverless高可用架构
详细介绍了云上Serverless高可用架构的一键部署流程
198 10
|
11月前
|
Serverless 开发工具 开发者
活动实践 | 西游再现,函数计算一键部署 Flux 超写实文生图模型部署
这些图片展示了阿里巴巴云开发者生态的多个方面,包括开发工具、技术文档、社区交流、培训认证等内容,旨在为开发者提供全方位的支持和服务。
|
11月前
|
人工智能 Serverless API
尽享红利,Serverless构建企业AI应用方案与实践
本次课程由阿里云云原生架构师计缘分享,主题为“尽享红利,Serverless构建企业AI应用方案与实践”。课程分为四个部分:1) Serverless技术价值,介绍其发展趋势及优势;2) Serverless函数计算与AI的结合,探讨两者融合的应用场景;3) Serverless函数计算AIGC应用方案,展示具体的技术实现和客户案例;4) 业务初期如何降低使用门槛,提供新用户权益和免费资源。通过这些内容,帮助企业和开发者快速构建高效、低成本的AI应用。
399 12
|
11月前
|
存储 弹性计算 关系型数据库
活动实践 | 告别资源瓶颈,函数计算驱动多媒体文件处理测评
本方案介绍了一种高效处理文件的方法,适用于企业办公和社交媒体应用。通过阿里云的函数计算、对象存储OSS和轻量消息队列,实现文件的异步处理,如格式转换和水印添加,有效减轻了核心应用的负担,提高了业务稳定性和资源利用率。方案包括云服务器ECS、云数据库RDS、OSS存储等组件,支持快速部署和资源清理。

相关产品

  • 函数计算