伟大的软件设计看起来并不令人印象深刻

主要观点:多年前评审编码挑战时,曾认为一个仅三十行代码的简单 Python 文件是完美的,但被其他评审认为不够好,多年后认为伟大的软件设计应简单,应在设计阶段消除尽可能多的失败模式。
关键信息:

  • 软件系统有很多可能出错的情况,设计围绕潜在失败模式有两种方式,一是反应式,二是设计使其不存在。
  • 设计使其不存在的方式包括:将组件移出热路径、使用更少的组件、集中状态、使用经过验证的系统等。
  • 如将端点构造代码移到 cron 任务、移除数据库、规范化状态、依赖可靠系统等例子。
    重要细节:
  • 曾有一个极慢的目录端点,通过将端点构造代码移到 cron 任务解决了资源饥饿等问题。
  • 一个文档 CRM 因设计问题出现各种问题,移除数据库后解决了很多可能的运行和操作错误。
  • 状态不一致是很糟糕的失败模式,设计使关键状态有单一真相源很重要。
  • Ruby 服务器 Unicorn 简单但可靠,因其将很多工作交给进程和套接字 Linux 原语,且进程隔离更可靠。
  • 评审存在不公平,更倾向公司常用语言的提交。某项目中还存在数据库会话未清理的问题。伟大的软件设计大多时候看起来不显眼,而是消除潜在问题。
阅读 8
0 条评论