尽管任何自尊的敏捷(最好是极限编程或类似的)团队都会使用自上而下的开发方法对功能进行“薄的垂直切片”,但有时堆栈会变得笨拙。
mountebank 已经有几年的历史了, 尽管它的目标人群是赶时髦的人 ,但它还是一个非常可靠的工具。它允许您模拟依赖的服务,其中 tcp/ip 将您与该服务分开。有一种巧妙的方法可以使用此类工具来让前端和后端团队在不依赖于全栈构建的情况下高速工作。
技术兼容性套件
这不是什么发明,只是对多年来偶尔做的事情的描述。
你应该有两个回购——一个来自前端的东西,一个来自后端。如果您正在做 google 或 facebook 风格的 mega-trunk,那么这将是同一个 repo/trunk 中的两个目录。前端团队可以全速编程,而不必总是启动后端。同样,后端团队可以全速工作,而无需启动前端团队的构建。请注意,这是分离而不是解耦。
mountebank 作为模拟/存根后端有助于前端团队的全速运行。集成测试是前端团队回购的一部分(红线上方),是后端团队工具链的一部分,以证明他们所做的符合前端团队的期望。针对 mountebank 模拟运行这些集成测试证明每个人都在同一条轨道上。
所以,我在上面展示了四个排列,因为 ci 构建循环应该发布四个消息。这可能是四个 ci 配置,但它也可以很容易地是一个更大的配置,带有管道。当然,当结帐涉及两个回购协议时,这并不容易。 webdriver 也可以发挥作用——对于带有 mountebank 的前端来说,它是全面且非常快速的,而对于完整堆栈 ci 构建循环来说,它要短得多或“快乐的路径”。
实际上,这比使用“web 1.0”技术更适合使用 javascript 微框架的开发。但它仍然是可能的,如果有一组服务调用从 rails、django 或 servlet 层到它下面的层。
mountebank 也有一些小的复杂性——你必须在运行测试套件之前为 mountebank 本身启动一个服务器进程,然后在构建结束时将其拆除。一些谷歌搜索将帮助您克服这一点。
另外,不要忘记敏捷开发的黄金标准:堆栈中的薄垂直切片和 小故事 。