资源成本降低70%!华为MetaERP资产核算的Serverless架构实践
本文分享自华为云社区《资源成本降低70%!华为MetaERP资产核算的Serverless架构实践》,作者: 华为云PaaS服务小智。
资产核算是指在一定的财务周期,对企业拥有的房屋建筑物、机器设备、商标权和专利权等资产的取得、折旧和处置的会计核算,反映企业固定资产、无形资产的增减变动和价值分摊活动。华为资产核算产品,支撑企业资产从获取到处置全生命周期的管理和交易核算,在资产使用寿命内遵循会计准则和税法折旧的要求系统地计提资产折旧费用。
华为集团资产核算场景非常复杂,具备以下四大特点:
数据海量
管理的固定资产和无形资产的数量多达200多万项;
涉及国家多
覆盖国际会计准则和全球170多个国家的会计准则和税法政策要求;
业务流量不均衡
平时业务流量少,月末结账场景流量巨大,特别是在季结、年结时,1~2小时内需完成200多万笔资产折旧、300多万的分录生成;
原先业务是基于关系型数据库构建,这套架构能很好地解决数据一致性控制,但强依赖数据库性能,在业务数据流量不均衡的情况下,系统计算资源无法实现弹性伸缩。平日业务数据流量小时,系统资源大量闲置未得到有效利用,一旦遇到业务冲刺、月结等数据洪峰,系统资源又无法弹性扩容,导致业务数据积压,严重影响业务处理效率。
- 服务弹性慢,业务峰值处理性能不足:在月底、年底结账期,批量导入导出等任务集中生成,服务CPU资源利用率会瞬间突增至50%到100%不等。服务弹性能力较弱,启动时延超过了1分钟,一旦出现预留资源不足的情况,极易影响业务性能,导致无法在1~2小时内完成百万级资产核算业务的处理;
- 周期性集中处理型业务,预置资源利用率低:以批量上载、资源折旧两个业务为例,虽然平时很少使用,但为了保证服务随时可用,仍然需要保持最低配置在线,业务平均资源利用率不到2%。随着资产核算业务的不断演进、微服务数量增加,资源成本问题被进一步放大;
- 业务上线周期长,运维压力大:业务开发人员不仅要关注业务逻辑,还要额外考虑高并发等极端场景的处理,开发工作量大,问题多。在业务上线前需提前采购、配置硬件资源,日常运行时,不同服务弹性策略不同,需投入大量精力进行资源类的运维工作。业务的版本上线时间达到月级,无法快速响应客户需求;
为了进一步优化资源成本、简化服务开发,实现应用的现代化的转型,MetaERP资产核算业务决定采用华为云函数工作流 FunctionGraph试点Serverless化服务改造:
全自动弹性,算力随叫随到,轻松应对流量波峰
资产核算业务相关服务采用Java开发,改造为函数后,面临冷启动的问题。通过创新的进程级快照加速方案,应用直接从初始化后的快照进行运行环境恢复,从而跳过复杂的框架启动、业务初始化阶段,助力资产核算业务冷启动时间缩短到7秒,相比之前一分钟的启动时延,性能提升10倍。同时,FunctionGraph按请求并发量全自动弹性,无需再手动扩缩容,弹性速度实时匹配业务量,轻松应对流量波峰。
无请求时不需启动业务实例,资源成本降低70%
函数实例随请求自动扩缩容,在没有请求时,实例会缩容到0。基于此能力,针对批量上载、资源折旧类业务场景,减少了最小预置实例资源,资产核算业务Serverless化改造后常驻实例资源降低75%,月均资源消耗降低70%,收益显著。
存量业务无缝迁移,新业务开发运维效率提升3倍
资产核算存量业务基于SpringBoot等微服务框架开发,直接改造为原生函数方式工作量非常大。为此FunctionGraph提供了Springboot等框架兼容能力,服务只需集成统一SDK,并进行少量配置文件修改,即可完成改造,实现微服务平滑Serverless化。同时,对比传统微服务框架,FunctionGraph内置心跳检测、服务治理等能力,使能业务更聚焦。
同时,新业务使用华为云函数工作流 FunctionGraph开发,可拆解粒度更小、开发并行度更高。函数本身依赖后端数据库、消息队列等服务,需要集成多个SDK才能实现访问,开发复杂度高。对此FunctionGraph提供了统一对接后端链接能力(ServiceBridge),简化业务访问后端服务。ServiceBridge也天然具备弹性能力,当访问量激增时自动进行扩容。基于原生函数开发模式,可实现天级业务上线、免资源运维,以资产核算为例,业务上线时间从94人天(传统的应用构建流程)降低至30.5人天,大大提升了开发和运维效率。
首战告捷——持续推进MetaERP应用现代化
华为云函数工作流FunctionGraph将持续打造通用Serverless技术竞争力,致力解决Java服务启动慢、弹性能力不足等问题,使能负载在硬件资源的“细粒度”复用,以提高资源的利用率。同时提供与“硬件无关”的编程抽象和系统服务,简化分布式应用的开发、部署和运维。
MetaERP资产核算业务Serverless化后性能未劣化,常驻实例资源降低75%,月均资源消耗降低70%,成本优化收益明显。同时服务上线时间降至30.5人天,提升了开发运维效率。接下来,华为云函数工作流FunctionGraph将持续围绕“极简架构、极高质量、极低成本、极优体验”的目标,持续技术创新,助力MetaERP Serverless化,用技术力量提升企业服务质量、效率、体验。
在2023年7月25日,由中国信息通信研究院(以下简称“中国信通院”)和中国通信标准化协会联合主办的2023可信云大会上,华为云函数工作流FunctionGraph凭借此最佳实践荣获“可信云2022-2023年度云原生-Serverless技术最佳实践”。

