Architecture 大型持续集成的最佳实践是什么?
我的组织已经启动了一个持续集成项目,以自动构建面向公众的大型网站 所谓“大型”,我指的是30多个REST服务、外部CMS的内容和集成以及几个ASP.NET前端。这些系统是用Java和C语言混合编写的,部署在Linux和Windows服务器盒中 我们遵循一个敏捷流程,由七个跨学科团队组成,每周一次的冲刺周期 我们已经自动化了每个服务的构建和部署,但是现在我们的挑战是自动化(目前是手动的)集成和最终验收测试 我关注的是:Architecture 大型持续集成的最佳实践是什么?,architecture,continuous-integration,agile,soa,Architecture,Continuous Integration,Agile,Soa,我的组织已经启动了一个持续集成项目,以自动构建面向公众的大型网站 所谓“大型”,我指的是30多个REST服务、外部CMS的内容和集成以及几个ASP.NET前端。这些系统是用Java和C语言混合编写的,部署在Linux和Windows服务器盒中 我们遵循一个敏捷流程,由七个跨学科团队组成,每周一次的冲刺周期 我们已经自动化了每个服务的构建和部署,但是现在我们的挑战是自动化(目前是手动的)集成和最终验收测试 我关注的是: 当一个服务更改了它的契约,它的使用者更新了他们的代码,但是初始服务进一步更改
- 当一个服务更改了它的契约,它的使用者更新了他们的代码,但是初始服务进一步更改了它的契约时会发生什么?我们能得到一个稳定的体形吗
- 依赖性检查在手动系统中是一场噩梦,在自动化系统中我看不到它变得更好。(在Java世界中,我们将Maven与Nexus结合使用,并计划使用Ivy;我们正试图将.NET代码压缩到其中,并获得有趣的结果。)
- 我们的测试应该有多深?他们应该多久跑一次
依赖项的具体问题是什么?无论您使用的是Maven还是Ivy,一旦为项目定义了依赖项,事情就会变得非常顺利。一旦你获得了一个可重复的构建工作,持续集成在这里就不会有什么坏处——它将有助于你在事情不同步时更快地指出问题所在。我认为你会从调整应用程序基本功能的测试中受益匪浅,并且当服务合同的变更破坏了服务的客户时,这些测试可能会破坏服务 每次将网站部署到集成测试环境时,都应该运行这些测试(或至少是其中的“快速”子集)。整套设备将至少每晚运行 我认为你需要把这个网站看作是一个超级项目。如果有人更改了服务并破坏了客户,则会导致网站部署被标记为失败。通过在所有项目中汇总变更日志,确定负责的服务和开发人员应该相对容易 当您部署时,您通常会部署“网站”,它有效地调用每个包含的服务、内容等的部署过程,或者可能只是更改的部分
基本上,这意味着作为一个组织,您需要转变为要求服务足够稳定,以便能够与其他所有人的工作相集成。如果这是不可能的,他们会有自己的分支,每个人都会与以前的稳定版本相抗衡,并在以后的sprint中将与新版本的服务集成作为一个高优先级的故事。希望团队希望避免这种情况,并保留向后兼容的服务。我认为,如果测试能够灵活地使用应用程序的基本功能,并且当服务合同的变更破坏了服务的客户时,很可能会破坏服务,您将从中受益匪浅 每次将网站部署到集成测试环境时,都应该运行这些测试(或至少是其中的“快速”子集)。整套设备将至少每晚运行 我认为你需要把这个网站看作是一个超级项目。如果有人更改了服务并破坏了客户,则会导致网站部署被标记为失败。通过在所有项目中汇总变更日志,确定负责的服务和开发人员应该相对容易 当您部署时,您通常会部署“网站”,它有效地调用每个包含的服务、内容等的部署过程,或者可能只是更改的部分 基本上,这意味着,作为一个组织,您需要转向requ