Wednesday, February 6, 2013

Initial thoughts for a patch framework for a java based web project

Although this blog was not in the pipeline of feb month but I got a requirement to build a patch framework for a java based web project, so along with building this framework I thought of writing this blog as well so that I'll get idea from other people as well.

First of all I will talk about what can be patched using this patch framework, majorly it will be three resources/things that can be patched
  • Class Files
  • JSP's
  • Static Resources such as images, css, js ...

I'm thinking of adding few other features in this patch framework as well
  • Sequence of patches should be maintained : Since we have a big team around 80 developers working on same code-base, their may be a scenario that we can have two or more patches which needs to be applied to a target system. Their may be a fair chance that those patches have to be executed in a sequence or you can say their could be dependency among patches.
  • Validation while applying patches : One of the validation that I can think of is that the resources that have to be patched will be either new or existing one & in case of existing resources the system should verify the location at which resources are patched should already have those resources
  • Rollback : The patch framework should have rollback capability

I'm planning to build this patch framework using
  • Shell scripting : For programming aspect
  • Git : As a version control system for storing patches
  • Jenkins : Provide a front-end to user for applying patches
  • Mysql : Not so sure about it yet but I've to store few information such as what all patches are applied, sequence of patches.... I can use file systems as well for storing this information
Let me know your thought about  this framework or any other feature that you can think of

2 comments:

Anonymous said...

Why not use patching software e.g. Visual Patch or similar ?

Sandeep Rawat said...

We have to add some customization as well in this patching framework because in addition of simply placing content in web server we have to do few things as well. As an example whenever we apply a patch we will create a corresponding rollback patch automatically