资源成本降低70%!华为MetaERP资产核算的Serverless架构实践的更多相关文章
- 如何将离线计算业务的成本降低65%——弹性容器服务EKS「竞价实例」上线
在容器化的应用场景中,大数据计算是其中很大并且业务应用在逐渐增加的一个热门领域,包括越来越多的人工智能企业,都在使用容器技术来支持业务中的大量计算任务.降低成本.提升资源利用率也是当前这部分用户非常期 ...
- 如何通过 Serverless 技术降低微服务应用资源成本?
前言 在大型分布式 IT 架构领域,微服务是一项必不可少的技术.从本质上来讲,微服务是一种架构风格,将一个大型的系统拆分为多个拥有独立生命周期的应用,应用之间采用轻量级的通信机制进行通信.这些应用都是 ...
- 看得见的成本!1款工具实现K8S资源成本监控可视化
本文来自Rancher Labs 关注我们,第一时间获取技术干货 计算Kubernetes成本的复杂性 采用Kubernetes和基于服务的架构可以为企业带来诸多好处,如团队可以更快地迁移以及应用程序 ...
- 华为云计算IE面试笔记-Fusionsphere架构及组件介绍(服务器虚拟化解决方案)
eDSK 最上层则是eDSK是我们FusionSphere服务器虚拟化解决方案中的虚拟化北向统一API接口,其他的第三方系统或者是其他运营平台(FC.VMware等)可以通过eDSK轻松完成无缝对 ...
- 华为云对Kubernetes在Serverless Container产品落地中的实践经验
华为云容器实例服务,它基于 Kubernetes 打造,对最终用户直接提供 K8S 的 API.正如前面所说,它最大的优点是用户可以围绕 K8S 直接定义运行应用. 这里值得一提是,我们采用了全物理机 ...
- 成本降低40%、资源利用率提高20%的 AI 应用产品云原生容器化之路
作者 郭云龙,腾讯云高级工程师,目前就职于 CSIG 云产品三部-AI 应用产品中心,现负责中心后台业务框架开发. 导语 为了满足 AI 能力在公有云 SaaS 场景下,服务和模型需要快速迭代交付的需 ...
- MQTT X 1.9.1 发布:资源消耗降低 80%,稳定性大幅提升
经过两个 Beta 版本迭代,近日,MQTT 5.0 客户端工具 MQTT X 正式发布了 1.9.1 稳定版本. 该版本通过大规模性能优化以及已知问题修复实现了稳定性的飞跃提升.特别是在性能方面,以 ...
- ServerlessBench 2.0:华为云联合上海交大发布Serverless基准测试平台
摘要:华为云联合上海交大重磅推出ServerlessBench 2.0,为社区提供涵盖12类基准测试用例.新增5大类跨平台测试用例.4大类关键特性指标.且多平台兼容的Serverless开放基准测试集 ...
- 王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019
演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019) ...
- 华为ensp模拟某公司网络架构及配置详解
1.先晒下架构图,二层设备省略..... 2.下面开始具体配置详解 2.1.从路由器开始配置,先用远程工具远程AR1220F-S路由,secureCRT ,putty,xshell任选其中一个均可,功 ...
随机推荐
- CompletableFuture异步优化代码
CompletableFuture异步编排优化代码 我们在项目开发中,有可能遇到一个接口需要调用N个服务的接口.比如用户请求获取订单信息,需要调用用户信息.商品信息.物流信息等接口,最后再汇总数据统一 ...
- YbtOJ 质数与约数 4.统计元素
搜不到题解,乐. 由题意,\(a_i\) 对答案有贡献当且仅当 \(i\in{[l,r]}\) 且对于 \(\forall a_j| {a_i},j\notin[l,r]\). 则对于每个 \(a_i ...
- 博弈论nim游戏
nim游戏 给定n堆物品,第i堆物品有Ai个,两名玩家轮流行动,每次可以任选一堆,取走任意多个物品,可把一堆取光,但不能不取.取走最后一件物品的人获胜. 定理:nim游戏先手必胜,当且仅当A1 xor ...
- C# 压缩PDF文件
PDF 文件可以包含文本.图片及各种媒体元素,但如果文件太大则会影响传输效果同时也会占用过多磁盘空间.通过压缩PDF文件,能够有效减小文件大小,从而提高传输效率并节省存储空间.想要通过C#代码快速有效 ...
- JUC并发编程学习(十一)四大函数式接口(必备)
四大函数式接口(必备) 程序员:泛型.反射.注解.枚举 新时代程序员:lambda表达式.链式编程.函数式接口.Stream流式计算 函数式接口:只有一个方法的接口 @FunctionalInterf ...
- 题解 CF1292A
题目大意: 给你 \(2\times n\) 的迷宫,初始时没有任何障碍,给定 \(q\) 次询问,每次询问给予坐标 \((x,y)\),问将坐标 \((x,y)\) 反转状态(即无障碍变有障碍,有障 ...
- 【Flutter】一文读懂混入类Mixin
[Flutter]一文读懂混入类Mixin 基本介绍 Mixin是一种有利于代码复用,又避免了多继承的解决方案. Mixin 是面向对象程序设计语言中的类,提供了方法的实现,其他类可以访问 Mixin ...
- python之封装及私有方法
目录 封装 简洁 私有方法 封装:提高程序的安全性 将属性和方法包装到类对象中,在方法内部对属性进行操作,在类对象外部调用方法,使得程序更加简洁 在python中,如果该属性不希望在类对象外部被访问, ...
- 如何判断lib和dll是32位还是64位?答案是使用微软的dumpbin工具,后面讲了如何使用gcc生成lib和dll
为什么我会考虑这个问题呢?因为我在使用java去调用一个c的lib库的时候,弹出以下警告: D:\work\ideaworkpaces\jdk21Test001\src\main\java\lib\h ...
- [python]数据分析--数据清洗处理case1
数据预处理案例1 主要涉及pandas读取csv文件,缺失值和重复值处理,分组计数,字段类型转换 ,结果写入到Excel. 根据要求对CSV数据集进行处理要求如下: 保留数据关键信息:time.lat ...