Engineering
先设计接口,再堆基础设施
接口不是最后包一层文档,它是系统最早应该被讨论的形状。
很多工程项目会先把数据库、队列、缓存、部署方式都搭起来,然后才开始问调用方到底需要什么。这样做很容易得到一个技术上很完整、使用上却很别扭的系统。
接口会逼出命名
命名不是装饰。一个资源叫 task、job、run 还是 session,背后其实是状态流转和责任范围。越早把这些词放到接口里,越早发现团队理解是否一致。
接口会逼出失败模式
成功响应往往很好写,失败响应才暴露系统性格。是重试、排队、部分成功、权限不足,还是输入不完整?这些如果不先说清楚,基础设施会在后面替产品做决定。
接口让基础设施有目标
有了稳定的输入输出,才知道日志该记录什么,缓存该保护什么,限流该围绕什么维度,监控该盯哪些指标。基础设施不是越多越好,而是越贴近使用路径越好。
先设计接口并不意味着过度设计。它只是要求我们在搭机器之前,先把系统和使用者之间的承诺说清楚。