你好,我是翁一磊。
上节课,我们介绍了现在非常热门的可观测性标准和规范 OpenTelemetry,你可以通过 OpenTelemetry 来构建针对你的系统和应用的可观测性。然而除了 OpenTelemetry,也有很多其他的开源工具、各种商业软件和产品。所以,在你撸起袖子准备开始干活之前,我们需要先讨论一下下面这个问题:建立可观测性,是应该自己搭建,还是直接购买商业产品呢?
首先我得承认,我自己就是一个可观测性软件供应商的职员。这样一来,你可能会觉得我一定会推荐购买商业产品。不过,公正性这点你可以放心,不管是哪一种方式,我都会从成本和收益的角度来给你介绍。最后的选择权,毕竟还是在你手上的。
当我们考虑自建还是采购可观测平台的时候,你的第一反应可能是觉得自建更划算,因为开源软件都是免费的,而商业软件要满足企业的需求,基本上都是付费的,而且是一笔不小的投资。这是一个很明显的误区。实际上,我们应该考虑的是整体的拥有总成本(Total Cost of Ownership),也就是 TCO。
TCO 可以定义为一个实体(比如说一个企业)在适当条件下和时间范围内,使用和维护商品或服务所发生的所有费用。这个费用不仅仅是购买商品或服务的费用,还包括了下面很多方面。
有成本,我们必然希望它伴随着收益。建立可观测性的回报,主要是在系统可靠性的提升上。可观测性可以为最终用户带来更好的体验和服务,满足业务的需求,甚至是驱动业务的发展。
同时,就像我在前面介绍的,在云原生的时代,随着系统复杂性的大大提高,一个完全不会出问题的系统是不存在的,那在有问题或者故障的时候,能够快速地找到问题的根本原因,缩短故障平均恢复时间(MTTR)就变得非常重要了。而这些,都是建立可观测性的价值收益。
接下来我们就来看一看,自建和购买商业产品分别存在哪些成本和收益。
这里的自建,指的不是从零到一开始自研一整套可观测平台(这种方式的时间、人力等成本相对非常高),而是基于开源的产品进行构建和二次开发,这应该也是更多企业能够接受和采取的方式。
我在第 3 讲中介绍过,可观测性不仅仅是监控,所以自建可观测平台需要考虑监控、日志以及链路追踪。同时,除了计算存储的资源,还需要根据数据量的规模,考虑消息中间件、缓存、数据库等多种组件所需要的资源。
例如,这里是一个日志分析平台 ELK 的典型架构(ELK 是三个开源项目的首字母缩写,分别是:Elasticsearch、Logstash 和 Kibana):
如果你想通过开源软件自建可观测性,可能需要下面这些组件。
这时候,就需要考虑像资源、人力还有一些隐性成本了。
资源成本
人力的成本
隐性的成本
通常来说,基于开源软件自建可观测平台,不需要等待比较长的采购周期。完成选型之后,可以快速开始构建。在互联网快速发展的今天,这是不小的优势。有技术能力的企业可以快速上手、构建原型,并通过不断打磨逐渐完善平台。
而且,比较成熟的开源软件往往有强大的技术社区做支撑。有来自世界各地成百上千的程序员共同维护一套软件,可以保持活力,让软件不断得到更新,既有问题较快得到修复。
另一方面,自己构建软件可以建立企业内部的专业知识。每个企业都会有自己的需求,继而会需要将这些需求转化成软件的功能。自建这种方式让企业内部的利益相关者的沟通、协调更加顺畅,能更好地为业务需求服务。
企业在采购第三方的产品和服务时,一般会有下面这些考虑。
这些都是购买商业软件需要考虑的成本因素。购买商业产品本身的流程一般比较漫长。经过测试、招投标等一系列过程之后,如果产品满足不了我们的使用需求,或是因为各种原因需要推倒重来,那整个过程消耗的财务、时间以及人力成本会是巨大的。
另一方面,很多商业软件都是按照许可证的方式来收费的。如果你的公司处在一个快速成长的阶段,你就需要考虑公司在发展壮大之后,继续使用商业软件的额外开销了。
如果你购买和使用的是 SaaS 软件,可以减少自建平台所花费的计算、存储等各方面资源的投资、以及维护的费用。即使购买的平台需要安装部署,一般也都会由厂商来负责,完成初始化配置之后,就可以开始使用了。更重要的是,原本需要做开源软件二次开发的工程师就可以把时间精力放在业务保障上,他们不再需要彻底研究和掌握开源软件的开发与维护。
而从另一方面来说,选购合适的商业产品,也是把专业的事情交给专业的人来做。你可能获得一个拥有专业知识的合作伙伴,他们在可观测领域有着自己的积累,能够为你提供专业的服务,解决各种问题,如果换做自己来研究,可能需要花费数年才能达到这个程度。
好了,这节课就讲到这里。
这节课,我们从成本和收益的角度,分析了自建和购买这两种方式。自建考虑的更多是资源成本和时间成本(转化为人员的成本),购买考虑的更多的是购买的费用。然而,这两种方式的隐性成本往往才是最容易被忽略的地方。
换个角度讲,自建还是购买可观测平台其实并不是一个非黑即白的问题。即使购买了一个商业软件,也不一定意味着你的企业就完全不需要可观测性团队了。实际上,可观测性团队对于满足企业业务的可观测性需求是必不可少的。
下节课,我们会介绍可观测对于 DevOps、系统可靠性(SRE)的帮助,了解为了高效实施可观测性,团队应该如何展开合作。开发也需要为可观测性负责,与运维团队一起保障服务的质量水平。
在这节课的最后,留给你一道思考题。
如果你的公司需要构建可观测平台,你们会选择哪种方式?你是如何考虑的?如果已经搭建了可观测平台,效果如何,你有什么样的心得和体会?
欢迎你在留言区和我交流讨论,我们下节课见!
© 2019 - 2023 Liangliang Lee. Powered by gin and hexo-theme-book.