聂同学

一个程序员和架构师的实践与思考

实现质量要求的三个考虑方向

性能、可用性、可伸缩、可扩展……如何达成这些质量要求,是随时要考虑的问题。 有没有什么“普遍的”考虑方法呢?

对各个质量要求,具体的考虑方法是各不相同的,但总结起来思考方向一般有几个:1.

正向

顺着问题发生的因果方向考虑。

列出可能导致问题发生的因素,建立问题场景的模型,研究因素与结果的关系,按优先级评估和排除这些因素。比如对于性能质量风险:对典型请求建模,列出处理请求的步骤,考察它们可能对总体性能的影响,排除可能的瓶颈。

反向

将因果关系反过来。

我们从结果出发,基于问题已经发生。考虑如何才能回溯问题的原因并排除。还以性能为例。如果发现系统响应缓慢,我们可以有些什么手段找到缓慢环节,证实它是缓慢的根源?从这个方向考虑,通常会发现要求系统中有足够多的诊断支持,比如日志、现场收集保护、快照分析等等。

值得提醒的是,问题发生有至少两个场景,都是可以利用的:

  1. 测试,制造问题的发生。
  2. 生产中发现已发生的问题。2

横向

或者说无向。指的是不按因果方向考虑。比如使用“模式”——根据系统特点,列出可能提高性能的模式,看看成本,能用上的都用上吧。这种方法也确实有用。


  1. 本文以性能为例,但方法可以推广到其他质量要求。好吧,貌似也可以推广到其他任何事。

  2. 当然先要救命和减少问题影响。但不属于本文的范围。

方法论, 架构, 质量

分享 -