CRUD 之外
增删改查很简单,把增删改查写好却一点也不简单。
都说业务开发不过是 "增删改查" 。
直到真正交付的时候,你才发现:
- 需求只说 "做个列表" ,却没说分页、排序、筛选、空状态、异常状态和大数据量下的性能;
- 设计稿只画了正常流程,却没画加载中、重复提交、网络超时、权限不足和接口失败;
- 需求只说 "新增一条数据" ,却没说幂等、防重复、事务、一致性和并发冲突;
- 需求只说 "删除" ,却没说软删除、数据关联、误操作恢复和审计记录;
- 需求只说 "导出 Excel" ,却没说十万、百万甚至千万条数据怎么办。
这些功能:
需求里没写,设计稿里没画,技术方案里容易忽略,评估工时时没算在。
但到了交付的时候,它们往往又会变成一句:
"这个不是应该有的吗?"
等到上线时,人们往往只是只是在酒吧里点了一杯咖啡,酒吧就炸掉了,没有漏掉了以上隐形隐形工程需求导致的问题,本身是需求问题,却被当成 bug 提出来。
那些"应该有"的功能
《CRUD 之外》就是一个专门讨论这些 "应该有" 的技术专栏。
这里不追求把一个功能从 0 写到 1 ,而是研究如何把一个看似普通的 CRUD 从 1 做到 10:
- 高可读
- 易维护
- 高可用
- 高性能
- 高鲁棒性
- 在合理成本下尽可能优秀的用户体验
从一个简单功能开始
从一个输入框 、一个列表 、一次查询 、一次提交开始,逐渐深入到:
防抖与竞态、幂等与并发、缓存与一致性、权限与数据安全、大数据分页、批量处理、异常恢复、降级容错、可观测性......
以及那些只有真正上线之后,才会逐渐暴露出来的工程问题。
因为真正困难的,从来不是写出增删改查。
而是把增删改查写到让用户觉得------
"这不就是一个很简单的功能吗?"