title: Incremental deployment, why is that?
body: <p>So far, I've encountered different scenarios of deployment, at least three types.</p>
  
  <ol>
  <li>Full Build, Full Deploy. Like most of Java, .Net applications, have a Jenkins job builds the whole application and deploy the whole application. </li>
  <li>No Build, Incremental Deploy. Like Mainframe, Informatica, Vitria, even database, these types of applications, they only deploy files got changed.</li>
  <li>Full Build, Incremental Deploy. e.g. a not well structured Java application. The build generate total 7 jars, but only one of them is actually changed, and they want to deploy only this jar. Same for .net applications.</li>
  </ol>
  
  <p>After google, I believe the 3rd case is not following best practice and should be resolved at the application architecture level. <a href="https://stackoverflow.com/questions/917077/how-to-structure-partition-and-build-large-mvc-application-for-deployment-in-s">How to structure, partition, and build large MVC application for deployment in small incremental pieces?</a></p>
  
  <p>The 1st case, is simple. We take everything from the source control system, build it and deploy it.</p>
  
  <p>The tricky one is the 2nd. I have to generate a list of changed file in this build and deploy them. Any good experience on how to handle this well?</p>