title: Dynamic Scalable and adaptive architecture
body: <p>I am a PhD student in Cloud Computing, I plan to use the microservices based architecture with consul and zeromq for my research project. I had few questions that I am finding hard to understand. Can someone help me out in sharing their experience.</p>
  
  <ol>
  <li>We have microservices based on dockers, We have zeromq and we have consul. Can you mention how we could combine all the three together to have a dynamic adaptive environment? </li>
  </ol>
  
  <p>Though I understand as to what zeromq, docker and consul is individually, I am still unable to get a clear picture of how all of them function as a whole.We have docker containers having microservices running inside them on a host. We use zeromq for transport (Pub-sub/pipeline) of messages between docker containers. The containers may be running on the same host/datacenter or on different hosts/datacenters. We then use consul for service discovery.Is my understanding correct here? </p>
  
  <ol start="2">
  <li>How does the architecture dynamically scale up/down according to workload? </li>
  </ol>
  
  <p>Say, I have a situation where I need more worker nodes for a particular computation for sometime. Who spins up more number of worker nodes. Which component determines/takes this decision? </p>
  
  <p>Is there a scheduling component? If so, can someone briefly explain how it happens or which component performs that function?</p>
  
  <ol start="3">
  <li>So, what is the major role of consul? Is it used just for service discovery?Can it be used for configurations as well. If so, whats its limitation? </li>
  </ol>
  
  <p>I see that even zeromq has service discovery mechanisms, so why do we require consul? </p>
  
  <ol start="4">
  <li>How does a failure of a node information gets propagated in the architecture? Which component is responsible? Is it just consul ? Or zeroMq also?</li>
  </ol>
  
  <p>Please advice.</p>