通用 - 常见问题
日志和 traces 有什么区别?
日志仅限于单个应用程序及与其相关的事件。例如,如果用户登录到托管在微服务平台上的网站并在该网站上进行购买,则可能有多个应用程序发出与该用户相关的日志:
- 前端 Web 服务器
- 认证服务
- 库存服务
- 支付处理后端
- 向用户发送收据的发件邮件服务
这些服务中的每一个都可能记录有关该用户的信息,而这些数据都是有价值的。然而,traces 将呈现用户在该单个事务中跨所有这些离散组件的完整交互的单一、连贯视图。
通过这种方式,trace 是来自多个服务的事件集合,旨在显示单个活动的统一视图,而日志则绑定到创建它们的应用程序的上下文。
哪些信号类型是不可变的?
所有三种基本信号类型(metrics、日志 和 traces)都是不可变的,尽管某些实现对此的保证程度不同。例如,日志的不可变性在许多治理框架中是严格要求——存在许多工具来确保这一点。Metrics 和 traces 同样始终应该是不可变的。
这引出了处理"坏数据"或不准确数据的问题。使用 AWS 可观测性服务,没有删除错误发出的 metrics 或 traces 的功能。CloudWatch Logs 确实允许删除整个日志流,但您无法追溯更改已收集的数据。这是设计使然,也是确保以最大程度的谨慎对待客户数据的重要特性。
为什么不可变性对可观测性很重要?
不可变性对可观测性至关重要!如果过去的数据可以被修改,那么您将丢失关键错误或行为异常值,这些信息会在您演进系统和运营时为您的选择提供参考。例如,显示较大时间间隔的 metric 数据点不仅仅表示缺乏数据收集,它可能指示基础设施中更大的问题。同样,对于"空"数据——即使是空的时间序列也是有价值的。
从治理角度来看,事后更改应用程序日志或追踪违反了不可否认性原则,即您将无法信任系统中的数据与源应用程序原始意图完全一致。
什么是爆炸半径?
变更的爆炸半径是它在您的环境中可能造成的潜在损害。例如,如果您进行数据库 schema 更改,则潜在风险可能包括数据库中的数据以及所有依赖它的应用程序。
一般而言,减小变更的爆炸半径是最佳实践,在可行的情况下,始终建议将变更拆分为更小、更安全和可逆的部分。
什么是"云优先"方法?
云优先策略是指组织将全部或大部分基础设施迁移到云计算平台。他们不使用服务器等物理资源,而是将资源托管在云中。
对于习惯了共置硬件的人来说,这可能看起来很激进。然而,反过来也是如此。采用云优先思维的开发人员认为将服务器绑定到物理位置是不可思议的。云优先团队不会将其服务器视为离散的硬件或甚至虚拟服务器。相反,他们将其视为实现业务功能的软件。
云优先之于 2020 年代,就像移动优先之于 2010 年代,虚拟化之于 2000 年代初。
什么是技术债务?
取自 Wikipedia:
在软件开发中,技术债务(也称为设计债务或代码债务)是指现在选择一个简单(有限)的解决方案而不是使用需要更长时间的更好方法所产生的额外返工的隐含成本。
基本上,随着时间的推移,当您在工作负载中添加更多内容而不删除遗留代码、应用程序或人工流程时,您会积累债务。技术债务会降低您的绝对生产力。
例如,如果您必须花费 10% 的时间对一个为您的业务提供很少或没有直接价值的遗留系统进行维护,那么这 10% 就是您支付的成本。减少技术债务等于增加创建新产品增加价值的有效时间。
什么是关注点分离
在可观测性解决方案的背景下,关注点分离意味着将工作负载或应用程序的功能区域划分为独立管理的离散组件。每个组件处理一个单独的关注点(如日志结构和日志的发出)。控制组件的配置而不修改底层代码意味着开发人员可以专注于他们的关注点(应用程序功能和特性开发),而 DevOps 角色可以专注于优化系统性能和故障排除。
关注点分离是计算机科学中的核心概念。
什 么是卓越运营?
卓越运营是与运行工作负载相一致的最佳实践的执行。AWS 有一个专门致力于良好架构的完整框架。请参阅此页面开始了解卓越运营。