亚马逊AWS官方博客

宣布推出统一软件开发服务 Amazon CodeCatalyst(预览版)



我们于近日宣布推出 Amazon CodeCatalyst 的预览版。Amazon CodeCatalyst 是统一的软件开发和交付服务,可让软件开发团队在 AWS 上快速轻松地规划、开发、协作、构建和交付应用程序,从而减少整个开发生命周期中产生的冲突。

在身为开发人员期间,除了向用户提供软件外,最让我兴奋的事情是开始一个新项目,或者受邀加入一个项目。无论是何种项目,我都期待构建非常酷的产品,开创新的代码,以及看到想法转变为现实。但是,起步有时是缓慢的过程。我或团队需要使用工具、库和编程框架来更新本地开发环境或全新的机器。我们必须创建源代码存储库并设置其他共享工具,例如 Jira、Confluence 或 Jenkins,同时配置构建管道和其他自动化工作流程,创建测试环境等。开发和构建环境的日常维护占用了大量宝贵的团队开发周期和精力。团队之间的协作也需要付出努力,因为没有可共享信息和提供单一事实来源的工具。项目之间的上下文切换以及处理这些项目中相互冲突的依赖关系,例如,项目 X 的 Python 3.6 和项目 Y 的 Python 2.7 — 尤其是在我们只有一台机器执行处理时,这会进一步增加负担。

似乎境况永远无法好转! 如今,在与开发人员谈论其工作体验时,我经常听到他们表示现代开发变得更加复杂。这是因为他们不得不选择和配置一组更广泛的现代框架和库、工具、云服务、持续集成和交付管道,以及选择许多其他选项,所有这些工作都需要共同付出努力,才能交付良好的应用程序体验。过去可由一位开发人员在一台机器上管理的内容,现在变成庞大、动态、复杂的决策和权衡网络,并且由于需要在分散的团队中协调所有这些工作,因此变得更具挑战性。

进入 Amazon CodeCatalyst
我花了一些时间与开发 Amazon CodeCatalyst 的团队讨论他们的灵感来源和目标。他们听取了 AWS 新老开发人员和服务团队的反馈,研究了团队和个人开发人员在构建云端软件时通常会遇到的挑战。收集并审查这些反馈之后,他们着手创建统一的工具,以消除不必要地减慢软件交付速度的未完善之处,同时加入一些功能,让团队更加轻松地合作和协作。Amazon CodeCatalyst 中用于应对这些挑战的功能包括:

  • 设置项目资源的蓝图 — 其中不仅有新项目的框架,还包含支持软件交付和部署所需的资源。
  • 基于云的按需开发环境,可让您或团队轻松地复制一致的开发环境。
  • 问题管理,可跟踪提交、拉取请求和部署之间的更改。
  • 使用灵活的托管构建基础设施的自动化构建和发布 (CI/CD) 管道。
  • 用于显示项目活动(例如提交、拉取请求和测试报告)的控制面板。
  • 能够仅通过一封电子邮件即可邀请其他人就项目进行协作。
  • 统一的搜索,可以轻松地在用户、问题、代码和其他项目资源中找到所查找的内容。

在这篇文章中,我没有过多的篇幅介绍 Amazon CodeCatalyst,因此将简要介绍一些特定的功能,例如蓝图、开发环境和项目协作。其他即将发布的文章会涵盖其他功能。

项目蓝图
当我第一次听说蓝图时,它们听起来像是为项目编写一些初始框架代码的功能。但是,蓝图的作用远不止于此! 借助参数化应用程序蓝图,您可在几分钟内设置共享项目资源以支持应用程序开发生命周期和团队协作,而不仅仅是创建应用程序的初始入门代码。蓝图为项目创建的资源包括源代码存储库、完整的初始示例代码和适用于常用应用程序模式的 AWS 服务配置,这些资源默认遵循 AWS 最佳实践。如果愿意,可以改用外部 Git 存储库,例如 GitHub。蓝图还可以添加问题跟踪器,但也可以使用 Jira 等外部跟踪器。然后,蓝图为 CI/CD 添加构建和发布管道(稍后将介绍该管道)以及其他集成工具。

借助使用蓝图设置的项目资源和集成工具,包括 CI/CD 管道和用于托管应用程序的 AWS 资源,您只需按下“部署”按钮即可在几分钟内得到正常运行的示例代码,从而能够直接投入开发并开始处理特定的业务逻辑。

启动新项目时的项目蓝图

启动项目时,客户可以从带有 Typescript、Python、Java、.NET、用于各种语言的 Javascript 以及 React、Angular 和 Vue 框架的蓝图中进行选择,未来还会推出更多蓝图。并且,您不需要以蓝图为起点。可以使用可在任何适用于 Linux 和 Windows 操作系统的设备上运行的工作流程来构建项目。

基于云的开发环境
开发团队经常会遇到“环境漂移”问题,即一个团队成员的工具链或库版本与其他成员或测试环境略有不同。这可能会引入一些在一段时间内被忽视的细微错误。开发环境规格以及蓝图创建的其他共享资源有助于确保没有不必要的差异,并且团队中的每位成员都可获得相同的设置,从而在开发人员之间提供一致、可重复的开发体验。

