Saturday, March 11, 2017

CICD Assessment

( A story on -  how we formulated a process around measuring and achieving CICD, and  how these journey lines has now become a means to cherish and celebrate our collective achievement as 'one team', with a very transparent and clearly defined objectives )

CICD is the automation of Agile!

Last year we had setup a dedicated team to improve the CICD abilities for various teams across our organization.  The overall objective was to - 'Improve the speed of software delivery by implementing CICD practices and processes".

Primarily we focused on :
  • Implementing repeatable and reliable software release and deployment processes
  • Automate testing(s), builds, and deployments
  • Get everything in source control (not just code! Including config and control files)
  • No post deployment manual steps!  (Enables one click rollback when needed)
  • Software is NOT Done until “released and accepted”
  • And all these , with a shared vision that  - all stakeholders  (i.e. Dev, QE, OPS, RM, RE) will demonstration  equal responsibility for the release process!

When we set out on this  transforming  journey ,  we also wanted to measure this progress for various teams. My friend  'Alison Gabriel-Reilly' reminded of this phrase  : “You don’t know when you’ve arrived, if you don’t know your destination”

We looked around and could not find any such tool which we could use  to measure this CICD initiative  and also to capture  this progressive journey line for diff teams.

Essentially , our  need was : 

  • We should have a comprehensive list of all applications , which has an active SDLC track. ( worthy to mention  - we are an IT organization and many apps are in contained mode or waiting for sunset )
  • Consistent, holistic view of the initial overall status of various  applications for CICD
  • An ongoing means to measure and its subsequent improvement ( Continuous Improvement)

We quickly designed and exposed an evaluation URL , basically an internal tool ,  with an underlying  process defined , that -- as soon as we take up any of such CICD implementation work for any team or app , starting point would be to assess the current state.

Now talking about this tool, this is what the initial screen looks like:

[ Landing page ]

With this flow , once an app is selected from the drop down , we render an expanded view of four key pillars of CICD i.e. 'Continuous integration' , 'Test Automation' , 'Continuous Deployment' and 'Continuous Monitoring'.

Many people debated -  how can monitoring be an integral  part of CICD. The answer was simple:  if my Pre-Prod is down , my build pipeline is stuck.  And frankly , not many organization pay a focused attention on monitoring their Pre-Prod environments ; and CICD pipeline primarily encompasses your  Pre-prod.  When we have a final production ready release candidate , its a 'release' or  a 'release program charter'  , which solicits  all party approvals for a go/ no-go!  Which is decision driven, rather than an automated build & deployment flow.

Again , coming back to the tool , these compositions are nothing but some very fundamental, inherent elements aligned to those broader individual CICD aspects as said above. And for teams -  this now becomes  clearly defined objective(s) to strive and then achieve them progressively towards that big  uber goal of CICD.

The composition screen looks like this:

[ Calculate CICD score ]

We also introduced a very fun and exciting  element in this whole process , that -   you potentially can earn a 'badge' based on where you stand. and we display it at the organization level.

[ Badges as per the CICD score range ]

We also have a quarter wise QlikView dashboard , which the leaders of respective group(s) can keep a track of  their own team's CICD status , their progressive journey line, and continue to encourage them further.. 

[ Org level view ]

[ Journey line graph - Quarter wise , for individual app ]

Here I wish to mention that -  this entire thing has now become a proven and well established process for our entire org towards an ongoing means to measure and then take up the subsequent improvement steps for those teams/apps -  who has been aspiring to be on the CICD orbit ( i.e. Continuous Integration , Continuous Delivery )

With this tool,  and with these underlying scores  , it is really allowing us to understand -     the current CICD status of those teams or apps  ,  clearly envision the end state, track the ongoing progress in the CICD  journey and collectively agree on ( and act!)  -  where to focus our time and effort  towards enabling these team(s) to achieve complete CICD.

With this established process , these CICD journey lines has now become a means to cherish and celebrate our collective achievement as 'one team',  with a very transparent and clearly defined objective.

Be agile , deliver continuously! 
 Thank you!!

CICD Assessment

( A story on -  how we formulated a process around measuring and achieving CICD, and  how these journey lines has now become a means t...