Google如何设计新功能?-CSDN博客

85 阅读3分钟

219ea792bddcd9115f5f05feef8b02e9.png\

可扩展性

在开始开发之前,谷歌使用设计文档模板来指导新功能的设计,并从相关利益相关者那里获得反馈。这个过程可能会进行多次。我很喜欢在开始阶段就有SLA和安全要求。

•您的系统如何进行扩展?考虑数据规模的增加(如果适用)和流量的增加(如果适用)。•考虑当前的硬件状况:添加更多资源可能比您想象的时间更长,或者对您的项目来说可能过于昂贵。您将需要哪些初始资源?您应该计划高利用率,但要意识到使用比所需更多的资源将阻止您的服务的扩展。

冗余性和可靠性

•讨论系统如何处理本地数据丢失和瞬态错误(例如临时中断),以及每种情况对系统的影响。•哪些系统或组件需要数据备份?数据如何备份?•如何进行恢复?在数据丢失和恢复之间会发生什么?•在部分丢失的情况下,您能否继续提供服务?您是否可以仅将备份中丢失的部分还原到正在提供服务的数据存储中?

依赖性考虑

•如果您依赖的其他服务在一段时间内不可用,会发生什么情况?•哪些服务必须运行才能启动您的应用程序?不要忘记诸如使用DNS解析名称或检查本地时间等微妙的依赖性。•您是否引入了任何循环依赖,例如在无法运行您的应用程序的情况下阻塞的系统?如果对此有疑问,请与您所依赖的系统的团队讨论您的用例。

数据完整性

•您将如何发现数据存储中的数据损坏或丢失?•哪些数据丢失来源被检测到(用户错误、应用程序错误、存储平台错误、站点/副本灾难)?•发现每种类型的数据丢失需要多长时间?•您从每种类型的数据丢失中恢复的计划是什么?

SLA要求

•您的应用程序的审计和监控服务水平保证机制是什么?•您如何保证所述的可靠性水平?

安全性和隐私考虑

•我们的系统经常受到攻击。考虑与此设计相关的潜在攻击,并描述它们可能产生的最严重影响,以及您采取的防止或减轻每种攻击的措施。•列出已知的漏洞或可能存在安全隐患的依赖项。•如果由于某种原因,您的应用程序没有安全性或隐私考虑,请明确说明原因。

一旦完成设计文档,进行快速的安全设计审查。设计审查有助于避免可能会延迟或阻止最终安全审查的系统性安全问题。