My team is developing three microservices. These three collaborations provide a business scenario. They communicate with REST and RabbitMQ. Looks like a Toby Clemson presentation on testing Microservice .
Each microservice has its own continuous pipeline. This is a delivery, not a deployment of pipelines, which means that in the end there is a decision on manual release.
How to enable end-to-end test for a business scenario, i.e. through all microservices, to delivery pipelines?
My team suggested the following:
We add one common end-to-end phase that deploys all three microservices and runs an end-to-end test on them. Each time one of the pipelines reaches this stage, it deploys and tests. The semaphore ensures that the pipelines go through the stage one by one. Failure stops all three pipelines.
For me, this seems to sacrifice all the independence that the microservice architecture wins:
The end stage is a bottleneck. A fast conveyor can obstruct slow pipelines as it more often reserves the stage from end to end, making others wait before they can run their tests.
Failure in one pipeline will stop the delivery of other pipelines, as well as disconnect them from urgent error corrections.
-, . -, , - , .
, , . , , .
: , , ? , , .
?