Sunday, 30 September 2012

Build & Release Challenges : Manual DB Updates

The first problem that I'm gonna discuss is manual db updates. In our current application we do have automated DB updates execution in the production environment, but not in the rest of environments i.e dev, qa, stage, performance test ... etc.

The process that we use for automated scripts execution in production environment  is that we create a release folder, this release folder contains all the sql scripts for the release along with a meta file. The release meta file contains the list of all the scripts that needs to be executed, the current system reads this meta file & executes all the scripts of release. This process is fair enough for production system since the release is deployed only once on production system. In production systems we don't have to track whether a script got executed or not i.e all the scripts execution is treated as atomic that is either all the scripts are executed or none is executed.

The drawback of atomic execution is the reason because of which this approach can not be applied to rest of the environments, since the db updates will always be incremental in rest of environments. In case of all other environments apart from production environment the release will be deployed multiple number of times, with each release new db scripts can be added  to the system and only those new scripts needs to be executed.

The new system that I'm trying to develop will have incremental db update capability. The system that I'm planning to deveplop will have following characterstics :
  • It should be able to keep track of script name for later reference.
  • It should store the release mapping to which this script belongs.
  • The sequence of the script to enforce the order of execution.
  • The system should also maintain whether the script is already or not.
  • The system should be able to handle error scenario i.e if a script execution fails a corrective action should be taken by the system
  • It should be extensible enough so that various kind of reports can be generated from it
In the next blog I'll be talking about the actual system how it is built

Prev
Next

    Friday, 28 September 2012

    Build & Release Challenges : Problems

    So here is the consolidated list of the problems that current system have, I've categorized all the issues in different categories so that they can be managed properly

    • CI Builds
      • Code stability builds are not in place
      • Code quality builds are not in place
      • Code deployment builds for non-prod environments not in place
      • A lot of manual steps in prod deployments
      • All the projects are performance critical so builds to do profiling of projects
    • Database updates is manual at all the stages of deployment
    • Automated smoke testing of all the applications
    • Integration of bug tracking system with version control system
    • A release server needs to be set-upped so that release can be managed properly
    • No documentation at all :)
    • Version Control System : We are using git as version control system
      • Branching strategy has some flaws as a result of which merging takes a lot of time
      • We don't have a GUI to manage git server
    Prev                                                                                                                  Next

    Build & Release Challenges

    I was planning to write this blog 2-3 days back in fact not a blog but a blog series & this blog will be the starting of this blog series. This blog will only give you an overview what I'll be discussing in the coming blogs, first the reason why I'm writing this blog :) well the reason is I've changed the job :) and I'll be working as a Build & Release manager. The challenge that I've have is that right now their is very little or no streamlined processes defined for build and release and obvious very less automation so I've to work on these things. This means that in the coming blogs I'll be discussing various problems that I'll be facing & how to overcome that.