Amazon CodeCatalyst 使用 devfile 来定义基于云的按需开发环境配置,该环境目前支持四个可调整规模的实例大小选项,包括 2、4、8 或 16 个 vCPU。devfile 定义和配置针对给定项目编码、测试和调试所需的所有资源,从而最大程度地减少开发团队成员在创建和维护本地开发环境上花费的时间。如果需要,也可以修改由所选蓝图添加到源代码存储库的 devfile。使用开发环境,项目间的上下文切换开销会有所减少 — 只需单击一次,就可以切换到不同的环境,然后就可开始开发。这意味着您可以轻松地在多个代码库上同时开展工作,而无需重新配置。由于采用按需配置,开发人员也可以根据需要暂停、重新启动或删除开发环境。

以下是引导开发环境的 devfile 示例。

schemaVersion: 2.0.0
metadata:
  name: aws-universal
  version: 1.0.1
  displayName: AWS Universal
  description: Stack with AWS Universal Tooling
  tags:
    - aws
    - a12
  projectType: aws
commands:
  - id: npm_install
    exec:
      component: aws-runtime
      commandLine: "npm install"
      workingDir: /projects/spa-app
events:
  postStart:
    - npm_install
components:
  - name: aws-runtime
    container:
      image: public.ecr.aws/aws-mde/universal-image:latest
      mountSources: true
      volumeMounts:
        - name: docker-store
          path: /var/lib/docker
  - name: docker-store
    volume:
      size: 16Gi

在 Amazon CodeCatalyst 预置的云端开发环境中工作的开发人员可以使用 AWS Cloud9 作为 IDE。但是,他们可以在本地计算机上从其他 IDE 轻松使用 Amazon CodeCatalyst,例如 JetBrains IntelliJ IDEA Ultimate、PyCharm Pro、GoLand 和 Visual Studio Code。开发人员还可以在自己的 IDE 中创建开发环境,例如 Visual Studio Code,或者使用 JetBrains Gateway 应用程序为 JetBrains 创建开发环境。在下文中,我们使用 JetBrains IntelliJ。

在 JetBrains IntelliJ 中编辑应用程序源文件

构建和发布管道
蓝图创建的构建和发布管道在灵活的托管基础设施上运行。管道可以使用按需计算或预置构建,包括选择机器规模,并且可以引入自己的容器环境。可以纳入内置或合作伙伴提供的构建操作(例如,提供软件组合分析构建操作的 Mend),也可以纳入 GitHub Actions 来编写全自动管道。可以使用可视化编辑器或 YAML 文件配置管道。

借助构建和发布管道,可以部署到流行的 AWS 服务,包括Amazon Elastic Container Service (Amazon ECS)AWS LambdaAmazon Elastic Compute Cloud (Amazon EC2)。借助 Amazon CodeCatalyst,您可轻松地设置测试和生产环境,以及使用管道部署到一个或多个区域(甚至多个账户)来实现安全性。

运行自动化工作流

项目协作
作为统一的软件开发服务,Amazon CodeCatalyst 不仅可让您更轻松地开始在 AWS 上构建和交付应用程序,还可以通过单一的共享项目空间和事实来源,帮助各级开发人员在项目上进行协作。只需一封电子邮件即可邀请开发人员进行协作。接受邀请后,开发人员可以看到完整的项目上下文,并且可以使用项目的开发环境立即开始开发工作,而无需花时间使用所需的工具、库或其他先决条件更新或重新配置本地计算机。

可以邀请 Amazon CodeCatalyst 空间的现有成员或使用其电子邮件的新成员协作开发项目:

邀请新成员协作开发项目

每位成员都会收到一封邀请电子邮件,其中包含标题为接受邀请的链接,单击该链接会打开浏览器选项卡进行登录。登录后,他们可以查看 Amazon CodeCatalyst 空间中受邀加入的所有项目,还可以快速切换到身为拥有者或受邀加入的其他空间。

我受邀开展协作的项目

从中,他们可以选择一个项目并立即了解开发现状,例如,最近工作流的状态、任何未完成的拉取请求和可用的开发环境。

CodeCatalyst 项目总结

在问题板上,团队成员可以查看需要处理的问题,选择一个问题并开始处理。

查看问题

能够立即查看项目上下文,有权访问基于云的按需开发环境,所有这些功能都有助于成员更快地开始做出贡献,并且避免设置工作带来的延迟。

立即开始使用免费套餐中的 Amazon CodeCatalyst!
今天,新发布的 Amazon CodeCatalyst 预览版中提供了支持应用程序开发和部署、问题跟踪、电子邮件邀请协作、自动化工作流等方面的蓝图,可帮助您加快推进云开发和交付工作。在 Amazon CodeCatalyst 用户指南中了解更多信息。此外,正如我之前提及,团队还计划发布更多博客文章和其他支持内容,以更详细地介绍这些功能,因此请务必留意!