I watched this question, hoping that someone would come up with a smart answer. Since they did not, I think that I will sort out my feelings about this.
To my knowledge, there is no existing tool to automate these types of deployments, and I assume that since there are so many different scenarios. At a minimum, you have:
- One dev server, where it simply copies the WAR into place and restarts the application server.
- One production server where the process is similar, but you do not want the process to disrupt your users. Considerations here include storing session data for a restart and planning for a limited time restart for a while.
- A small cluster in which you have load balancing on many nodes. Now things are really getting complicated. You can use various LB tools (HA Proxy, NGINX, Amazon Elastic LB), and if you care about your user experiences, you need to coordinate a rolling restart of application servers. Also causes the migration of any session data between nodes.
- You have a large cluster consisting of small clusters in different geographic regions. Here you are dealing with C # 3 +, which configuration should be done for coordination between regions.
I believe that 1 and 2 would be easiest to find a common tool, and if these were the only situations I had to deal with, I would probably just decompose Jenkins along with the application. It can be easily configured using the git branch, when changes occur, build code and restart Jetty. By the time you get to 3 and 4, I think that the number of different tools involved and the need to coordinate them exclude any standard solution. I donβt think this is just a problem in the Java / Scala world, as I have seen reviews from the Github people on the custom tools that they created to control the deployment of their Rails application .
As for Puppet, with a caution I have never used, it seems that this may be a useful tool for this type of process. You will need some kind of central coordinator to work with the cluster, and I believe that Puppet can help with this.
source share