Build , Deploy and Test - Advanced Software Development Practice - Part 1

Being an Experienced Architect, Understand the pain of development of complex software development, development team pain points, which developed software being deployed into multiple platforms and being tested and certified.

Key Challenges of End to End SDLC and Ops Management:
#1 Efficient Software Development - Are we developing the work products with right quality with in expected timeline ?
#2 Continues Integration - All the source code (binaries) are compiled and checked time to time to avoid the breakages ?
#3 Continues Deployment - All the Source code is build and deployed specific to targeted Environment correctly?
#4 Efficient release Management - All the stakeholders involved in the process being aware, approved, released, feedback collected via controlled manner with in expected timeline?
All the above 4 sections are hidden factors which directly/indirectly influence the Cost of Ownership or Cost to the Project.
Any Experience software professional who can identify the bottleneck of Cost/Resource are not being utilized properly. This is the usual finding on any un-matured software practise at any Small or medium or Large enterprises.

How to Mitigate the above challenged and control the Development and Ops Cost?
Answer for the above question is "Automation". But how? Lets read the below items to understand meaning of Automation specific to "DEVOPs".
Most of the IT industry work on "Automation" to improve or reduce the cost being utilized over Technology Development and Operation using Efficient Tools with the customization specific to environment.
The solutions being available via Property vendors as well open Sources.
What are the Available Solutions to overcomes this?

Continues Integration: CI and Build Automation
Continues Integration is the Concept which will be explained as part of XP (Agile Extreme Programming). CI will go hand-in Hand with Test Driven Development.
Continues Integration means that the source code being checked-out from the software source control and compiled automatically, applied the code review, checked the code coverage , applied unit testing, applied coding naming conventions and docs and generated the builds, published the Generated builds and Reports.
The above item can be achieved via standard Build plan Process (Nighty build, daily/weekly SIT builds, Manual UAT Builds and Product Builds).

There are Open Source framework such as 'Crouse Contro'l or 'Jenkins' which is facilitate the CI implementation.
For Java,
CVS, SVN, IBM Clear Case etc being used as Software Source Control Management software. This SCM will be integrated with CI Servers.
CI Servers will have Master and Slave setup based on Environment specific build generation
JUNIT/EasyMock can be used for Unit test regression framework development.
Corbatura Plugins can be used as Code Coverage.
Checkstyle Plugins can be used for Java Naming Convention automation
FindBugs Plugins Can be used for Code Review automation.
All the above plugins can be integrated via CI Build projects scripting and controlled via Ant or Maven build scripting.
Both Successful and failure build generated via CI will be notified to the respective Email Distribution groups over SMS/Email as a feedback messaging channel.
The above process called Build Automation.

Continues Deployment:
The builds are generated for various environment specific to configured targets.
Assume the targeted environments are SIT1, SIT 2, UAT1, UAT 2 etc which has multiple layer in-between. Example each targeted environment has Web, App, Middleware, Database etc.
The Release packages consist of
- SQL Scripts
- XML
- Property files
- Jar,war, ear files
- Configurations
The major pain point of release automation along with continues deployment is taking the back-up of old package, release /install new packages and re-boot the targeted servers .
All needed an utilities specific to each environment which can invoke the ant, python or shell script which is the kick-off script for automated release management.
Eventually this utility tool consist of the below items
- Backup the list of files and builds
- Release / install new builds
- Configure new items
- Bounce servers/services
- Notify the respective people or systems
- Roll-back the above procedure ...incase if something goes wrong
- Tracking and Monitoring of each activities
- Dashboard for the above activities along with Maker and Checker.
All the above items called as "single click deployment" release automation . this is not easy steps for corporates since the complexity lies on different products (release, build, cots product) , people, technology, process approvals involved in this.
Corporate now days concentrate on buy vs Make decision to optimize their DevOps.
If you decided to buy then there are couple of options available in the market like CA Technologies, Nolio, Urban, RedGate etc
If you decided to build by your own experts then you wish to choose Jenkins, Docker, puppet, Cucumber etc

Continues Release Management:
Each corporate has own release management procedure which involve the below items when you consider for automation of Release Management.
- Version control
- Branch and merge strategy Software configuration management
- Tagging of release package
- Backups and binary management
- Different approval required for each environment (Web, app, db,eis)
- Different deployment mode for each environment (web,app,db,eis)
- Release manager,project manager, system engineers handshake via third party release management tools such as "Serina dimension CM"
- Maker/Checker Process on those CM (Configuration Management) vs (Release Management)
- Change Control for each CI Item
- Knowledge Management for Knowledge Sharing on Release Notes, step of configuration.
- Etc

All the above knowledge's are cater into different people with in enterprise. The whole offline /online process might take a few hours to week/moth based on the complexity of releases and work product involved.

"Welcome to the world of Automation" - Lets learn more complex world of IT and Software management groups works later in this blogs.

About Author / Additional Info:
Thanks
Ramu Arivuvel
Senior Architect