CodeCatalyst 在 AWS Re:Invent 2022 上发布,看了 Keynote 的短暂介绍及专题视频后,实际体验了一把,简单分享下感受。
Catalyst - 催化剂
从产品定位上看,AWS CodeCatalyst(又)是个一站式 DevOps 平台(“unified development services that eliminates the need to configure, operate, integrate, or switch between disjointed tools…”),一站式也体现在云成色十足的 Turnkey 解决方案,即从研发环境到服务都由 AWS 托管并提供可用性及数据安全保障。
从研发活动阶段的划分来看,CodeCatalyst 主要面向产研协同的前半段,即需求 → 代码 → 部署(“Spark a faster planning, development, and delivery lifecycle”);此外 AWS 的产品矩阵下已有很多细分的开发者工具,CodeCatalyst 与之也不是简单替代或集成关系。
Catalyst 翻译过来是催化剂的意思,能感受到 CodeCatalyst 不是尝试颠覆或重定义如何研发,而是通过自动化接管部分成本高昂的人工操作(如环境配置),并提供云端协同的增效收益。几个核心功能点:
- Project Blueprint:类似 Java 开发者熟悉的 Spring Initializer 工程脚手架向导,Blueprint 除了生成代码、还生成各种配置(如 workflow 等),并会根据应用的技术栈自动部署 AWS 资源。对使用 AWS 全家桶的团队来讲,Blueprint 对快速起步一个项目非常方便。
- Managed CI/CD Pipelines:YAML 编辑器或可视化编辑器来配置 Pipeline,并支持使用 GitHub Actions 组件。
- Dev Environment:目前火热的云端研发能力,支持通过 Devfile 实现环境的代码化声明,支持使用 VS Code 及 JetBrains Gateway 进行远程研发。
产品体验
首先需要注册一个 AWS Builder ID 账号、并绑定 AWS 账号以授权资源访问及付费结算。CodeCatalyst 有一篇非常精炼的 FAQ,不便注册 AWS 账户的小伙伴可通过 FAQ 一窥其产品能力。FAQ 除了用户视角的核心功能阐述外,也着重笔墨介绍了数据安全、权限体系、计费策略等客户视角的关注点。产品细节也可移步 官方帮助文档 进一步了解。
使用 CodeCatalyst 需先创建一个 Space、作为 CodeCatalyst 的顶级模型,每个 Space 要绑定 AWS 账户 ID(唯一绑定,不支持同一个 AWS 账户多绑 Space)才能完成创建。CodeCatalyst 产品架构上同近年协同类 SaaS 的模型分层上非常接近,Space → Project 两层结构;Space 作为协同的主体模型、负责成员管理、插件安装、计费等。Space 下进一步创建 Project(Space 同 Project 是 1:N 关系),作为研发活动的容器(包含 Issue、Code、PullRequest、Workflow 等)、Project 概念也符合开发者心智。
参考 你好,生产力(番外篇1) - Linear, be Pragmatic, but Gracefully 对这类生产力工具在模型上的解构
Project 的创建如前所述,可基于 Blueprint 模板化创建。官方提供了 14 个经典模板,当然技术栈跟 AWS 体系是强绑的,不过也支持一定的参数化(如 WebFE 选择框架是 Vue 还是 React、函数运行时选 Java 还是 TS 等等),然后右侧自动生成代码,很有 CodeLab 的感觉。如创建一个 Serverless 应用(SAM)、一路点击下来就能完成部署 Lambda 函数。
CodeCatalyst 左导航菜单 Issue -> Code -> CI/CD 展开后能看到更多功能项,像 Issue Tracking 体验下来已经足够丰富了,完全能支撑产研团队生产级使用。如支持不同视图类型(看板 / 列表,支持过滤 / 分组 / 排序),支持自定义标签、自定义字段、自定义状态(如对 进行中 / 已完成 等状态分组下做扩展)、Slack 通知等。
同时 CodeCatalyst 也支持跟 Jira 的集成,类似代码托管这里除了从零创建一个仓库、也可关联一个 GitHub 项目一样;不过这是 CodeCatalyst 目前仅有的两个插件,接下来就看三方应用的生态能否建立起来了。
Workflow 支持可视化拖拽操作,每个 Step 节点也支持表单或代码化编辑。支持配置 GitHub Action 作为 CI 组件;支持预配多个环境,基于多种触发策略(如代码变更)自动化部署。Workflow 这里能看到很多 AWS 强大的基础能力,如 Step Functions 提供的编排服务、CloudFormation 提供的模板到技术栈的解析能力等;可以说 CodeCatalyst 很多能力也是由 AWS 的原子能力装配而成。
Dev Environment 部分是笔者比较感兴趣的点,目前国外三大云商在一年之间都提供了远程研发的底座能力支持,也有 IDE 厂商 JetBrains 的解决方案(JetBrains Space,定位上非常接近于本文主角 AWS CodeCatalyst)及初创公司 Gitpod / Coder 等,这部分准备后续单独开文记录(GCP Workstation + JetBrains Space,及 GitHub Codespaces)
有兴趣的读者可参考此前文章
1. JetBrains Remote Dev 故事
2. Gitpod workspace with JetBrains Gateway
3. Gitpod Self-hosted installation on Tencent Cloud
4. How JetBrains Gateway works - beyond the black box
Builder
AWS Builder ID 作为一套全新账号体系,同 AWS 主账户独立,更类似一个面向个人开发者的社会化登录账号(如 GitHub 账户,可加入及切换不同的组织),跟管理云产品的企业主子账号没有从属关系。因此如果用户更换了工作、学校、组织,AWS Builder ID 依旧能用。目前用 AWS Builder ID 访问的工具和服务有 CodeCatalyst 和 CodeWhisperer,两者都是这次 Re:Invent 上发布的。某种意义上这套账户扩展了 ToC 使用场景,但商业化还是企业级云产品售卖的路线,比如云端研发所产生的资源付费、依旧是绑定 AWS 账号结算。AWS Builder ID 还可用于访问 AWS re:Post,一个类似 StackOverflow 的社区;不难看出 AWS Builder ID 是 AWS 培育开发者社区生态的努力尝试。
AWS 对 Builder 这个词可能颇有好感,Re:Invent 2019 发布了 Amazon Builders’ Library 文集,由 Amazon 资深工程师撰写,主题包括了架构设计、软件交付等;虽然有给 AWS 布道的立场,但内容也非常精彩。这次 Keynote 上 AWS CTO Werner 博士还宣传了一把 Builder Library 文集、并欢迎观者阅览,这也是难得一见 CTO 在 Keynote 上给小作文带货的。在前司时老板就强烈建议通读该系列文章,也有一篇 AWS Re:Invent 2019 游记 时隔多年给了本文非常多的启发。
看完 AWS Re:Invent,一个感受就是软件行业越来越像传统生产活动,尤其生产要素(PC → Cloud Infra)、劳动工具(Local DevTools → PaaS/SaaS)都从开发者手中转移,生产经验和劳动技能甚至开始被 AI(GitHub Copilot / AWS CodeWhisperer)补替。一个广为流传又引起争议的表述是 “Software is assembled, not written”,或许有一天开发者的称呼慢慢演变成了 Builder,且开发软件会成为公民级的技能。