Tuesday, September 1, 2015

Kanban & DevOps - Forming a Perfect Alliance

Introduction 
"It is not the strongest of the species that will survive, or the most intelligent. It is the one most adaptable to change.” - Charles Darwin

As Organizations are going through a disruption phase including disruptive innovations with processes and technologies, there is wide adoption of Agile based transformation. In the context of the transformation, there is no better time of coming together of DevOps and Kanban, both of which enable Organizations to be more Agile in delivering services to their customers. 

What is Kanban?
Kanban is one of the lightweight Agile based methodology, which is based on Just-In-Time (JIT) software development. In Kanban based SDLC, the process from requirements of a task to its delivery to the customer, is visualized and team pulls work from a work item pool or queue. 
Kanban is based on simple 3 principles including
  • Visualize Work In Progress (WIP)
  • Limit the WIP
  • Maximize Productivity (by minimizing lead time)
Engineering team does not have time constraints in Kanban while focus is on making sure the work keeps flowing by limiting maximum number of features or issues, which can be worked on at a given time.

What is DevOps?
DevOps formulates collaboration of Operations and Engineering teams to achieve continuous delivery by participating together in the entire service delivery lifecycle.
While the Engineering team remains focused on
  • Analyzing,
  • Designing,
  • Coding 
  • Testing and
  • Production Support
of new services, the DevOps team combine together for
  • Release management,
  • Provisioning,
  • Configuration management,
  • Systems integration,
  • Monitoring & control and
  • Orchestration
of the new services

How Kanban & DevOps Match Perfectly?
Kanban and DevOps combine together to help bring down the silos between Engineering and Operations teams. Basic principles for Kanban and DevOps remain common in terms of
  • Collaboration,
  • Cooperation,
  • Communication, 
  • Integration and 
  • Automation
while bringing in transparency across the board. Managing a Kanban board provides the level of transparency in visualizing items in each of the work streams while formulating cooperation between teams by communicating dependencies, integration points and identifying items for automation.
A typical Kanban board could have items in following work streams
  • Analysis
  • Design
  • Coding
  • Testing
  • Operations (Automation, Integration, etc.) and
  • Production Support 
providing the visibility on high priority or expedite items while also sharing the respective status of to do, in progress or done items.  DevOps with Kanban maximizes the productivity with efficient delivery by 
  • Reducing the overall cycle time of delivering services to end user 
  • Identifying bottlenecks with items that are taking a long time in a work stream 
  • Improved tracking of effort and associated costs
  • Identifying recurring work that can be automated 
  • Providing visibility to the end users of when services would be actually delivered 

Summarizing
Primary objective of Kanban is combining productivity with efficiency in developing services while primary objective of DevOps is to achieve continuous delivery by continuously integrating the services developed by the Engineering team and delivering those services with high quality. In summary, embracing Kanban and DevOps allow Organizations to introduce new services more often in a more stable environment. I would be sharing more information in next blog posts including best practices, tools and case studies corresponding to Kanban and DevOps. Meanwhile let us know if you have any questions or comments. For any questions, please reach out to me at sri_ped@yahoo.com