我们有两个不同的敏捷团队,每个团队都致力于独立但相关的应用程序。
到目前为止,每个团队都能够以独立的方式工作(不同的代码库、持久性存储、冲刺、积压等)。最近,产品管理部门决定这些应用程序将更加紧密地集成在一起。附带说明一下,每个团队(由 QA、Dev、BA 组成)的规模将在未来 6-12 个月内增加。
管理层决定在很大程度上保持敏捷过程的完整性,因为它运行良好(两个团队尽可能独立工作),但提出了将基于合同的服务层作为集成应用程序的手段的想法。
在每个 sprint 中,将确定需要与其他应用程序集成的任何故事。届时,将在其他团队的待办事项中添加一个额外的“整合”故事。然后,该团队将负责履行合同。与此同时,另一个团队可以继续他们原来的故事工作,替换一个 mock/fake 服务,直到另一个团队产生一个工作服务。
由于敏捷宣扬 KISS 哲学,团队中的几个人对这种方法的“复杂性”提出了质疑。他们提倡继续使用存储过程共享作为一种“过去运作良好”的更精简/更简单的集成方法。
出于各种原因,我更喜欢基于契约的编程,但主要原因是它能够为您的应用程序预期提供的行为提供编译时可见性。您还可以清楚地了解谁拥有什么代码,以及如果您违反合同,您可能会破坏谁的代码。存储过程不做这些。
由于我们已经从敏捷中获得了很多好处,我想已经有一种“敏捷友好”的方式来处理这种应用程序集成/同步。创建基于契约的 SOA 层是否符合敏捷气味测试?有没有我没有考虑过的第三种选择?