定义服务

定义服务

服务是一个离散的功能,可提供价值,并且由一个团队完全拥有。

共同的理解

在Pagerduty,我们将服务视为提供价值且完全由团队拥有的离散功能。我们的定义是特定的,因为它是指由不同的服务组成的基础架构,这些服务被编写为单独的代码,但它也适用于我们整体代码库甚至外部工具的一部分。考虑到这种普遍性,我们发现该定义与您当前的建筑模型无关,并鼓励其使用。

对于您的组织而言,关键的第一步是对给定服务的边界有共同的了解,并弄清楚其主要利益相关者是谁。如果有多个团队贡献,维护和支持给定的服务,那么了解边界和利益相关者就变得更加重要。

采取以下步骤来帮助创建共享的理解:

  1. 定义将拥有服务的团队。首先考虑谁负责您定义的服务。该服务应由团队全资拥有,该服务将通过旋转旋转来支持它。如果多个团队对服务负责,则最好将该服务分为单独的服务(如果可能的话)。一些组织称这种“服务有丝分裂”称为两个单独的单元格,每个单元格与前整个细胞非常相似。有几种方法可以决定如何将服务分开,例如,根据他们管理的团队规模或代码量对其进行分配。您可以阅读更多有关我们如何在Pagerduty做到这一点。

  2. 设置此服务的通话旋转。确保团队中的人员负责确保生产服务的服务。创建可旋转个人和备用响应者的定期节奏的呼叫时间表,以及包括升级触点的政策。

  3. 确保团队的尺寸正确。服务应足够详细地设置,以便该团队的成员能够快速帮助确定问题的根源。这可以适用于创建具有如此大的范围的服务,以至于支持它所需的知识超出了团队中的内容。但这也适用于以太小的方式划定团队。例如,如果两个微服务有效地表现为一个,并且将问题解决在另一个方法上也将其修复在另一个方面,那么将它们结合起来可能是有意义的。

提示

如果您有一个整体,请考虑如何解决该问题的责任。整体往往是造成许多事件的原因,无论是可行还是不可行。如果一个团队拥有整体,则通常不拥有任何其他服务,除非巨石的待命负载较低。

如果多个团队对整体负责,请考虑逐渐识别不同的功能来源,并将这些警报路由到具有正确背景的团队。尽管Monolith共享相同的代码库,但您确定的每个逻辑功能源都可以视为其自己的服务。该逻辑服务可以作为您的文档,运行书和Wiki的不同服务,以及您在Pagerduty中的单词所有权。

那依赖项呢?

不必担心一开始服务之间的依赖关系,而是关注您和您的团队负责的事物是否代表事物。在整理服务对组织意味着什么之后,您可以添加依赖关系,关系等。

Baidu