知识卡片
加强对服务职责的理解:业务产出、SLA与协作图
内容
划分服务边界的本质,说得直白一点,是”出了问题该归咎于谁”——服务划分表达的是责任和问责关系。要理清一个服务的业务职责,最重要的两个问题是:这个服务负责的业务产出是什么?它需要保证哪些SLA?以订单履约为例,它的所有者完全依赖其他服务(如支付服务)的能力和性能,不必深究支付服务的内部工作原理,但要监控支付服务的SLA,因为它一旦性能下降会直接拖累订单履约整体的时长。职责划分的方式应该和组织划分方式保持一致,没有放之四海皆准的标准——比如”支付”在有些公司是单一服务,在另一些公司则拆成多个服务(一个总体负责支付、再委托给专门处理信用卡/代金券等具体支付方式的服务),每个可能各有自己的流程模型。理清端到端业务流程对理解边界和职责很有帮助:需要弄清为了完成整个流程,各服务分别要做什么、如何通信——BPMN的协作图正是为此服务的工具,能可视化不同参与者之间的协作方式,验证关于职责和API的设想是否成立(尤其是故障场景下),还能用来检查异常是否在正确的上下文里被处理。但这类协作图主要在设计阶段有用,通常不追求完全准确(否则会因过大而无法可视化),设计讨论完成后就该删掉,不必长期维护;如果同事嫌BPMN协作模型太复杂,事件风暴、故事风暴、领域故事等技术可以达到同样挖掘协作信息的目的。
参考来源
- 位置:《流程自动化实战:系统架构和软件开发视角》第7章《自治、边界和隔离》"7.3.2 加强对职责的理解"(源文件:_epub-src/EPUB/xhtml/Section0001_0011.xhtml)
- 结论依据:原文用订单履约依赖支付服务SLA的例子说明业务产出与SLA两个核心职责问题,说明职责划分应与组织划分保持一致(以支付服务拆分粒度因公司而异为例),并解释BPMN协作图的验证价值及其"设计阶段用完即删"的定位,直接支撑本卡片结论。
- 原始内容:这个服务负责的业务产出是什么?它需要保证哪些SLA?……职责划分的方式应该与你组织划分的方式保持一致,没有通解……请注意,这些图表主要在设计阶段有用。之后就应该删掉它们。