title: How to manage continuous delivery with micro services?
body: <p>Right now we are working with Jenkins as our CI and CD, we are also using an Agile methodology (sprint). I was wondering how can I manage the releases of my software.</p>
  
  <p>For example we are developing a shopping site for a business. The development consists of an application which consumes 3 micro services.</p>
  
  <p>Components:
  <br>
  <br>
  Application: Is the user interface
  <br>
  Micro service 1: Sales
  <br>
  Micro service 2: Users
  <br>
  Micro service 3: Products 
  <br></p>
  
  <p>Initial state of the shopping site:
  <br></p>
  
  <p>We start developing the shopping site from scratch. As I said before we are working with an Agile Methodology (Sprints).</p>
  
  <p>Sprint 1:
  <br>
    - Develop products micro service.
  <br>
    - Develop users micro service.
  <br>
  End of Sprint 1</p>
  
  <p>By this time I can only apply micro service testing, like unit testing, contract testing, etc. Because I don't have the application ready I can't make end to end testing or functional testing based on the entire system, as well I can't deploy to UAT environment (show a beta version to the users) because the user wont be able to do exploratory testing. So for now I need to wait until the application and sales micro service is finished, so I can show the beta version to the user and apply any other type of testing.</p>
  
  <p>Sprint 2:
  <br>
     - Develop sales micro service.
  <br>
     - Develop application.
  <br>
  End of Sprint 2</p>
  
  <p>Now that all the components needed are finished to accomplish the user requirements, we can continue with the pipeline. applying  all the testing needed before we show a beta version to the user.</p>
  
  <p>So the million dollar question is, how would you do this scenario with Jenkins and GitLab?</p>
  
  <p>I understand that micro services should be independent to every component in the system, but at the end the entire system depends on each other, for example if I add a new micro service like "shipping", this new functionality should be seen in the application interface, so it means that before releasing the new system I have a dependency on "shipping" micro service and the application interface, because without both developments I cant fully test the user requirements before deploying to production.</p>
  
  <p>P.S. I'm sorry for any confusion in this post, but I complety new at this topic.</p>