I am curious to know what are the popular production deployment system i.e. popular ways in which things are moved from test/qa sandbox and final releases are pushed into production available to be used. I have heard of things like autosys,vcs,zapp. Are these industry standard production deployment systems? What do biggies like Google,Microsoft,Yahoo,Amazon etc use?
closed as off-topic by HopelessN00b Jan 25 '15 at 6:32
This question appears to be off-topic. The users who voted to close gave this specific reason:
- "Requests for product, service, or learning material recommendations are off-topic because they attract low quality, opinionated and spam answers, and the answers become obsolete quickly. Instead, describe the business problem you are working on, the research you have done, and the steps taken so far to solve it." – HopelessN00b
locked by HopelessN00b Jan 25 '15 at 6:33
This question exists because it has historical significance, but it is not considered a good, on-topic question for this site so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. See the help center for guidance on writing a good question.
Read more about locked posts here.
One tool used widely at Yahoo is pogo, which is a massively parallel ssh-based execution tool. It can be used to invoke commands in parallel on thousands of machines at once. Pogo also contains a constraint mechanism to say things like "only run on 20% of this type of server at once". There's also a pre/post hook and recipe mechanism in pogo to perform custom check and command before and after a push. One way this is used frequently is to run health checks which verify that services on a machine come back up after a software push.
A similar tool that others use is Capistrano. I don't know a lot about it but that tool gets mentioned a lot.
Many people use the remote execution facility in their configuration management tool to accomplish this task as well. This can be done for example with Puppet or Cfengine or Chef. Those solutions tend to work ok at smaller scales. At larger scale (thousands of servers) you should really look in to a more specialized tool like the ones I've mentioned above.
Of course you can also use tools like ClusterSSH to accomplish tasks like this, although I recommend against that approach because it's not really scriptable or repeatable.