基础设施可视化从年级到小时级别的加速
分享从2018年至今在基础设施可视化方面的进展。现代工具显著缩短了可视化基础设施的时间成本。
分享从2018年至今在基础设施可视化方面的进展。现代工具显著缩短了可视化基础设施的时间成本。
Stackery 走向 AWS Infrastructure Composer 的历程
我说“从 2018 年起,我就在做基础设施可视化”,并不是在吹嘘——这就是事实。那一年,我加入了位于波特兰的一家很棒的初创公司 Stackery。它可以读取基础设施即代码(熟悉的人一般称之为 IaC),并生成像下面这样的架构图:
它真正的秘诀在于支持双向操作:通过拖放添加资源,再生成可以直接部署的 IaC。虽然这家初创公司自 2021 年起就不复存在了,但实际上你现在仍然可以体验它的在线编辑器 ;)
为什么我要翻出这段陈年往事?因为 Stackery 后来被 AWS 收购了(现在我已经不在 AWS 工作,终于可以说这件事了),并成为 AWS Infrastructure Composer(原名 Application Composer)。它可以读取基础设施即代码,并生成像下面这样的架构图:
它同样支持双向操作:通过拖放添加资源,再生成可以直接部署的 CloudFormation 模板。更重要的是,它提供了一种强大的可视化方式,帮助你理解构成 serverless 服务的分布式系统,以及这些系统之间如何交互。
如今我在 Stripe 工作。Stripe 并不是云服务提供商,所以按理说,在新工作中应该没有什么需要将 IaC 可视化的场景。
直到上个月,这个判断都没有错。但随着 Stripe Projects 发布,Stripe CLI 突然变成了一种可以用来构建任何东西的工具!
借助 Projects,任何人都可以使用 Stripe CLI,从一个正在快速扩充的 provider 目录中配置服务,涵盖托管、身份认证、AI、数据库等领域——几乎囊括了业余项目或真实应用可能需要的一切。不过更常见的情况是,用户会为自己的 Agent 配置好 CLI,然后对它说:“帮我构建一个能做 X 的应用。”Agent 可以自行判断这个用例需要数据库,并直接通过 CLI 完成配置——就像诸神原本设想的那样。
于是,我们现在有了一个由多个服务组成、复杂度不断增加,而开发者却未必完全理解的应用——经历过 #believeinserverless 时代的人,是不是觉得似曾相识?
最近,我使用 Projects 为团队构建了一款转录应用,并在《From init to deploy》一文中记录了整个过程。虽然这个应用相当简单,只使用了 Vercel 和 OpenRouter 两个 provider,但我仍然认为,对于任何想参与贡献的团队成员来说,拥有一张可视化架构图会很有帮助。于是,我在一个多少有些亢奋的下午,一口气构建了 stripe-projects-visualizer 应用。
这个应用会读取项目中的 .projects/state.json 文件——它是项目已配置服务的唯一事实来源——分析代码库各处如何使用 provider 的环境变量,然后生成一张架构图,展示已配置的服务如何连接,以及数据如何在它们之间流动。
例如,下面是为我的转录应用生成的架构图:
这个工具酷不酷、有没有用?当然,我愿意相信它既酷又有用。它是不是还缺少一些功能?当然。不过考虑到投入的时间,它缺少的功能并没有人们想象中那么多。用一个下午构建完它之后,我最大的感受是:我居然做得到。
Stackery 由六名工程师花费许多年时间构建和维护。Infrastructure Composer 最初有五名工程师,后来扩充到近十二名工程师,外加一个 UX 团队。即便如此,在 re:Invent 2022 上发布的首个预览版本,也经历了九个多月的高强度开发。此后,我以前所在的团队又花了一年时间,重新设计其中的画布部分,使其更易于移植和扩展。
Stripe Projects Visualizer 则只由一个人、用一个下午构建完成。我甚至可能明天就能发布它的 Web 应用版本。这和八年前我所处的开发范式完全不同。甚至与八个月前相比也截然不同——当时我还在笨拙地尝试使用 Kiro 和 Claude Code,改进 Infrastructure Composer 底层的画布技术。
我差点把这篇文章的标题定为《从数年到数小时的可怕现实》,因为从某些方面来看——尤其是那些与我非常希望自己能继续保住工作有关的方面——这确实令人恐惧。安全方面也是如此。不过,我的对抗性 Agent 向我保证,我的代码仓库中不存在安全漏洞(呼!)。
但这同样令人兴奋,因为那些过去需要数年才能完成、甚至根本无法启动的项目,如今至少有机会先以粗糙的形态存在,再交由团队不断打磨和维护。
所以,我想自己已经踏上了这趟既可怕又精彩的旅程。
如果你也想加入,不妨试试 Stripe Projects:
brew install stripe/stripe-cli/stripe && stripe plugin install projects
然后使用下面的命令,将你那既可怕又精彩的作品可视化:
npx stripe-projects-visualizer visualize
让我们看看你能创造出什么!
部分评论可能仅对已登录的访问者可见。请登录以查看全部评论。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。