In software testing, a canary is a push of programming code changes to a small group of end users who are unaware that they are receiving new code. Because the canary is only distributed to a small number of users, its impact is relatively small and changes can be reversed quickly should the new code prove to be buggy.
How to implement Canary-test in Spring Cloud Gateway
This can be implemented using the WeightRoutePredicateFactory introduced in Spring Cloud Finchley.M9. The idea is very simple, we just give diffrent weights to different routes, And Spring Cloud Gateway will dispatch the request to diffrent uris according the weights in the same group.
a sample application
Here is a simple sample application in github, where the Spring Cloud Gateway will dispatch 95% of the requests to version 1 and 5% of the traffic to version 2 of a specified service, as shown by the following figure.
spring: cloud: gateway: routes: - id: service1_v1 uri: http://localhost:8081/v1 predicates: - Path=/s - Weight=service1, 95 - id: service1_v2 uri: http://localhost:8081/v2 predicates: - Path=/s - Weight=service1, 5