Thursday, October 6, 2016

Continous Integration - A Snapshot


Continuous integration is an agile software development practice which facilitates in integrating the software changes frequently, stabilizes the product though auto building & self-testing builds, and uses rapid feedback to resolve the integration issues faster. The goal of continuous integration is to produce a working build as fast as possible.

A software change has been costly and risky exercise in traditional waterfall practice for many cases due to following reasons mainly –

1. Insufficient testing
2. Bug/issue detected in later stages of the project execution
3. Infrequent commit & difficult integration
4. Inflexible code base & poor version control

Development team integrates its work frequently, usually daily in continuous Integration – an agile practice. This leads to multiple integrations per day. Each integration is verified by auto building & self testing builds to detect any build error and issue with existing functionality of the software. This approach has reduced the integration problems of traditional waterfall model significantly and allowed a team to develop cohesive software more rapidly due to following reasons mainly –

1. Automated and continuous testing happens
2. Issue are detected early and addressed early
3. Regular release with better frequency
4. Better visibility of the project

Key practices of continuous integration are –

1. Maintain a single source repository

This practice facilitates auto building & self-testing of the build which leads to faster integration.

2. Auto building & self-testing builds

Build & automated testing tools are used to enable frequent build & subsequent testing and thus maintaining a clean code base by eliminating human errors.

3. Everyone in team commits everyday

This helps in testing the code development early and detecting the issue early.

4. Fix the broken build immediately

This is a very important practice needs to be maintained as a discipline. It helps faster release.

5. Notify build result to everyone in development team

Everyone is on the same page and team works in a synchronized manner.

6. Automated deployment

Eliminates human error and enables faster release.

CI Tools

There is a long list of CI/DevOps tool used across the CI/DevOps practice in software development. Some of the commonly used are –

FunctionTools
Source code ManagementGit, Github, SVN, Perforce, TFS
Build Tools Ant, Maven, Gradle ,MSBuild
Code Quality AnalysisSonar, Coverity, Fortify
Continuous IntegrationJenkins, TFS, TeamCity, Bamboo, CruiseControl
Automated TestingSelenium, Jmeter , Cucumber
Configuration ManagementPuppet, Chef, Ansible
Continuous Deployment TooluDeploy, Liquibase
Continuous MonitoringSplunk, Nagios, Hygieia

No comments:

Post a Comment