Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to deploy web apps in the agile way [closed]

What is the best set of practices and tools that could support me in the continuous deployment of an web application?

We should be able to deploy effortless several times a day.

It is a Ruby on Rails 3 app. We use Git and Github.

like image 264
Nerian Avatar asked Oct 13 '22 20:10

Nerian


1 Answers

What is the best set of practices

I am assuming you are trying to be agile here. You trying to derive a set of best practices for deployment is a little scary. For that matter, any sort of list of best practices for an Agile Team is scary. If you carefully study Agile, you will realize that it requires the Team to inspect and adapt and continuously improve, the moment you think that your Team has found the "best practices", you by default agree that you can stop improving and hence stop inspecting, adapting, and improving. Mike Cohn, author Agile Estimating and Planning, suggests that an agile team should not come up with a set of Best practices, instead it should continuously improve, by inspecting and adapting.

To give you some constructive feedback, here are some of the practices our Scrum Team followed, which we ourselves figured out by inspecting and adapting our own deployment process. I will add information about our source code checking in practices along with deployment as well.

  • Every time a developer checked in code, Hudson-ci used scm poll trigger and automatically built and deployed code to a development enviroment. It sent appropriate notifications of success or failure via email.

  • There was a nightly build in the development environment which was triggered by Hudson-ci automatically every night.

  • After the features were ready and preliminarily tested in Dev environment, the QA on the team triggered a Hudson-ci build and deploy to the integration server, where the features could be integration tested. The Integration environment was an exact replica of the Production environment.
  • Production deployment were usually done using Hudson again based on the release plan.

and tools that could support me in the continuous deployment of an web application?

There are several CI tools out there. My favorite out of the lot is Hudson-ci. Others are Continuum and Cruise control. But I think Hudson is the most versatile and easy to use tool, and because it has community driven plugins it will be very easy for you to find a plugin for git, and ruby on rails apps to fit in.

like image 156
sjt Avatar answered Nov 01 '22 09:11

sjt