
14
|
第
1
章
此,可观测性需要发现人与技术之间的交互,以理解这些复杂系统如何一起工作。
如果你接受这个定义,那么看看接下来这些问题:
•
如何收集数据并将其组合起来进行分析?
•
处理这些数据的技术要求是什么?
•
要从这些数据中获益,团队的哪些能力是必要的?
我们将在本书后面进一步探讨这些问题。现在讨论将可观测性应用于软件时,一些额外
的上下文内容。
软件系统中的可观测性与控制论中的原本定义有许多共同之处。然而,它不需要那么数
学范,而且更实用。从某种程度上来说,相比于成熟的机械工程,软件工程本身是一门
更年轻、发展更快的学科。软件系统的开发并不需要物理公式计算。在某种程度上,缺
乏严谨性反而是软件行业没有更早引入可观测性所产生的一个历史伤疤。
过去,当工程师试图理解如何弥合在本地测试中编码的理论运行状况和正式环境中大
规模运行代码时所产生的影响之间的差距时,我们没有去寻找一个新的术语、定义或功
能来描述我们是如何做到这一点的。当前管理系统和团队的环境与方式导致我们将实践
从传统概念(如监控)中演进出来,而这些传统概念其实已经不再有效。作为一个行业,
我们需要超越工具和术语方面的实际差距,以克服停机和缺乏更主动的解决方案所带来
的痛苦。
可观测性是解决这个差距的方法论。受各种技术和社会因素影响,复杂的生产软件系统
可能变得一团糟。因此,需要社会和技术两方面的解决方案来把我们从这个困境中解救
出来。可观测性本身并不是所有软件工程问题的完整解决方案。但它确实帮助你清楚地
看到在软件的所有阴暗角落发生了什么,否则你通常会在黑暗中磕磕绊绊 ...