Saturday, August 23, 2014

Continuous integration and delivery

Continuous integration and delivery is a practice that allows software updates to be constantly incorporated into a product / module. It is generally done by implementing a source control system (such as git, cvs or tfs) and configuring tools (such as Cruise Control, Tinderbox or Jenkins) that automatically build code based on certain criteria (i.e. per check-in, hourly build, nightly build etc.).

Continuous delivery takes things a step further and implements scripts (or internal directives of the build tool) that automatically deploy the artifacts that we built on a different number of target servers, i.e. development, qa, uat. These scripts can vary from simple xcopy type of scripts to more sophisticated deployment scripts and even specialized deployment products when the number of targets is large (such as hundreds or even thousands of targets).

In the context of agile / lean development, the practices of continuous delivery and deployment play an important role as it delivers quick results to be tested by qa or even seen by the customer.

There is a lot of talk in the industry these days about continuous delivery and deployment. Here are a few reasons why:

- a lot of companies still do manual integration and deployments of their new features
- they feel manual integrations and deployments are prone to errors
- they think manual integrations and deployments are time consuming
- they realized that, for large size products and teams, manual integrations and deployments step on the break with agility
- there is a perception in the software development community that automatic back-end integrations and deployments are hard to implement or even impossible (which they are actually not)

We would like to spend some time and discuss a few continuous integration and delivery architectures we personally implemented with good results.

We will even take it a step further and describe a solution that automatically links the work items (as seen by qa) into the merged and deployed code.

And we will finally reveal the "magic sauce" (which really there is nothing magic about it) of continuous integration and delivery of back-end / database components.

Keep an eye on our blog as things will heat up soon.

Make it a great day!

Adrian Corbuleanu
Miami Beach, FL
http://wittymobileapps.weebly.com