title: Spring Cloud: Canary Deployments with Zuul
body: <p>I am getting started with Spring Cloud using Eureka and Zuul and had some questions around structuring blue/green and Canary deployments. So far, I have the basics worked out and have Eureka, Zuul, and a config server working as expected. What I am trying to accomplish is set up a service that has two versions, say 1.0 and a 1.1. For a subset of specific users, I want to route them to the 1.1 version and everyone else should go to the 1.0 version. </p>
  
  <p>The Zuul filter API is a little light on documentation and I'm struggling a bit to grok some of the concepts, so I thought I'd ask a few questions here. I have also have some basic filters running, which don't do a whole lot a the moment other than getting the identity of the principal and the service they are requesting. Where I am hitting a wall is understanding how to expose two different versions of the same service to Eureka and Zuul. A few things I'm curious about:</p>
  
  <ul>
  <li>Between documentation, posts, and other stack overflow, the term "service" and "cluster" seem to be used interchangeably. Is this correct?</li>
  <li>With that said if I have a service named <code>/simpleservice</code> do I expose two different serviceIDs (i.e. <code>simpleservice</code> and <code>simpleservice-1.1</code> )? And If I do that, when one of the targeted users requests <code>/simpleservice</code>, I'm having Zuul send them to <code>/simpleservice-1.1</code></li>
  <li>Or, do you add another node to the existing service ID and add additional metadata to each node so that Zuul and distinguish versions 1.0 and 1.1?</li>
  <li>Is the correct answer "all of the above?" :)</li>
  </ul>