CRUD之外 - 引子

15 阅读2分钟

CRUD 之外

增删改查很简单,把增删改查写好却一点也不简单。

都说业务开发不过是 “增删改查”

直到真正交付的时候,你才发现:

  • 需求只说 “做个列表” ,却没说分页、排序、筛选、空状态、异常状态和大数据量下的性能;
  • 设计稿只画了正常流程,却没画加载中、重复提交、网络超时、权限不足和接口失败;
  • 需求只说 “新增一条数据” ,却没说幂等、防重复、事务、一致性和并发冲突;
  • 需求只说 “删除” ,却没说软删除、数据关联、误操作恢复和审计记录;
  • 需求只说 “导出 Excel” ,却没说十万、百万甚至千万条数据怎么办。

这些功能:

需求里没写,设计稿里没画,技术方案里容易忽略,评估工时时没算在。

但到了交付的时候,它们往往又会变成一句:

“这个不是应该有的吗?”

等到上线时,人们往往只是只是在酒吧里点了一杯咖啡,酒吧就炸掉了,没有漏掉了以上隐形隐形工程需求导致的问题,本身是需求问题,却被当成 bug 提出来。


那些“应该有”的功能

《CRUD 之外》就是一个专门讨论这些 “应该有” 的技术专栏。

这里不追求把一个功能从 0 写到 1,而是研究如何把一个看似普通的 CRUD 从 1 做到 10

  • 高可读
  • 易维护
  • 高可用
  • 高性能
  • 高鲁棒性
  • 在合理成本下尽可能优秀的用户体验

从一个简单功能开始

从一个输入框、一个列表、一次查询、一次提交开始,逐渐深入到:

防抖与竞态、幂等与并发、缓存与一致性、权限与数据安全、大数据分页、批量处理、异常恢复、降级容错、可观测性……

以及那些只有真正上线之后,才会逐渐暴露出来的工程问题。


因为真正困难的,从来不是写出增删改查。

而是把增删改查写到让用户觉得——

“这不就是一个很简单的功能吗?”