云数据库FinOps实战复盘
历时三个多月的HBase成本优化项目按照预期交付了,HBase云数据库月度成本下降了32.5%,超出预期达成目标。
我们对本次HBase成本优化项目进行深度复盘,并进一步尝试总结云数据库的FinOps之道。
希望能够赋能mysql、redis、mongo等其他云数据库产品实现降本增效,进而给互联网寒冬环境下的企业IT降本增效,提供一个参考思路。
本文将从4个方面进行展开:
- 云数据库成本挑战
- 什么是FinOps
- HBase成本优化实践
- 云数据库FinOps之道
1、云数据库成本挑战
在早期,云计算被视为企业降低IT管理成本、提高业务敏捷性的重要途径。尤其是云数据库,高性能、高可用、弹性使用等特性,“数据库上云”是降本增效的一个重要途径。
但是,随着云数据库大规模使用,云产品的成本问题开始显现。比如我们使用的双集群HBase,在投入使用2年后,已经成为所有云数据库类别中,成本占比最大的组件。
如何解决云数据库成本优化问题?尤其在这样的互联网寒冬下,是摆在很多技术团队面前的首要问题。
常见的成本优化挑战包括四种情况:
- 挑战一:无法准确衡量数据库资源是否存在浪费
- 挑战二:缩容、降配等手段效果不明显,没啥别的优化措施
- 挑战三:基础架构团队很着急,一线业务团队不care
- 挑战四:“运动式”成本优化,无法形成长效机制
为了系统化解决这些问题,就需要引入FinOps(云成本优化)的概念了。
2、什么是FinOps
FinOps 是“Finance”和“DevOps”的综合体,也被称为“云财务管理”、“云成本管理”或“云财务优化”等。
FinOps有一个权威组织——FinOps 基金会,FinOps 基金会是Linux 基金会发起的项目,致力于通过最佳实践、教育和标准来推动实践云财务管理学科。
FinOps基金会对FinOps定义如下:
FinOps is an evolving cloud financial management discipline and cultural practice that enables organizations to get maximum business value by helping engineering, finance, technology and business teams to collaborate on data-driven spending decisions.
(Definition Updated: November 2021 by the FinOps Foundation Technical Advisory Council
这里有三点非常关键:
- cultural practice文化建设:FinOps的准测与文化需要建设推广。(自上而下)
- collaborate 跨团队协作:工程、财务、技术和业务团队。(FinOps绝不只是任意一个团队的工作)
- data-driven 方式:数据驱动。(如何推动协作的关键)
此外,FinOps还有几个非常重要的维度,包括六大原则、角色、循环方法论、成熟度模型。
3、HBase成本优化实践
参考FinOps六大原则,我们来看看 HBase成本优化项目 中如何落地。
3.1 团队协作
原则1:Teams need to collaborate
原则2:Everyone takes ownership for their cloud usage
这两条原则非常具有现实意义,成本优化很难由单一团队负责,必须各个团队都把 成本 作为一个关键指标,持续优化,提高效率和创新能力。
在HBase成本优化项目的 立项之初,我们就提前和各个业务团队进行深入沟通,对HBase成本优化的 现状、价值、实施路径 充分对齐。
业务团队 |
目前成本 |
优化成本 |
优化方案 |
预计人力投入 |
A团队 |
xxx |
5k/月 |
降低副本数 |
20人日 |
B团队 |
xxx |
8k/月 |
业务降级,取消灾备 |
30人日 |
C团队 |
xxx |
4k/月 |
替换云原生数据库 |
25人日 |
D团队 |
xxx |
10k/月 |
冷热分离 |
40人日 |
因此,在项目开展过程中,各个团队能结合各自的业务特点,采用 业务架构优化、数据架构优化、云原生技术 等手段,共同朝着HBase成本优化的大目标前进。
3.2 中心化驱动
原则3:A centralized team drives FinOps
专门有一个团队来推动FinOps的开展,包括各项流程的推进、基础设施的搭建等。
本次HBase成本优化项目中,采用 项目制 的形式,由基础架构团队进行推进,提供了诸如 成本优化目标、资源使用状况、数据增长变化、业务改造方案支持 等指标与工具。
后续,我们会开发一个统一的 FinOps平台产品,由一个 中心化产品,进行长效持久地推进云数据库成本优化。
3.3 可视化数据与报告
原则4:Reports should be accessible and timely
HBase目前是集群模式运作,各个集群都存在业务团队共用集群的情况。另外,业务数量众多(近百个敏捷组),如何快速识别成本大头进行优化,也是一个重点问题。
因此,本次HBase成本优化项目中,充分践行了 数据驱动 的理念。
- 大数据量识别筛选出单副本大于5T的业务,共15个敏捷组,占总存储80%以上
- 高增速识别筛选出增速较快的业务。
- 优化效果指标评判采用脚本统计的方式记录数据,跟踪目标业务的优化情况。
这些数据驱动的能力,后续会沉淀为FinOps平台上的通用组件能力。
3.4 因地制宜,业务优化
原则5:Decisions are driven by business value of cloud
获得成本相关数据后,根据实际业务价值和使用情况进行成本优化决策。
本次HBase成本优化项目中,各个业务团队充分利用各自业务特点,进行相关业务优化。
3.4.1 减少副本数
以HBase为例,本身存储在本地盘的HDFS上,通过三副本机制保证数据不丢失。
为了提高应用稳定性,降低单HBase不可用带来的风险,我们核心服务都配备了双集群主备架构的HBase。这样导致了一份数据会存在六个副本,造成了磁盘空间使用率的极速膨胀。
在多副本灾备架构下,可以对主备集群内数据都调整为两副本(去掉replica3、replica6),整体变为四副本,可以降低30%的磁盘空间使用。
某业务团队单副本140T数据,六副本840T,磁盘使用率不断上涨,造成巨大成本压力。我们通过调整副本数量为四副本(从原来的六副本),有效降低了280T数据的磁盘使用空间。
3.4.2 数据冷热分离
如果数据量过大,一般可以考虑根据数据生命周期特点,实施冷热分离、无效数据清理。
关键逻辑
- 客户端写热存储
- 客户端查询时,根据 业务冷热划分逻辑 进行路由查询。
- 迁移任务根据 业务冷热划分逻辑(一般为生产时间或修改时间)进行 查询&过滤 ,将符合条件的冷数据写入冷存储,并且从热存储中删除
- 对账任务根据迁移任务的记录日志log,进行定时校验,确保数据不丢失,校验无误后清理log
3.4.3 做好数据压缩,减少存储量
对于单value比较大的数据,可以通过数据压缩算法,如snappy、lz4、gizp等,提高数据压缩比,降低存储。
HBase、mongo等数据库服务端可以做自动压缩的配置,如果服务端不支持自动压缩的,可以采用客户端压缩后再写入。
3.5 充分利用云产品
原则6:Take advantage of the variable cost model of the cloud
充分利用好不同的云产品计费模型。这个目前其实做的比较多了,比如选择不同云厂商的不同产品、根据不同场景选择不同计费模式( 包年包月、按量付费、serverless等)等。
本次HBase成本优化项目中,典型的就是在某个特定业务场景下,引入了 HBase serverless方案 作为灾备集群,降低了普通集群作为灾备集群的低效支出。
4、云数据库FinOps之道
前面聊了HBase成本优化实践的若干原则与具体操作,比较偏重“术”的层面。
下面,我们再结合FinOps的循环治理方法论,来更全面地思考云数据库的FinOps之道。
FinOps 基金会建议采用迭代方法来管理云服务的可变成本。最佳实践包括应持续管理的三个环节:通知、优化和运营。
4.1 通知(Inform)
核心在于 数据可视化 与 可分配。
业务团队和财务利益相关者能够确保他们在控制预算和准确预测支出的同时提高ROI,避免意外。
同时,也能作为一个业务团队的基础指标,来衡量并提升团队成本优化效率。
4.1.1 数据可视化
俗话说,It you can’t measure it, you can’t manage it。
数据驱动理念在FinOps中同样处于核心地位。
包括但不限于:
- 资源(CPU/内存/磁盘)使用率
- 资源增长速率
- 资源预算
- 资源实际使用超额比例
- 资源使用预测
准确而全面的可视化,可以较好解决成本优化的挑战一,精准衡量是否存在资源浪费的情况。
4.1.2 可分配
对于所有云上资源,都要尽可能精细化、准确 分配到各个实际使用团队上。
目前在微服务架构下,单实例类型的组件比较容易跟上游应用绑定,进而分配到具体业务团队。但是集群类型的组件(如HBase),仍然需要做进一步细粒度的计算与分配。
4.2 优化(Optimize)
一旦资源优化指标准确绑定到 实际使用团队后,就可以开展各项优化工作。
最基础的方式,是根据数据使用率指标,对空闲资源进行降配、缩容等方式。
更深度的优化,需要结合实际业务场景,参考3.4的内容,实施 减少副本数、冷热分离、数据压缩 等手段。(解决挑战二)
4.3 运营(Operate)
4.3.1 文化建设
通过FinOps进行成本优化的文化建设是首要条件。必须自上而下推行这种意识和相关的奖惩制度。
让基础团队、业务团队认识到这项工作不是某个人、某个团队的事情,而是各个团队在架构设计、技术优化、绩效达成中的关键任务。(解决挑战三)
如果没有自上而下推行这种文化,FinOps肯定无法落地,更不用谈长期机制了。
4.3.2 自动化流程与机制
为了使FinOps成为一种长期机制,除了文化建设外,必须将人工流程自动化。
从 数据化、成本问题识别、任务分配、优化完成、数据追踪 等环节入手,将一整套流程以平台产品的形式沉淀下来。
转变”运动式“优化的困境,形成真正的长期机制。(解决挑战四)
5、小结
本文从云数据库成本挑战引入FinOps的概念,结合HBase成本优化项目阐述了FinOps的具体原则与实践案例。
最后总结了云数据库FinOps之道,形成数据库成本优化真正的闭环解决方案,形成长效机制,彻底解决四种常见成本优化挑战。
希望能够抛砖引玉,提供一些启发和思考。如果你有其他补充和建议,欢迎留言讨论。
都看到最后了,原创不易,点个关注,点个赞吧~
文章持续更新,可以微信搜索「阿丸笔记 」第一时间阅读,回复【笔记】获取Canal、MySQL、HBase、JAVA实战笔记,回复【资料】获取一线大厂面试资料。
知识碎片重新梳理,构建Java知识图谱:github.com/saigu/JavaK…(历史文章查阅非常方便)
云数据库FinOps实战复盘的更多相关文章
- 洞见数据库前沿 阿里云数据库最强阵容 DTCC 2019 八大亮点抢先看
摘要: 作为DTCC的老朋友和全球领先的云计算厂商,阿里云数据库团队受邀参加本次技术盛会,不仅将派出重量级嘉宾阵容,还会为广大数据库业内人士和行业用户奉上8场精彩议题.下面小编就为大家提前梳理了8大亮 ...
- 洞见数据库前沿 集结阿里云数据库最强阵容 DTCC 2019 八大亮点抢先看
摘要: 作为DTCC的老朋友和全球领先的云计算厂商,阿里云数据库团队受邀参加本次技术盛会,不仅将派出重量级嘉宾阵容,还会为广大数据库业内人士和行业用户奉上8场精彩议题.下面小编就为大家提前梳理了8大亮 ...
- 阿里云产品介绍(三):云数据库RDS
写完云服务器ECS,本来想先写负载均衡的. 因为发现很多客户,都是直接将单台云服务器应用对外提供访问,如果云服务器宕机,应用就会停止服务.云服务器标称有99.95%的可用率,一年下来宕机四个多小时也是 ...
- 阿里云数据库RDS环境搭建
前言 现在云数据库越来越流行,国外的亚马逊AWS微软Azure,国内的BAT和京东都推出了自己的云数据库服务,各自优劣不表,个人推荐国外的用AWS,国内的用阿里云,这是我这几天刚申请的阿里云的过程的一 ...
- 云数据库 Bmob
/**************************************************************************************** * 云数据库 Bmo ...
- 【IT名人堂】何云飞:阿里云数据库的架构演进之路
[IT名人堂]何云飞:阿里云数据库的架构演进之路 原文转载自:IT168 如果说淘宝革了零售的命,那么DT革了企业IT消费的命.在阿里巴巴看来,DT时代,企业IT消费的模式变成了“云服务+数据”, ...
- 通过公网连接云数据库Memcache--ECS Windows篇
目前云数据库Memcache是需要通过ECS的内网进行连接访问,如果用户本地需要通过公网访问云数据库Memcache,可以在ECS Windows云服务器中通过netsh进行端口映射实现. 一.搭建要 ...
- JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理
文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结 JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语 ...
- 阿里云资深DBA专家罗龙九:云数据库十大经典案例分析【转载】
阿里云资深DBA专家罗龙九:云数据库十大经典案例分析 2016-07-21 06:33 本文已获阿里云授权发布,转载具体要求见文末 摘要:本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的&l ...
- 腾讯云数据库团队:浅谈如何对MySQL内核进行深度优化
作者介绍:简怀兵,腾讯云数据库团队高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson Reuters和YY等公司,PTimeDB作者,曾获一项发明专利:从事MySQL内核开发工作 ...
随机推荐
- 面向对象的照妖镜——UML类图绘制指南
1.前言 感受 在刚接触软件开发工作的时候,每次接到新需求,在分析需求后的第一件事情,就是火急火燎的打开数据库(DBMS),开始进行数据表的创建工作.然而这种方式,总是会让我在编码过程中出现实体类设计 ...
- KTV和泛型(2)
很多使用泛型的小伙伴,都会有一个疑惑:为什么有的方法返回值前带<T>.<K, V>之类的标记,而有的方法返回值前又什么都不带呢?就像这样: // 实体基类 class Enti ...
- 7.RabbitMQ系列之topic主题交换器
topic主题交换器它根据在队列绑定的路由键和路由模式通配符匹配将消息路由到队列. 生产者在消息头中添加路由键并将其发送到主题交换器. 收到消息后,exchange尝试将路由键与绑定到它的所有队列的绑 ...
- 刷完一千道java笔试题的常见题目分析
java基础刷题遇到的最常见问题 可以先看一下这位博主整理的java面试题(很详细,我看了好几遍了):https://blog.csdn.net/ThinkWon/article/details/10 ...
- Vue中组件化编码 完成任务的添加、删除、统计、勾选需求(实战练习三完结)
上一个章节实现数据在组件之间的传递 .这一章主要是完成添加任务到任务栏.删除任务栏.统计任务完成情况.主要还是参数在各个组件之间的传递. 上一章节的链接地址:https://blog.csdn.net ...
- java中的栈(利用数组实现栈)
java中的栈(利用数组实现栈) 常见的数据结构:https://blog.csdn.net/weixin_43304253/article/details/119764275 栈的介绍 1.栈的英文 ...
- 我要手撕mybatis源码
传统的JDBC编程中的一般操作: 1.注册数据库驱动类,指定数据库的URL地址.数据库用户名.密码等连接信息 2.通过DriverManager打开数据库连接 3.通过数据库连接创建Statement ...
- django 生产环境部署手册
Django 是 python 的 web 框架,以下是其部署到生产环境的详细步骤,包含 Apache 和 nginx 版本. 部署环境 操作系统:centeros7.3 数据库:MySQL5.6.5 ...
- Asp.Net Core MVC传值 Asp.Net Core API 前台写法
$("#Add_User").click(function () { var obj = { //"属性名": 传递的值, "User_Name&qu ...
- C#中Enum的用法
1.定义枚举类型 public enum Test { 男 = 0, 女 = 1 } 2.获取枚举值 public void EnumsAction() { var s = Test.男;//男 va ...