关于作者:
叶翠,哔哩哔哩技术专家;
马永志,哔哩哔哩高级运维工程师。
1. 背景
目前,降本增效是各大互联网公司的重要方向,IT成本占互联网公司成本的大部分。 如何有效降低成本? 如何促进各业务线的合作? 您如何平衡成本、质量和效率? 本文将介绍哔哩哔哩的IT成本管理和优化思想,并介绍哔哩哔哩通过FINOs的实施促进成本洞察、技术优化、运营优化、提高资源效率的经验。 2022年,随着B站DAU的稳步增长,花费的IT成本金额将低于21年同期,为公司节省数亿成本。 项目团队还获得了公司2022年度技术突出贡献奖。
2. 历史
IT成本管理主要用于预算管理,整个会计年度的预算编制在每个会计年度开始时完成。 在预算编制过程中,将业务目标转化为成本,结合技术优化方案,设定降本目标。 将业务增长目标与成本降低目标相结合,得出成本目标。
预算已经定好了,降本目标也定好了,那么按部就班地实施好吗? 暴露了几个问题:
在预算过程中,技术中台参与不够,业务直接提出预算,最终将资源需求告知技术中台。
预算内的需求成了白名单,采购流程直接通过,预算控制不够,容易造成浪费。
业务角度缺乏全局计费,业务对成本的感知,预算外优化动力不足,成本控制难以超出预期,甚至可能达不到预期。
其中最重要的一个问题就是最后一个问题,如果企业没有意识到资源效率和成本,那么就很难评估降本的收益,企业就没有足够的动力去降低成本。
3. 效率** - 感知资源利用率
既然已经发布了降低成本的目标,行动迫在眉睫。
一开始,我们延续了传统的思维方式,说到降本增效,第一反应就是各种资源的利用率。 与所有互联网公司的敏捷性类似,基于我们内部的平台和资源,我们整合了监控系统、资产管理系统、混合云HCM系统等基础数据,并利用数据平台的数据仓库能力,快速构建了资源数据仓库、数据仪表盘和告警机制。 根据历史数据,我们希望支持诸如估算业务资源和设定成本降低目标等活动。
根据B站的成本占比数据,重点关注带宽资源和计算资源的利用率。
带宽资源包括CDN带宽、云带宽和IDC带宽。
计算资源包括自有服务器、云主机和租用裸金属服务器。
目前,我们已经实现了不同厂商同类型资源不同指标的规范化,比如多云场景下不同云厂商指标的对齐。 对于 GPU 等资源,还将考虑训练和推理等不同场景的利用率。
为了更好地与其他团队对接,我们还为公司内部各类技术平台建立了效率模型,重点关注计算、存储等不同平台模型,以容器平台为例
关注以上指标可以有效评估容器平台的资源效率,支持平台管理资源水位线,衡量利用效率和技术优化空间。
经过一段时间的实践,我们还是发现,尽管拉着资源用户谈利用率,检查各部门闲置机器,甚至定期制作各种排行榜,但降本进度还是很慢。 技术中间平台与业务部门衔接困难、研发人员成本意识不足、降本产出无法量化等核心问题仍难以解决。
那段时间,行业内越来越多的企业开始注重降本增效,经过与其他企业相关从业者的多次交流和讨论,一个概念逐渐出现在我们面前——FinOps(财务运营)。
四、FINOPS的概念——确定行动步骤
FinOps 由 FinOps 基金会定义,是一种不断发展的云财务管理学科和文化实践,它使组织能够通过帮助工程、财务、技术和业务团队在数据驱动的支出决策上进行协作来获取最大的业务价值。
目前,云原生已经成为技术选型的共识,哔哩哔哩大部分内部平台和系统也都选择了云原生的路径。 哔哩哔哩的云原生建立在私有云和公有云的多云环境中,其中私有云的底层资源是租用的IDC和自有的服务器资产。 FinOps的整个框架不仅适用于公有云上的资源和成本管理,也适用于私有云,整体工作思路和逻辑是一样的。
从上面的 FinOps 框架中可以看出,FinOps 中涉及许多角色:
企业高管。 业务负责人。
工程和运营团队。
财务与采购。
FinOps 从业者。
作为 FinOps 从业者,您需要与业务、平台、运维、基础设施工程、财务和采购团队合作,以有效管理和优化 IT 成本。
FinOps 的生命周期分为三个阶段:
成本洞察。 成本优化。
成本工序。 经过对相关理论的反复研究,我们基于FINOPS的视角,为B站设定了降低成本的实验路径:
成本量化奠定了基础,并通过计费提高了业务对成本的感知。
技术成本降低和运营成本降低的“双轨”正在并行推进。
通过事前规划、事中控制、事后分析等多项措施,将成本指标纳入业务计划和业务采购的考量中,成本控制贯穿于资源全生命周期的管理中。
5. 引入财务视角——洞察技术成本
所有技术需求的开发都离不开其底层资源,各种IT资源的成本需要由财务部门纳入各业务线的ROI评估中。 但之前很长一段时间,业务线可能只有一个大概的预算数字,没有详细了解,自然不能当真。 没有定量分析的基础,就很难明确优化的目标和方向。
为了更好地衡量技术成本,将每个IT资源的采购成本换算成每个业务甚至每个活动,为了明确每个业务线的钱花在哪里,了解其IT成本和具体结构,我们首先在财务中引入两个概念。
1. 资本支出和运营支出
资本支出(Capital Expenditure):与预算现金流量相对应,是指实际支出的金额。
OPEX(运营费用):一次性硬件费用按会计科目折旧计算,带宽业务的非一次性支出与CAEX相同。
要将 CAPEX 转换为 OPEX,您需要计算总拥有成本 (TCO),并在资产的整个生命周期内分配购买硬件资产的一次性成本。 以某服务器为例,直接采购成本为CAPEX,TCO模型的计算方法是将采购成本分摊到未来每个月使用的成本,再将服务器每个月使用的其他资源的成本相加
1) 服务器 TCO-month 是服务器的每月 TCO 量。
2)折旧是单台机器按标准会计准则计算的月折旧金额。
3)NET是租用IDC中所有网络设备的月折旧。
4)IDC是指当月IDC发生的所有费用,包括机柜、电费、维护等。
5)LINE为IDC之间专线的月费。
6) F1 是单台服务器分配函数,用于计算单台服务器除折旧外的每月成本。
2. 定价
哔哩哔哩的业务建立在公有云和私有云之上,如果你想让每个企业都了解成本,你需要公有云和私有云来计费和拆分账户。 将 IT 资源与相应的成本联系起来。 如果技术中间平台想要拥有与公有云相同的计费、计费和对账能力,就需要统一设计和升级。 每个技术中间平台都需要设计SKU(即平台销售的产品),设定最佳策略,然后统计每个业务的资源使用情况,最后实现对内部业务的计费和计费。
SKU 旨在与公有云平台保持一致,以便进行成本比较。 还需要考虑公司的实际业务场景需求。 例如,容器平台的某个 CPU 产品的定价模型如下:
7)成本总计是容器平台SKU对应的自有服务器总成本,N是SKU对应的所有服务器的总成本。
8)价格CPU是CPU的价格。
9) 比率 CPU 是 CPU 成本因子,用于计算与服务器中 CPU 相关的成本。
10) CPU Total 是所有计算机对应的逻辑内核总数。
11)LoadFactor为利用率水印,参考值为近期SKU对应的物理服务器的合理水印。
12) (CPU total*loadfactor) 是理论上的总服务量。
对于其他技术中间平台的SKU,上述“单价=TCO理论总服务量对应的SKU”模型基本适用。 由于技术中间平台没有盈利压力,账单只是为了合理反映业务成本,推动业务提高资源使用效率,因此平台资源利用率的提高使得可供销售的资源更多,降低了单一资源的单价,业务也可以从成本中获益。
3. 计费
成本 = 单价×使用量 现在单价可用,您需要确定商家中每个 SKU 的数量。 我们将使用统计数据大致分为两类,共享和独占。 我们以上面容器平台的SKU为例:
13) t 表示资源的持续时间。
14) 使用共享是共享资源的使用统计方法,限制是服务应用容器的 CPU 资源限制。
15) Usage Excless为独享资源使用统计方法,capacity为服务所在池物理资源上限,loadfactor为资源利用率上限。
在实际计算中,即使A(独占类)和B(共享类)消耗的CPU相同,A的计算量也会高于B。 因为即使A所在的资源池中没有运行的服务,其独占特性也使得其他服务无法调度,造成浪费。 因此,在成本量化方面,按照资源池的理论最大使用量进行计费。 反之,共享资源池中的闲置节点可以调度其他服务,并按服务实际申请的容器限额收费。
通过区分独占和共享使用统计逻辑,更多的业务方选择费用更低的共享资源,服务器资源的所有权逐渐从业务端向技术中台转移,这使得中台承担了更多的容量管理工作。 最初,在公司的采购服务器流程中:估计业务目标 - >转换后的机器数量 - >满足采购需求 - > 中台交付资源技术中间平台不会过多参与整机数量的评估,中间平台最终会交付和托管企业需要购买多少台服务器的服务。
现在,整个过程已改进为:估算业务目标 - >中台的算力需求 - >评估全球算力缺口 - >提出采购需求。中台会收集各种业务需求,然后结合自身存量资源,提出与缺口算力相对应的采购需求,从而减少资源采购。
4. 账单
成本=单价*使用量“,可以从折旧(OPEX)的角度客观反映平台的闲置和超卖情况,促进技术中间平台和业务的协同优化,量化成本效益。
技术中间平台:角色转变为负责单价,通过提高资源利用率,升级技术架构,减少平台上底层资源的购买,多个商家的议价能力,降低各种SKU的单价,每个优化项目都可以明确地转化为成本效益,使技术中间平台的成本更具竞争力。
业务端:通过管理应用实例数量、存储容量、规模、使用时长以及共享和独享模式切换,减少SKU使用率。
双方携手并进,实现合作共赢,优化IT成本。
账单生成后,接下来的一大问题就是让企业主了解账单并审查成本,从而确定后续优化的方向。 账单确认流程由统一的计费系统实现,具体的成本分配规则、资源定价、计费流程均在系统中定义。 系统中还有针对各种资源的IT成本模型,可以量化资源和成本之间的关系,最终将每个IT成本统一的形式发送到业务端。
依托计费系统,公有云和私有云的成本可以统一显示在账单中,企业可以通过查看账单了解完整的IT成本结构。 每个月,在收到系统推送的账单后,各业务的技术负责人需要在系统中完成对账审核并确认账单。 如果您对账单详情有任何疑问,可以在系统中标记反馈,计费平台会更正账单。
其实这里沟通成本很多,商家刚收到账单的时候,很难看懂账单,需要有人在场"译本"一下。 业务是从业务的角度出发的,计费是从资源的角度出发的,各种资源的含义需要解释和解释一个业务或一个功能对应哪些资源。
对账最困难的方面是“资源归属业务”的准确性。 挑战来自于公司组织架构的各种调整,业务和资源的不断变化,以及历史包袱,部分历史资源归属不明确。
为确保归因的准确性,归因映射从服务树 (CMDB) 同步。 每个微服务应用程序都有自己的 appID(应用程序标识)。 计费系统使用 appid 对应用进行唯一定位,并将相关资源与项目、部门、负责人相关联。 基于CMDB APPID(服务应用粒度)=>项目=>组织架构=>业务关系,实现多维度的成本视角、应用视角、部门视角或业务视角。
服务树 (CMDB) 不支持的资源通过每个平台维护的归因映射进行映射,以多种方式实现成本归因。 例如,大数据平台基于工作区的所有权。
同时,成本数据的实时性也影响成本监控和优化分析的有效性。 每日或更实时的账单可以帮助企业快速识别和定位成本问题,及时调整项目投资。 提升实时性能也是后续计费系统的迭代方向。
综上所述,整个过程是:平台计费=>业务对账=>账单分析=>针对性优化=>资源对账,优化效果体现在下一个计费周期,这样一个闭环过程。 通过对账,将IT成本及时同步给FinOps中的各个利益相关者,强化成本责任体系,为IT成本优化决策提供数据支持。 同时,它反映了IT成本优化效果、预算执行等指标。
六、成本优化思路——实践经验总结
有了成本账单和性能,我们下一步应该向什么方向推进成本优化? 如何有效推动成本优化的实施?
首先,让我们分析成本数据。 B站的主营业务是点播、直播、电商、游戏等,作为**主营业务,B站每年的IT成本、带宽占比最大,其次是硬件,最后是公有云等IT服务成本。 如果要最大限度地发挥成本优化的收益,则需要对各种成本资源项进行优化投资。
从业务角度来看,不同的资源需求具有不同的成本模型。
从资源的角度来看,不同的计费方式有不同的优化思路。
带宽计费:一般来说,云厂商平均每天有95个月,也有95个月,即每5分钟一次,以一个周期的95个峰值为节点。 此外,还有包端口的带宽计费方式。 通过调峰可以优化成本。
机柜计费:月租为主,还有柜分离的计算方法,通过柜功率的适当配比优化成本。
服务器:一次性成本,通过维护增加以降低摊销成本。 通过提高 CPU 利用率来减少硬件采购。
辅料:通过配置修改,可以打破硬件瓶颈,提高硬件性能,节省成本。
云服务:计费基于使用情况,不同云服务的计费方式差异很大,弹性是最大的优势。 适用于对弹性要求较高的业务,如游戏。
1. 带宽成本优化
带宽成本是最大的成本,从使用角度可以分为按需带宽、直播带宽和Web带宽。 其中,Web带宽细分为动态带宽和静态带宽。
按需带宽:云点播服务使用的流带宽。 成本最高,优化投入最大。
直播带宽:实时流服务使用的流带宽。 成本仅次于按需带宽,优化方向与按需不同。
Web 动态带宽:动态接口使用的带宽CDN回源率为100%,无法缓存。
Web 静态带宽:* *js 和 apk 等静态文件使用的带宽,可以缓存。
(1)按需带宽成本模型
下面以点播带宽为例,点播带宽的代价模型如下:
点播带宽成本=平均单时间带宽×点播次数×带宽单价。
每个会话的平均带宽:它是用来衡量单个**的成本,这里的带宽是按95计费值计算的,所以它并不完全等于比特率,但它与比特率趋势相同。 如果码率较低,则单次带宽会更低,码率优化效果会体现在此指标中。 编码团队通过窄带高清转码系统等技术方案,优化了15%的带宽,**1。
点播视图数**这关系到业务发展,很难准确**,如果增长超出预期,整体IT成本将大幅增加,存在超出预算的风险。
带宽单价:云点播使用多种带宽资源,包括云厂商提供的按需带宽、自建CDN带宽、PCDN、MCDN等低成本带宽。 不同资源的单价不同,这些带宽的占比会影响云点播的整体单价。
(2)点播带宽优化
从以上简化的模型分析可以分析出,点播带宽的优化主要基于降低码率和单价,实际优化项目如下:
通过窄带高清编码系统,推出并扩大**1的覆盖范围,码率进一步降低。
基于机器学习的优化转码**,提升优化码率覆盖率。
优化 *** 的清晰度策略。
提高低成本带宽PCDN和MCDN的比例,降低带宽的平均单价。
自建CDN专线互联互通,降低回源成本。
内容分层:冷内容被调度到边缘资源,减少回源带宽。
调峰,与其他业务带宽共峰复用。
除了点播带宽外,上述直播、网络动态、网络静态都同时优化,思路也是从成本模型数据分析入手,计算优化前的成本,优化后的收益验证。
2. 服务器成本优化
服务器硬件优化不同于带宽,主要用利用率来衡量优化效果,用TCO或OPEX来计算和评估技术改造优化方案。
(1) 服务器硬件迭代
英特尔 CPU 从 Skylake = > CascadeLake = > iceLake = >Sapphire Rapids 进行了改进,每一代都在功耗和单核性能上增加。
来自罗马的 AMD CPU = > 米兰 = > 热那亚,每一代都有改进的工艺和性能。
GPU 的范围从 T4、V100、A10、A100 到 A800,工艺和性能也在发生变化。
网络的架构范围也从 10Gbps 到 25Gbps,到 100Gbps 甚至 200G。
硬件迭代速度快,每次硬件迭代也会刷新单位算力成本的下限。 由于新硬件具有更多的成本优势,因此需要引导业务尽可能地配合硬件升级,每一代硬件的迭代成本优化效果非常显著。
同时,硬件功耗的增长也很快,从3kw、4kw、8kw到10kw用于机柜,机柜和电源成本优化的好处也将非常可观。 在IDC的布局和选择上,可以选择更便宜的资源,将接入POP与IDC解耦,以达到最优的性能和成本。
(2) 服务器虚拟化和混合化
基于K8S构建的私有云容器平台是服务器成本优化的主力军。 该平台还发表了许多文章来分享混合动力和VPA技术。 我们来看一下整体的优化思路,还记得前面提到的性能模型吗? 容器平台的优化基于基于资源的性能模型。
增加容器资源总量:尽可能容器化所有服务器资源,让更多的业务可以建立在容器上,不仅业务应用,其他技术中端应用也要尽可能地接入容器平台。
提高池化率(可出售的资源量总资源):提高池化率的主要目的是在有限的资源上尽可能多地增加可以出售的资源量,以便通过统一容器调度更多的资源。
提高分配率(已售资源量和可售资源量):可以合并不同分配率的资源池,减少资源碎片化和冗余。
提高利用率(资源使用量和销售资源量):利用率不足会造成资源的极度浪费,通过建立应用画像,采用超卖、VPA、HPA等有效手段,可以大大提高资源利用率。
除了上述手段外,混合部分也是提高利用率的好工具。 利用不同业务的潮汐效应,在分时中复用资源。 作为计算能力密集型业务,转码率先尝试混合部门。 目前B站有线下线下混合、线下混搭,还有相关的技术分享文章。
目前,正在推广的主要是AI场景中的混合部门,也就是推广搜索业务的混合部门。 AI服务不仅计算密集型,而且内存访问带宽非常高,会碰到硬件瓶颈,造成雪崩效应。
3. 公有云成本优化
与服务器资源不同,公有云用于弹性保障、降低时延和海外部署。 公有云的成本优化是在支持业务正常发展的前提下,最大限度地利用公有云资源。
根据资源类型及其对应的计费方式,公有云资源大致可分为网络流量、云服务器等IaaS资源、云SaaS服务等。需要使用不同的资源来处理这个问题。
(1)根据业务特点调整资源
云项目根据业务特点产生不同波形的网络流量,云厂商提供的网络流量产品也根据其特点有不同的计费方式。 需要同时考虑两者之间的关系,以实现最优的网络成本。
网络产品常见的计费方式包括按带宽计费和按流量计费
按带宽付费:适用于不同时间段业务峰值流量均匀分布,流量波动明显的场景。
按流量付费:适用于业务流量波动较大、出现突发的场景。
除了计费模式之外,还有不同类型的网络线路,如动态BGP、静态BGP、三大运营商的单线、公网、混合云专线等,会让成本差异很大,还需要根据业务架构方案和成本模式进行选择。
对于带宽和运营商比例稳定,技术方案可以覆盖单点故障的项目,首选三大运营商的单线。
BGP是带宽波动大、三大运营商无法覆盖、海外部署或流量小的项目首选。
但是,跨地域带宽高、回源量大的项目,应考虑使用混合云专线。
除此之外,还可以考虑其他策略,例如将来自多个项目的网络流量放入共享带宽包中,这样可以实现带宽共峰收益。
(2)前期策划和定期发布
IaaS 资源主要根据实例的持续时间计费*,因此您可以在应用程序阶段控制新资源的数量。 大型项目在申请时需要对容量、实例组合和支付策略进行明确的规划。
申请人提交资源需求后,FinOps各方将根据业务特点、成本等考虑因素,确定最佳业务、区域、资源模型等事项。
(3)自研或公有云
一般来说,公有云中的SaaS服务具有快速部署、易维护的优势,但比自建甚至云端的IaaS产品更昂贵。
同类自研产品在公司私有云上投入了大量的前期成本,并且拥有相对成熟的技术积累和专业的运维团队,经过一定程度的标准化后,可以满足同类产品在云上的功能需求。 对于无法替代或转化的低回报的自研产品,将通过调整使用场景和计费方式或寻找更好的同类产品进行替换。
随着哔哩哔哩自建机房节点和传输网络建设的完善,未来更多的云项目可以复用基础业务和基础设施,从而实现恒定私有云+公有云的混合部署,实现此类服务的混合云解决方案。 基于上述实施措施的实践,哔哩哔哩自主研发的HTTPDNS域名解析、DSA动态加速等服务,节省了一半以上的成本。
4. 总结
如下图所示,除了带宽、服务器、公有云之外,IT成本还有很多其他的资源成本,所有的成本都需要分析和优化。 在分析和推进的过程中,形成了一套完整的成本模型。 随着业务的不断增长,成本模型和优化方案也在不断增长。
7. 运营优化——多方沟通协作
运营优化围绕两个方面进行:
成本运营,依托预算、成本账单和成本模型,及时与各方同步成本情况和问题。
资源运营,依托资源效率的最佳数据,及时发现和预防资源浪费。
1.成本运算
预算控制:为了将成本降低到极致,达到最佳成本,预算控制需要更加严格。 执行采购的预算实际时间可能比预算计划时间晚了比较长,内部和外部都有变化,需要根据变化及时调整金额,以尽量减少金额。
决算分析:每月根据计费数据进行成本分析,重点沟通超预算或其他有改进空间的成本项目,沟通范围为业务研发负责人、FinOps基础平台、财务、采购等角色负责人。 对超出预算的风险进行预警,并一起讨论改进措施和策略。
计费分析:协助业务理解账单,从业务角度触发账单,分析单项DAU成本,为业务成本降低提供指标和决策依据。
成本:针对新的技术改造方案或项目,构建成本模型,确定成本改进的最优方案。
成本决策:构建成本模型并不难,但难点在于如何在追求更好的成本的同时兼顾稳定性和效率。 成本优化通常伴随着技术升级和技术改造,大量的人力投入会影响原计划的迭代效率,系统升级往往会带来不稳定。 追求使用廉价资源也会影响系统的质量,系统设计需要兼顾容错和备份策略。 一般来说,如果没有强有力的管理来做出成本决策,降本增效的效果会大打折扣。
2. 资源运营
公有云主机:结合利用率监控、混合云平台和**业务账单数据,对资源效率进行监控,发现不合理的冗余容量和不再使用的资源,及时推进缩减、降级等操作。
公有云服务:在资源检查过程中,如果发现无人认领或不完整的资源,如仍在计费的闲置、未挂载的云硬盘、历史较长的快照等,我们会定期公告和清除。
IDC服务器:对于利用率极低的服务器,我们将推动将容器纳入资源池,并尽可能容器化。
其他资源:各项服务的合理使用也需要操作学生注意,比如超长短信会拆分为多个计费,合理设计的短信模板可以节省大量成本。
总结与展望
通过FINOPS的实践,哔哩哔哩实现了成本洞察=>成本优化=>运营优化的完整闭环。 通过性能数据、成本计费、持续优化、运营等关键行动,在不增加IT成本的情况下,实现了业务增长,为公司节省了数亿成本。 未来,FinOps将继续向实时数据驱动的决策和成本方向探索**,追求更极致的IT成本,提高毛利率。
引用
1]《finops foundation - what is finops?》:
2]《从量化到优化,细解有赞线下数据降本之路》:
作者丨崔烨, 马 永志**丨***哔哩哔哩科技 (ID: Bilibili-TC) DBAPLUS社区欢迎技术人员投稿,投稿邮箱editor@dbapluscn