云数据库FinOps实战复盘

简介: 云数据库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还有几个非常重要的维度,包括六大原则、角色、循环方法论、成熟度模型。

640.png


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。这样导致了一份数据会存在六个副本,造成了磁盘空间使用率的极速膨胀。

640.png

在多副本灾备架构下,可以对主备集群内数据都调整为两副本(去掉replica3、replica6),整体变为四副本,可以降低30%的磁盘空间使用。

某业务团队单副本140T数据,六副本840T,磁盘使用率不断上涨,造成巨大成本压力。我们通过调整副本数量为四副本(从原来的六副本),有效降低了280T数据的磁盘使用空间。


3.4.2 数据冷热分离


如果数据量过大,一般可以考虑根据数据生命周期特点,实施冷热分离、无效数据清理。

640.png

关键逻辑

  • 客户端写热存储
  • 客户端查询时,根据 业务冷热划分逻辑 进行路由查询。
  • 迁移任务根据 业务冷热划分逻辑(一般为生产时间或修改时间)进行 查询&过滤 ,将符合条件的冷数据写入冷存储,并且从热存储中删除
  • 对账任务根据迁移任务的记录日志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之道。

640.png

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 运营(Oprate)


4.3.1 文化建设


通过FinOps进行成本优化的文化建设是首要条件。必须自上而下推行这种意识和相关的奖惩制度。

让基础团队、业务团队认识到这项工作不是某个人、某个团队的事情,而是各个团队在架构设计、技术优化、绩效达成中的关键任务。(解决挑战三)

如果没有自上而下推行这种文化,FinOps肯定无法落地,更不用谈长期机制了。


4.3.2 自动化流程与机制


为了使FinOps成为一种长期机制,除了文化建设外,必须将人工流程自动化。

从 数据化、成本问题识别、任务分配、优化完成、数据追踪 等环节入手,将一整套流程以平台产品的形式沉淀下来。

转变”运动式“优化的困境,形成真正的长期机制。(解决挑战四)


5、小结


本文从云数据库成本挑战引入FinOps的概念,结合HBase成本优化项目阐述了FinOps的具体原则与实践案例。

最后总结了云数据库FinOps之道,形成数据库成本优化真正的闭环解决方案,形成长效机制,彻底解决四种常见成本优化挑战。


往期热门笔记合集推荐:

  • HBase原理与实战笔记合集
  • MySQL实战笔记合集
  • Canal/Otter源码与实战笔记合集
  • Java实战技巧笔记合集
相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
108 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
28天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
41 4
|
2月前
|
SQL NoSQL 数据库
Cassandra数据库与Cql实战笔记
Cassandra数据库与Cql实战笔记
21 1
Cassandra数据库与Cql实战笔记
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
193 1
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
79 0
|
2月前
|
SQL 关系型数据库 MySQL
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
|
4月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
2月前
|
SQL 数据处理 数据库
SQL语句优化与查询结果优化:提升数据库性能的实战技巧
在数据库管理和应用中,SQL语句的编写和查询结果的优化是提升数据库性能的关键环节
|
2月前
|
SQL 存储 Java
sql注入原理与实战(二)数据库原理
sql注入原理与实战(二)数据库原理
|
4月前
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】