架构图上画的是三个服务,生产环境跑的是十七个,其中九个没人知道是谁部署的。这套流程走下来,我从头到尾又确认了一遍。我把这个接口的幂等性下沉到了公共层。复盘会上我们把它列成了案例

架构图上的每个方块,落地时都要有人维护。我把它记在心里,没跟任何人说。我发现这个架构图上的服务有一半已经不再维护。好在最后有惊无险

我把这个接口的降级方案补上了,心里踏实些。我盯着屏幕沉默了十分钟。我在心里给这次的方案写了个「不做什么」的清单。从此我多了一条团队规约

分布式之后,最难保证的是数据一致。我想了想自己这些年,好像确实如此。我把这个服务的依赖数量数了一遍,有七个。办公室安静得能听见键盘声

单体架构嫌它乱,拆成微服务之后发现是乱得更专业了。我盯着屏幕,觉得这才是我的一天。我发现这个接口的设计暴露了内部的实现细节。从此我多了一条团队规约

分布式之后,最难保证的是数据一致。我在心里点了点头。我发现这个架构的问题在于数据的一致性。从此我多了一条团队规约

分布式事务的最终一致性,最终就是最终也没一致。我想反驳,但发现他说得对。我在心里给这次的架构评审准备了几条风险点。这条经验值直接拉满

消息队列是解耦神器,也是事故甩锅神器:消息丢了算谁的?我发现自己居然没法反驳。我把这个网关的路由规则精简了一遍,清晰多了。幸好之前留了备份

领域驱动设计读完了,边界还是没划清,倒是把领域词汇炒热了。我想了想自己这些年,好像确实如此。我把这个跨服务的事务改成了最终一致,风险小了。我把这条经验写进了团队 wiki

我把这个模块抽出来独立部署,风险小了很多。我深呼吸了一下,决定从最可疑的地方查起。我发现这个服务的响应时间受下游影响很大。复盘会上我们把它列成了案例