历时三个多月的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实战复盘的更多相关文章

  1. 洞见数据库前沿 阿里云数据库最强阵容 DTCC 2019 八大亮点抢先看

    摘要: 作为DTCC的老朋友和全球领先的云计算厂商,阿里云数据库团队受邀参加本次技术盛会,不仅将派出重量级嘉宾阵容,还会为广大数据库业内人士和行业用户奉上8场精彩议题.下面小编就为大家提前梳理了8大亮 ...

  2. 洞见数据库前沿 集结阿里云数据库最强阵容 DTCC 2019 八大亮点抢先看

    摘要: 作为DTCC的老朋友和全球领先的云计算厂商,阿里云数据库团队受邀参加本次技术盛会,不仅将派出重量级嘉宾阵容,还会为广大数据库业内人士和行业用户奉上8场精彩议题.下面小编就为大家提前梳理了8大亮 ...

  3. 阿里云产品介绍(三):云数据库RDS

    写完云服务器ECS,本来想先写负载均衡的. 因为发现很多客户,都是直接将单台云服务器应用对外提供访问,如果云服务器宕机,应用就会停止服务.云服务器标称有99.95%的可用率,一年下来宕机四个多小时也是 ...

  4. 阿里云数据库RDS环境搭建

    前言 现在云数据库越来越流行,国外的亚马逊AWS微软Azure,国内的BAT和京东都推出了自己的云数据库服务,各自优劣不表,个人推荐国外的用AWS,国内的用阿里云,这是我这几天刚申请的阿里云的过程的一 ...

  5. 云数据库 Bmob

    /**************************************************************************************** * 云数据库 Bmo ...

  6. 【IT名人堂】何云飞:阿里云数据库的架构演进之路

    [IT名人堂]何云飞:阿里云数据库的架构演进之路 原文转载自:IT168 ​ 如果说淘宝革了零售的命,那么DT革了企业IT消费的命.在阿里巴巴看来,DT时代,企业IT消费的模式变成了“云服务+数据”, ...

  7. 通过公网连接云数据库Memcache--ECS Windows篇

    目前云数据库Memcache是需要通过ECS的内网进行连接访问,如果用户本地需要通过公网访问云数据库Memcache,可以在ECS Windows云服务器中通过netsh进行端口映射实现. 一.搭建要 ...

  8. JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理

    文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结   JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语 ...

  9. 阿里云资深DBA专家罗龙九:云数据库十大经典案例分析【转载】

    阿里云资深DBA专家罗龙九:云数据库十大经典案例分析 2016-07-21 06:33 本文已获阿里云授权发布,转载具体要求见文末 摘要:本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的&l ...

  10. 腾讯云数据库团队:浅谈如何对MySQL内核进行深度优化

    作者介绍:简怀兵,腾讯云数据库团队高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson Reuters和YY等公司,PTimeDB作者,曾获一项发明专利:从事MySQL内核开发工作 ...

随机推荐

  1. docker方式安装Redash

    之前使用的项目GitHub地址是https://github.com/dazdata/redash.git,这个是直接复制国外的项目的,地址:https://github.com/getredash/ ...

  2. 组件化开发1-git命令简洁版

    1-给项目添加git git init 2-查询当前状态,(红色显示的为在工作区,绿色为暂缓区) git status 3-提交到暂缓区 git add . 4-提交到本地仓库('xxxx'里面为注释 ...

  3. BLS签名算法

    前言 [失踪人口回归 (*/ω\*)] 真的好久好久没有更新了,因为自己也还在找方向,但还是把新学的知识记录在博客里.今天要介绍的是BLS签名算法. 一.BLS签名算法简介 BLS签名算法[1]是由斯 ...

  4. for循环及range内置方法

    目录 while循环补充说明 流程控制之for循环 range方法 rang实战案例 作业 """ 1.先写注释(思维逻辑和想法) 2.先考虑主体功能 在考虑附加功能 & ...

  5. LeetCode------斐波那契数列(2)

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof 写一个函数,输入 n ,求斐波那契(Fibo ...

  6. 齐博x1内容评论标签的风格制作

    评论的标签如下: {qb:comment name="xxxxx" rows='5'} HTML代码片段 {/qb:comment} 评论涉及到的元素有{posturl} 这个是代 ...

  7. 如何用webgl(three.js)搭建一个3D库房,3D仓库3D码头,3D集装箱,车辆定位,叉车定位可视化孪生系统——第十五课

    序 又是快两个月没写随笔了,长时间不总结项目,不锻炼文笔,一开篇,多少都会有些生疏,不知道如何开篇,如何写下去.有点江郎才尽,黔驴技穷的感觉. 写随笔,通常三步走,第一步,搭建框架,先把你要写的内容框 ...

  8. 有用的内置Node.js APIs

    前言 在构建你的第一个Node.js应用程序时,了解node开箱即用的实用工具和API是很有帮助的,可以帮助解决常见的用例和开发需求. 有用的Node.js APIs Process:检索有关环境变量 ...

  9. 云数据库时代,DBA将走向何方?

    摘要:伴随云计算的迅猛发展,数据库也进入了云时代.云数据库不断涌现,产品越来越成熟和智能,作为数据库管理员的DBA将面临哪些机遇和挑战?又应该具备什么能力,才能应对未来的不确定性? 本文分享自华为云社 ...

  10. Byte和byte的区别

    Byte和byte的区别 背景 今天学习网络编程中,在建立Udp连接时,使用byte[]数组接收传输的数据,但是byte[]错写为Byte[],导致错误.    //接收数据:         Byt ...