iOS 后端版本控制的最佳实践
Best practices for iOS back-end versioning
我从未在科技公司工作过。我使用托管在 AWS 上的 NodeJS API 和 MongoDB 从头构建了一个应用程序。
我将开始招聘后端开发人员与我一起工作。
更改后端的最佳方法是什么?所有 .js 文件都存储在存储库中,但是在发布之前测试 API 更改的最佳方法是什么?
该应用已在应用商店上线。我是否应该在 TestFlight 上放置一个重复的构建并将其连接到 version_2.js 个文件并像那样测试它?
或者有更好的方法吗?想知道业内人士通常做什么。
有几个注意事项:
环境
许多人会有多个“环境”。通常,您至少会有“开发”、“测试”和“生产”环境。许多组织都有第四个环境,在该组合中添加一个“暂存”或“pre-production”环境,它尽可能地反映生产环境,并且是投入生产之前的最后一个测试平台。
对于这些环境中的每一个,您都会有相应的应用构建,一个针对这些环境中的每一个。每一个都将是一个单独的 TestFlight 目标,以便测试人员可以下载并同时 运行 应用程序的开发、测试和生产版本,这将与相关后端背道而驰。
测试中
您应该进行多种类型的测试。至少,您应该考虑:
- 单元测试
- 集成测试
- UI 测试
构建这些测试应该是您开发方法的一部分。您应该自动化这些测试,对每个新版本进行回归测试,审查代码覆盖率等。
显然,还有其他类型的测试应该 运行(例如,stress/load 测试等),但以上内容应该可以让您继续。
源代码控制
您应该将所有代码都置于源代码控制之下,并使用与您的环境相对应的分支(在上面的第一点中进行了概述),这样您就知道在哪个环境中放置了哪些代码。
项目管理
您需要一个项目管理系统来指示正在开发的内容。根据您的开发方法,这将由描述正在完成的工作的“故事”组成(应该与源代码管理中的提交相关联)。
您通常会有一个看板,将这些故事与它们在 development/testing/deployment 流程中的位置以及它们所处的环境相关联。开发人员将在此处指示代码可以迁移到其中一个测试环境,审阅者可以将 PR 发回以供进一步开发或将 PR 推进验收测试,验收测试人员可以指示某些东西是否已准备好部署等。
语义版本控制
我建议使用 semantic versioning 系统。例如,您可以让服务器传达 API 版本,以便客户端知道是否需要或推荐更新版本的应用程序。
您还可以考虑为端点命名空间。例如,您可能正在处理 v1 端点,但当您引入一些重大更改时,这可能是将与 v1 端点并行(至少暂时)的 v2 端点。等等
我从未在科技公司工作过。我使用托管在 AWS 上的 NodeJS API 和 MongoDB 从头构建了一个应用程序。
我将开始招聘后端开发人员与我一起工作。
更改后端的最佳方法是什么?所有 .js 文件都存储在存储库中,但是在发布之前测试 API 更改的最佳方法是什么?
该应用已在应用商店上线。我是否应该在 TestFlight 上放置一个重复的构建并将其连接到 version_2.js 个文件并像那样测试它?
或者有更好的方法吗?想知道业内人士通常做什么。
有几个注意事项:
环境
许多人会有多个“环境”。通常,您至少会有“开发”、“测试”和“生产”环境。许多组织都有第四个环境,在该组合中添加一个“暂存”或“pre-production”环境,它尽可能地反映生产环境,并且是投入生产之前的最后一个测试平台。
对于这些环境中的每一个,您都会有相应的应用构建,一个针对这些环境中的每一个。每一个都将是一个单独的 TestFlight 目标,以便测试人员可以下载并同时 运行 应用程序的开发、测试和生产版本,这将与相关后端背道而驰。
测试中
您应该进行多种类型的测试。至少,您应该考虑:
- 单元测试
- 集成测试
- UI 测试
构建这些测试应该是您开发方法的一部分。您应该自动化这些测试,对每个新版本进行回归测试,审查代码覆盖率等。
显然,还有其他类型的测试应该 运行(例如,stress/load 测试等),但以上内容应该可以让您继续。
源代码控制
您应该将所有代码都置于源代码控制之下,并使用与您的环境相对应的分支(在上面的第一点中进行了概述),这样您就知道在哪个环境中放置了哪些代码。
项目管理
您需要一个项目管理系统来指示正在开发的内容。根据您的开发方法,这将由描述正在完成的工作的“故事”组成(应该与源代码管理中的提交相关联)。
您通常会有一个看板,将这些故事与它们在 development/testing/deployment 流程中的位置以及它们所处的环境相关联。开发人员将在此处指示代码可以迁移到其中一个测试环境,审阅者可以将 PR 发回以供进一步开发或将 PR 推进验收测试,验收测试人员可以指示某些东西是否已准备好部署等。
语义版本控制
我建议使用 semantic versioning 系统。例如,您可以让服务器传达 API 版本,以便客户端知道是否需要或推荐更新版本的应用程序。
您还可以考虑为端点命名空间。例如,您可能正在处理 v1 端点,但当您引入一些重大更改时,这可能是将与 v1 端点并行(至少暂时)的 v2 端点。等等