什么是 SRE 及其为什么如此重要?

已完成

最好的起点通常是一开始。 首先,一起来回答一个基本问题:“什么是网站可靠性工程?” 尽管此问题有很多答案广为流传,其中包括造出这个词的人(Google 的 Ben Treynor Sloss)经常引用的一种定义,但我们可以提供的最实用答案如下:

站点可靠性工程是一门工程专业,致力于持续帮助组织实现系统、服务和产品的可靠性级别。

稍后,我们可能会向这个概念中加入其他一些定义,这是个起点。 此定义有三个关键部分需要进行剖析,然后我们便能正确回答“为什么它如此重要?” 这个问题的答案。

可靠性

最核心的一词是“可靠性”,这在“SRE”名称中间也有所体现。 定义中说的不是“适当性能级别”、“适当效率级别”、“适当稳定性级别”或“达到适当收入级别”, 而是“适当可靠性级别”。 为什么?

接下来就进行快速演示。 下面是一张屏幕截图。 你认为它要说明什么? 在你有想法或放弃之前,尽量不要罢手去做别的事。 注意:如果难以在下图中检测到很多细节也没关系,它将在浏览器中完美呈现。

A blank screenshot representing a PHP app that fails to load.

上图是 PHP 应用程序(没有添加其他调试支持)发生故障时的屏幕截图。 对于 Java 应用程序,可能会看到如下内容:

A screenshot of failed java app with HTTPS Status 500 error.

为什么要举这些示例? 因为其中每个示例都代表,可能需要企业耗费大量时间、精力和资源才能创建的应用程序。 不过,如果应用程序没有正常运行(即如果它在客户需要访问它时无法运行或如果它不可靠),这对任何人都没有任何好处,尤其是对企业。 其实,缺少可靠性可能会(在信誉、经济、合同、士气等方面)对企业造成实际危害。

就是因为它的重要性,SRE 才选择可靠性作为重点关注的基本属性(可能是服务、系统或产品的基本属性)。 可靠性可以包括许多事项(我们将在后面讨论),但让我们继续讨论定义的第二个关键部分。

适当可靠性级别

你可能在第一次阅读定义时并未注意到它,但这是需要强调的另一个重要的词:

站点可靠性工程是一门工程专业,致力于持续帮助组织实现系统、服务和产品的可靠性级别。

为什么这个词如此重要?

据 SRE 领域的重要观察,必须 100% 可靠的系统和服务寥寥无几。 值得注意的例外是,航空、医疗设备等生死攸关的行业。

实际上,在极少数情况下,这样做也是可取的。 提高可靠性时,所需的精力和资源(以及随之而来的成本)急剧上升。 也就是说,追求不必要的可靠性就是浪费时间和金钱。 建议实现系统、服务和产品的适当可靠性级别。

可靠性级别必须与业务需求保持一致,且切实可行。 例如,我们的客户可能通过不是 100% 可靠的网络连接到你(假设 90% 的时间都是)。 花费精力和金钱来确保服务 95% 的可靠性显然浪费时间和金钱。 建议实现系统、服务和产品的适当可靠性级别。

SRE 又将这种实用主义向前推进了一步。 如果现在能考虑确定适当可靠性级别,那么在成功达到或超过此级别时,该做些什么? 同样,如果没有实现此目的该怎么办? 之后我们将在本模块中回答这些问题。

持续实现

我们在继续之前需要重点强调的定义中的最后一个词是“持续”。 “持续”是指人员的角色。 创建可持续的操作实践至关重要。 人员生成可靠的系统、服务和产品。 如果我们不采取措施确保我们的工作是可持续的。 如果我们每天凌晨 3:00 把员工叫醒交付他们工作,不给他们和家人在一起的时间。 如果他们没有机会花时间照顾自己。 那么,他们就不可能构建可靠的系统。 SRE 认为我们非常有必要实施一种长期可持续的操作实践,以便我们的员工能够在工作中发挥最大才能。

知识检查

1.

SRE 主要关注服务、系统或产品的哪个属性?

2.

对于几乎所有的服务、系统和产品,SRE 力求达到怎样的可靠性级别?