【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

敏捷,架构和凌晨 5 点的产品问题

  • 2007-06-26
  • 本文字数:1341 字

    阅读完需:约 4 分钟

Michael Nygard 把自己列为那些仍然相信有架构这种东西存在的人之一。他在 InfoQ 发表的文章敏捷,架构和凌晨5 点的产品问题(Agile, Architecture and the 5am Production Problem)中抛出了一个神秘的问题,并引导读者走完了从发现到解决的全过程。他在文章的最后总结道,当我们为真实的世界而非QA 来构建产品应用时,需要有面向失败的思维和扎实的防御性编程策略。该文向敏捷社区中那些关于“够用就好”的架构组成的思想提出了挑战。

Nygard 在 Pragmatic Programmers 出版的新书:“交付!设计和部署生产就绪软件”,在上个月牢牢占据了 Amazon“热点新书发布”排行榜的首位。该文基于书中的一个故事进行了扩展,并把它与作者曾经经历过的敏捷过程——在那个时候,它们还被称为“轻量级方法学”——进行了结合:

敏捷方法告诉了我们很多关于如何构建能够灵活面对变化的功能性软件的方式。程序员们创建出一些诸如单元测试和 重构之类的技术来供其他程序员使用,并且将这些技艺完善推广。但是大多数情况下,敏捷方法只是关注于系统边界内的行为。在敏捷社区中,关于应该为系统边界 外的事物投入多大精力的争论一直在持续着。那些最极端的拥护者(他们算是“极限”的拥护者么?)声称,“让架构从持续的重构和强壮的单元测试中消失吧!” 我是一个敏捷开发者和架构师,但是你应该把我算入……那些坚信系统实现中仍然存在架构的人中。一个好的架构可以在真实世界中存活下来。而一个坏的架构只会 在运行时发出吱吱嘎嘎的响声和艰难的呻吟,对人和计算机都是一种摧残。我常常都能看到一些架构师沉迷于自己的抽象中,创造出一些根本无法成功构建的架构。

文章中讲述的那个神奇的问题只会在凌晨的一两个小时内,当网站的访问趋近於无了一段时间以后出现:一个应用每天早上 5 点都会宕掉,同时宕掉的还有一个只用于 查询的数据库。引发这个问题的地方——同时也是受害者——包括一个 Web 服务器,一个数据库服务器和一个防火墙。如果有些人的第一个想法就是:“如果你只 是查询的话,那根本不会导致死锁啊!”这些人就应该去看看 Nygard 到底发现了什么。

Nygard 用这个故事来阐述被他称之为“面向失败思维”的观点,这并不是说他期待着项目会失败,而是在他构建系统的时候,就一直在假设由于某种原因,在 某一天,架构中的任何一个地方都有可能出现问题。他在书中强力推荐大家在构建一套测试体系时要充满各种恶意,从简单的网络连接断掉,到使用错误的协议来发 出响应,这样才能更全面地模拟各种失败的场景。

Nygard 在文中向敏捷社区发起了挑战,因为社区中那些成天为“够用就好的架构”唱颂歌的人到现在还不知道这种想法在实际应用中意味着什么。同样,在不知多少文章和书籍中推荐过的特征驱动开发和极限编程,在解决这种问题的时候还是鞭长莫及。Nygard 相信,在

敏捷,架构和凌晨5 点的产品问题一文中提出的问题领域内,敏捷方法只能保持明显的缄默。

敏捷已经敞开了双臂拥抱测试纪律,而且最近也在努力和技术文档(译者注:特指那些说明如何使用软件的文档)和可用性等其他纪律靠拢。那么有关架构的纪律也是敏捷实践要与之融合的候选之一吗?还是敏捷中已经收录了足够多的原则和实践,完全可以构建出一个强壮的架构了?查看英文原文: Agile, Architecture and the 5am Production Problem

2007-06-26 01:25649
用户头像

发布了 197 篇内容, 共 52.1 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

天翼云通过DCMM 4级认证

天翼云开发者社区

在KVM中运行苹果操作系统

lyan

一起来体验小程序应用的独特魅力

Geek_99967b

SaaS应用 finclip 小程序容器

使用 Provider 实现 Flutter 不相关页面状态数据共享

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

天翼云4.0创新成果发布!科技创新赋能安全普惠

天翼云开发者社区

天翼云成为“云优化能力提升计划”首批成员单位!

天翼云开发者社区

前端食堂技术周刊第 38 期:Remix v1.5.0、Babel v7.18.0、前端部署十五章、Tree Shaking 问题排查指南、一文搞懂前端技术发展

童欧巴

前端 Remix 前端部署

创业、女性、数字化:后COVID-19世界的复苏“铁三角”

脑极体

英伟达周锡健:设计到数字营销的最后一公里

阿里云弹性计算

vr XR 视觉计算

第一梯队,增速第一

天翼云开发者社区

微幕小程序,给市场一个新的想象空间

Geek_99967b

小程序容器 小程序开发

小程序和App同时拥有?两者兼得的一种技术方案

Speedoooo

微信小程序 APP开发 小程序容器 小程序转app

人人皆为开发者?不可错过的低代码发展新趋势

云智慧AIOps社区

大前端 低代码 数据可视化

在星云科技,我们使用 Zadig 实现多环境并行发布,上千次周部署

Zadig

DevOps 云原生 CI/CD 软件交付

linux之tar使用技巧

入门小站

Linux

在线火星文转简体中文工具

入门小站

工具

Hoo研究院|区块链简报 20220523期

区块链前沿News

#区块链# Hoo 热点

企业引流和留存,“App+小程序”是较优技术策略

Speedoooo

微信小程序 APP开发 小程序容器 小程序转app

一文学完Linux常用命令

编程攻略

Linux

10分钟,将微信小程序转换成App

Speedoooo

微信小程序 移动开发 小程序容器 小程序转app

使用postMessage对iframe进行跨域数据传输

空城机

iframe postMessage 5月月更

十、云原生网络架构

穿过生命散发芬芳

网络架构 5月月更

Java Core「3」volatile 关键字

Samson

学习笔记 5月月更 Java core

我们为什么选择使用分布式持续交付新星 Zadig ?

Zadig

DevOps 云原生 CI/CD 软件交付

混合办公首选轻薄本,华为MateBook的“三重变身”改变了什么?

脑极体

Apache SeaTunnel(Incubating)与计算引擎的解耦之道,重构API我们做了些什么

Apache SeaTunnel

Apache 大数据 开源 DolphinScheduler workflow

Markdown语法简介

工程师日月

markdown语法 5月月更

【刷题第16天】数组中出现次数超过一半的数字

白日梦

5月月更

如何以极客的方式探索小程序容器技术

Geek_99967b

SaaS应用 小程序转app 跨端运行

“双碳”大局中再看业务合同电子化

鲸品堂

节能 提效降本 双碳

为什么校招面试中“线程与进程的区别”老是被问到?我该如何回答?

宇宙之一粟

线程 进程 5月月更

敏捷,架构和凌晨5点的产品问题_研发效能_Deborah Hartmann Preuss_InfoQ精选文章