可观测性平台,企业选择自建还是购买?3000字帮你捋清思路
我在接触企业做咨询的时候,问的频率最高的是关于搭建可观测性平台的困惑,在数字化程度高的业务系统里面,可观测性平台确实能够极高的提高运维效率,那么企业最感兴趣的是:建立可观测性,是应该自己搭建还是直接购买商业产品?
一、成本 v.s. 收益
当考虑自建还是采购可观测平台时,普遍会认为自建更划算——因为开源软件是免费的,而商业软件通常需要付费。这是一个片面的说法,实际上,我们应该考虑的是总体拥有成本(Total Cost of Ownership,TCO)。
Total Cost of Ownership(TCO)是指一个产品或服务的全部拥有成本,包括购买价、使用成本、维护费用、升级成本、以及最终处理费用等。通俗来说,TCO 是指购买一个东西的总成本,而不仅仅是购买它时的价格。这个概念常常用于企业采购决策,因为企业在采购产品或服务时,需要考虑到产品或服务的全部拥有成本,而不仅仅是它的购买价,这样才能更好地做出决策。
举个例子,假设你正在考虑购买一辆汽车。如果只考虑购买时的价格,可能会选择价格较低的车型。但是,如果你考虑到汽车的使用成本、维护费用、油耗、保险费等,那么价格可能就不是唯一的考虑因素了。因此,TCO 能够帮助你更全面地了解一个产品或服务的全部成本,才能做出更明智的决策。
那转化成现在讨论的自建还是采购这个问题上,企业不仅包括考虑购买商品或服务的费用,还要考虑以下这些成本的付出:
- 资源成本:无论是自建还是购买商业产品,都需要考虑安装和部署所需的计算、存储等资源成本。如果使用SaaS产品,还需要考虑将遥测数据传输到SaaS端所需的流量成本。
- 人力成本:自己搭建和购买商业产品的主要区别在于人力成本。自己搭建需要花时间来安装、设置和根据需要进行二次开发,而购买商业产品需要进行相应的培训。这些时间都会转化为员工的工资,也是企业的重要开支之一。
- 拆除或最终处置成本:在某些情况下,无论是自建还是购买,如果不再使用相关工具或产品,都不能简单地扔掉。我们需要考虑如何替换它,是否需要进行迁移工作,这也会带来一些成本。
成本总是伴随着预期收益的,建立可观测性主要是为了提升系统的可靠性。可观测性可以让最终用户获得更好的体验和服务,满足业务需求,甚至推动业务发展。
同时,正如我之前提到的,在云原生时代,随着系统复杂性的增加,不存在完全没有问题的系统。因此,在出现问题或故障时,快速找到问题的根本原因,缩短故障平均恢复时间(MTTR)变得非常重要。这些都是建立可观测性的价值收益。接下来,我们将看一下自建和购买商业产品分别涉及哪些成本和收益。
二、自建可观测性平台
这里的自建不是指从零开始自己研发一整套可观测平台(这种方式的时间、人力成本非常高),而是基于开源产品进行构建和二次开发,这也是更多企业能够接受和采用的方式。可观测性不仅仅是监控,自建可观测平台还需要考虑监控、日志和链路追踪。此外,除了计算和存储资源,还需要根据数据量的规模考虑消息中间件、缓存、数据库等多种组件所需的资源。例如,以下是日志分析平台ELK的典型架构(ELK是Elasticsearch、Logstash和Kibana三个开源项目的首字母缩写):
如果你想通过开源软件自建可观测性,可能需要以下组件:
- 监控:Prometheus+Grafana。
- 日志:Logstash+Kibana。
- 链路追踪:SkyWalking。
- 数据存储:Elasticsearch集群。
- 消息队列:Kafka集群。
- 数据库:MySQL集群。
- 内存数据库:Redis集群。
这时,需要考虑资源、人力和一些隐性成本。
1. 资源成本
- 要满足大数据量的情况,几台1核2G的虚拟机很难解决问题。特别是在生产环境中,如果数据量大,Elasticsearch的计算节点需要高配置,通常需要两个16C 64GB的主机节点和一个控制节点。
- 日志的原始数据到后端存储,虽然存在一定的压缩,但实际容量还需要考虑索引、两份数据副本等因素占据的存储空间。
- 如果使用公有云,还需要考虑各个计算节点的存储成本。此外,自建数据中心还涉及服务器成本、机房费用、后续扩容成本等。
- 灾备资源成本,可观测性平台被称为“Lastdance service”,它需要比其他服务的可用性更高,所以在灾备方案上的成本远高于普通服务。
2. 人力成本
维护自建工具需要2~3人的团队进行安装部署、功能开发、问题排查和处理、性能调优等工作。此外,二次开发也需要人力成本。许多企业没有二次开发的能力,即使进行二次开发,也可能由于主导开发的技术负责人或相关人员离职而导致项目难以继续。由于可观测性需要不断迭代,如果人手不足,就无法跟上技术发展,整个团队的技术应用也会受到限制。
随着业务增长,维护工具的团队人数也会随之增长,从开始的2~3人,到几十人甚至上百人。作者曾在AWS Cloudwatch工作过,当时核心研发人数就已过百人。
另外,随着业务增长,所需的人才门槛也会提高,不仅对大型分布式系统设计、开发和运维有极高的要求,同时还需要了解网络通信、操作系统、网络安全,以及数据科学。为此Google针对这类复合性人才制定了一个岗位 – SRE(站点可靠性工程师),根据统计,这类人才的工程师平均薪资大约在100万人民币/年。而且这类人才通常集中在头部的互联网大厂,招聘难度远比招传统研发高。
3. 隐性成本
由于这种将开源软件组合起来的方案只能称为工具的组合,而不是完整的可观测平台(它并没有完全解决数据孤岛问题)。当遇到业务问题时,仍然需要访问不同的工具进行问题分析,并需要与不同团队进行沟通,这会花费很多时间,尤其是在线上救火的时候,服务宕机5分钟和宕机5小时,带来的损失,不仅仅是经济上的损失,很有可能就会失去客户信任,持续流失客户。
持续维护也需要成本。技术栈中的第三方组件必须及时更新和修补,同时还需要考虑自建组件的安全性。假如维护团队出现人员流失或者变更,其交接成本比重新搭建一套新的系统还要高,因为开源组件每天都会迭代更新,假如维护团队没有开源社区里的核心成员,基本上1年之后,系统升级会成为整个团队一整年的KPI。
自建的收益:通常来说,很考验企业的技术能力,企业的技术实力过硬可以快速上手、构建原型,并通过不断完善逐渐完善平台。另外,成熟的开源软件通常有强大的技术社区支持。成百上千的程序员来自世界各地,共同维护一套软件,保持其活力并使其不断更新和修复问题。此外,自建软件可以建立企业内部的专业知识。每个企业都有自己的需求,这些需求需要转化为软件功能。自建平台让企业内部利益相关者的沟通和协调更加顺畅,能更好地服务于业务需求。
三、使用商业产品构建可观测性
购买的成本:企业在购买第三方产品和服务时,通常会考虑以下因素:
- 一次性花费这么多钱,这个产品对业务有什么价值?
- 前期Proof of Concept(PoC)看起来很好,但实际使用会不会完全不同?
- 供应商是否能够满足新的业务需求,还是必须等待他们更新?如何确保购买的产品能够持续满足不断变化的需求?
- 是否能够避免供应商锁定?如果因某种原因需要选择新产品,需要多少时间和精力进行迁移和切换?
这些都是购买商业软件需要考虑的成本因素。购买商业产品的流程通常比较漫长。经过测试、招投标等一系列过程后,如果产品无法满足客户的使用需求,或者因各种原因需要重新开始,那么整个过程所消耗的财务、时间和人力成本将是巨大的。另一方面,许多商业软件按许可证收费。如果公司处于快速成长阶段,需要考虑公司在发展壮大后继续使用商业软件的额外开销。
购买的收益:如果购买和使用的是SaaS软件,可以减少自建平台所需的计算、存储等资源投资和维护成本。即使购买的平台需要安装部署,通常也由供应商负责,完成初始配置后,即可开始使用。更重要的是,原本需要进行开源软件二次开发的工程师可以将时间和精力投入到业务保障上,不再需要全面研究和掌握开源软件的开发和维护。另一方面,选择合适的商业产品也意味着将专业事务交给专业人士处理。你可能会获得一个拥有专业知识的合作伙伴,在可观测性领域有自己的积累,能够为你提供专业服务,解决各种问题。如果自己去研究,可能需要数年才能达到这个水平。
相比之下,购买商业产品需要考虑的成本更少,因为这些产品通常都是一站式解决方案,可以满足企业所有的可观测性需求。此外,商业产品通常会提供更好的技术支持和服务,保证系统的稳定性和可靠性。综上所述,企业在选择自建还是购买可观测性平台时,需要综合考虑各种成本和收益,做出明智的决策。
作者:Nicholas,InsightMon CTO
本文由@Nicholas 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
- 目前还没评论,等你发挥!