在软件架构领域,人工智能(AI),尤其是像 ChatGPT 这样的大模型,正逐渐崭露头角。本文将探讨一项为期一个月的实验,该实验让 ChatGPT 全权负责软件架构决策,旨在评估 AI 在此领域的潜力。实验结果出人意料,也为我们理解未来架构师与 AI 的协作模式提供了新的视角。通过深入分析实验设计、核心结果、局限性以及最终形成的AI 架构协作模型,我们将揭示 AI 如何赋能软件架构,以及未来架构师的新角色。
实验设计:三大项目与严格规则
为了全面评估 ChatGPT 在不同场景下的架构决策能力,该实验选择了三个具有代表性的项目:
- Project Alpha: 金融服务公司的客户门户,规模相对较小,但对用户体验和安全性有较高要求。
- Project Beta: 物流公司的内部数据处理管道,注重效率和数据一致性。
- Project Gamma: 医疗保健初创公司的全新移动应用程序,需要快速迭代和可扩展性。
实验制定了严格的规则,确保 ChatGPT 的决策能够得到忠实执行。所有架构决策,从高层模式到详细的实现选择,都由 ChatGPT 决定。尽管保留了否决权,以防止 AI 做出明显危害项目的决策,但在整个实验过程中,这一权利从未被行使。每次决策都会被详细记录,包括最初的反应和实际结果。
为保证一致性,实验采用了标准的提示模板:
我需要就 [具体架构问题] 做出决定。
项目背景:
- [领域描述]
- [关键需求]
- [现有架构(如果适用)]
- [约束条件]
我正在考虑的选项:
- [选项 1]
- [选项 2]
- …
你推荐什么架构决策,为什么?
这种结构化的方法有助于 ChatGPT 理解问题的背景,并提供更具针对性的建议。
结果一:务实胜于复杂
实验中最令人惊讶的发现之一是,ChatGPT 倾向于选择更简单的解决方案,而不是过度复杂的设计。当面临从简单到复杂的多个选项时,ChatGPT 通常会推荐满足需求的最简单的方法。
例如,在 Project Beta 中,当被问及应该使用:
- 简单的 cron 作业和脚本
- Apache Airflow
- 自定义流处理框架
时,ChatGPT 推荐从 cron 作业开始,只有在编排复杂度显著增加时才转向 Airflow。它的理由是周到且务实的:“鉴于当前的规模和团队对脚本的熟悉程度,引入 Airflow 会增加不必要的操作复杂性,而不会带来直接的好处。”
这种模式在整个实验中重复出现。AI 一直反对过早优化、过度工程和不必要的抽象,而这些正是经验丰富的架构师努力避免的。
结果二:语境意识胜过理论知识
ChatGPT 能够将项目特定的上下文纳入其建议,这可能是最令人惊讶的发现。它不仅仅是复述教科书式的架构模式,而是根据每个项目的具体情况调整它们。
在 Project Gamma(医疗保健应用程序)中,AI 根据不同组件的具体需求推荐了不同的方法:
- 患者数据: 采用直接的 RESTful API,并密切关注授权边界。
- 实时通知: 采用使用 WebSocket 的轻量级事件驱动方法。
- 分析: 采用具有最终一致性的单独数据管道。
这种方法避免了“一刀切”的架构,而是针对同一应用程序中的不同需求量身定制了建议。
结果三:AI 的最大优势:考虑不同的观点
ChatGPT 架构指导的最有价值的方面不是其建议本身,而是它用来达成这些建议的推理过程。对于每个决策,AI 都会:
- 考虑多种方法
- 根据明确的标准评估它们
- 承认权衡
- 解释其推理
这种结构化的方法迫使人们进行一定程度的严谨性,而这种严谨性在实际决策中可能会被跳过。
在 Project Alpha 中,架构师确信由于团队结构的原因,需要微服务架构。ChatGPT 通过周到的分析反驳了这一点,表明模块化单体架构可以更好地满足当前需求,同时为将来的分解做好准备。其推理是全面的:
虽然微服务与你的团队结构相符,但它们引入了显著的复杂性:
- 运营开销: 每个服务都需要单独的部署管道、监控等。
- 网络弹性: 分布式系统需要复杂的错误处理。
- 数据一致性: 跨服务事务变得具有挑战性。
鉴于你的时间限制以及领域边界可能演变的事实,模块化单体架构将:
- 为团队提供清晰的代码分离
- 避免初始开发期间的运营复杂性
- 允许在边界稳定时逐步提取服务
- 更好地适应你的初级开发人员的学习曲线
最终采用模块化单体架构,并且在六周后,当需求发生变化并且需要调整域边界时,这一决策被证明是正确的。如果采用微服务,这将是痛苦的。模块化单体架构允许相对容易地重构内部边界。
AI 架构的隐藏优势
随着实验的进行,人们发现了将 AI 纳入架构过程的几个意想不到的优势:
-
减少决策疲劳: 软件架构师每天都要做出数百个决策,从高级模式到命名约定。这种决策负担会导致疲劳,从而降低后期决策的质量。让 ChatGPT 处理常规的架构决策可以释放精神能力,用于每个项目真正新颖的方面。
-
强制执行决策文档: 架构师经常被忽视的责任是记录决策的原因。实际上,在时间压力下,这通常会被忽略。与 ChatGPT 的对话格式自然地创建了架构决策的档案,其中包含上下文、考虑的替代方案和推理。该文档对于新团队成员的入职和自身的参考都非常宝贵。
-
挑战无意识偏见: 人们在职业生涯中都会发展出偏好和偏见。架构师意识到,他一直在根据熟悉程度自动选择某些模式,而不是严格的适当性。ChatGPT 没有这样的忠诚度。它仅根据技术和模式与当前问题的匹配程度来推荐它们,偶尔会提出由于无意识偏见而被忽略的方法。
局限性:平衡利益相关者与领域专业性
尽管有令人惊讶的好处,但该实验也暴露了 AI 架构能力的明显局限性:
-
平衡相互竞争的利益相关者需求: 软件架构通常涉及在相互竞争的利益相关者关注点之间进行调解:开发人员希望可维护性,产品经理希望功能,运营希望稳定性,业务希望速度。ChatGPT 难以做出这些固有的政治权衡。当需求发生冲突时,它倾向于承认冲突,但避免就应优先考虑哪个问题采取强硬立场。
-
纳入机构知识: 每个组织都有不成文的知识 – 历史决策、废弃的方法、影响技术选择的文化价值观。尽管架构师努力在提示中包含此上下文,但 ChatGPT 无法完全纳入影响架构决策的丰富机构历史。它错过了关于过去为何避免某些方法或为何存在看似不合理的约束的细微差别。
-
特定领域的局限性: 虽然 ChatGPT 具有令人印象深刻的广度,但其知识深度因领域而异。它为 Web 架构和数据处理提供了复杂的指导,但为嵌入式系统或高频交易等专业领域提供了更通用的建议。在这些专业领域,AI 可以概述一般方法,但缺乏经验丰富的架构师所拥有的领域特定见解。
新的工作模式:架构师-AI 协作
通过实验发现,问题不在于 AI 是否可以取代架构师,而在于架构师如何才能最有效地与 AI 协作。
以下是采用的模型:
-
AI 作为初稿生成器: 对于每个架构决策,架构师现在首先要求 ChatGPT 生成一个初稿方法。这提供了一个结构化的起点,并已考虑了替代方案。
鉴于为移动应用程序实施用户身份验证的要求,架构师建议:
方法: 使用托管身份提供程序的 OAuth 2.0 和 OpenID Connect
理由:
- 安全性: 委托给专家可以降低实施漏洞的风险
- 维护: 托管服务处理安全更新和合规性
- 用户体验: 支持社交登录和标准身份验证流程
考虑的替代方案:
- 自定义身份验证系统: 由于安全风险和维护负担而被拒绝
- 基本身份验证: 针对敏感健康数据的安全性不足
- 没有 OIDC 的基于 JWT 的身份验证: 缺乏标准化的用户信息和会话管理
这种结构化的初稿节省了时间,并确保不会忽略常见方法。
-
AI 作为魔鬼的倡导者: 也许 AI 最有价值的角色是挑战思维。架构师现在经常要求 ChatGPT 批评架构决策,尤其是那些架构师非常有信心的决策。
像“反对这种方法的三大最有力论点是什么?”或“什么会导致此架构失败?”之类的提示已反复发现了思维中的盲点。
在一个实例中,ChatGPT 对缓存策略的批评发现了一个潜在的数据一致性问题,而被架构师完全忽略了。这一个发现可能会在以后节省数周的调试时间。
-
AI 作为文档合作伙伴: 在做出重要的架构决策后,架构师现在要求 ChatGPT 帮助以标准化格式记录它,从而确保捕获:
- 决策时的上下文和约束
- 考虑的替代方案
- 接受的权衡
- 要监控的未来问题
这种文档规范极大地提高了团队理解过去决策并在情况发生变化时重新审视它们的能力。
AI 在软件架构中的未来
根据此实验,人们看到了 AI 将如何改变软件架构的几种新兴模式:
-
民主化架构知识: 初级开发人员现在可以访问以前锁定在高级架构师头脑中的架构指导。这种民主化将加速专业发展并减少瓶颈。
-
转移架构师的角色: 随着 AI 处理更多常规的架构决策,人类架构师将转向利用人类独特优势的角色:
- 促进利益相关者之间困难的权衡讨论
- 将组织文化和历史纳入决策
- 指导和培养他人的架构思维
- 关注技术选择对人类的影响
-
架构即对话: 传统的软件架构通常涉及单个架构师从高处发表声明。AI 鼓励更具对话性的方法,在这种方法中,决策通过对话演变。
这种对话模型导致更周到、记录更完善的决策,团队更容易理解和支持。
结论:拥抱 AI 架构的新时代
这个为期一个月的实验从根本上改变了架构师对自身角色的看法。架构师不再是架构智慧的唯一来源,而是利用人类和人工智能来协调决策过程的组织者。
对于那些担心 AI 取代他们的架构师,AI 不会取代架构师,但有效与 AI 协作的架构师将取代那些不这样做的人。未来的软件架构不是架构师与 AI 的对决,而是架构师与 AI 的协作,这种协作产生的结果比任何一方单独取得的成果都要好。