Submit Articles A Collection of Informative and Interesting Articles  
 
HOME LOGIN SUBMIT ARTICLES TOP AUTHORS WANT AN ACCOUNT?
 

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

BY: Arivuvel Ramu | Category: Technology | Submitted: 2014-12-22 07:40:35
       Author Photo
Article Summary: "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..."


Share with Facebook Share with Linkedin Share with Twitter Share with Pinterest Email this article




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

Comments on this article: (0 comments so far)

Comment Comment By Comment Date

Leave a Comment   |   Article Views: 3043


Additional Articles:
•   Looking Back at the NFL Preseason Drama

•   God Loves us a Lot

•   What is Procurement?

•   Ideas Retailers Can Use For Increasing the Scope of Online Business


Latest Articles in "Technology" category:
•   Security Robots on Patrol

•   Apple Pay Overview

•   Enterprise Mobility - Overview Part 1

•   M-OTA: Mobile 'Over-The- Air' (OTA) Overview

•   MDM: Mobile Device Management Overview

•   3M MAC Protocol Review

•   Test Driven Development Methodology (TDD) - Part 1



Important Disclaimer: All articles on this website are for general information only and is not a professional or experts advice. We do not own any responsibility for correctness or authenticity of the information presented in this article, or any loss or injury resulting from it. We do not endorse these articles, we are neither affiliated with the authors of these articles nor responsible for their content. Please see our disclaimer section for complete terms.
Page copy protected against web site content infringement by Copyscape
Copyright © 2010 saching.com - Do not copy articles from this website.
| Home | Disclaimer | Xhtml |