We are almost at the fag end of 2017 and it has been almost 17 years since the Manifesto for Agile Software Development was published in the year 2001. Agile adoption has ever since remained the Holy Grail of project management, guiding software teams to embrace iterative and incremental planning and development methods, keeping continuous attention on quality. The focus has shifted to create early and demonstrate working model of the software to the stakeholders after each iteration thereby shortening the feedback loop and adapting faster to the changes as mandated by the customer or dynamics of a fast paced fiercely competitive industry. For each iteration or sprint, members from cross-functional teams take part in planning, analysis, design, coding, testing, and deployment to create a working version of the product. Thus, testing and operations team members along with coders get involved early during sprint run unlike traditional waterfall linear model where they have long waiting time.
Figure 1: Agile vs Waterfall Methods comparison (Source: Smartsheet Inc)
All of the popular agile methods like Scrum, Kanban or Extreme programming (XP) value the basic layout of the Agile Manifesto which proclaimed:
- Individuals and Interactions more than processes and tools
- Working Software more than comprehensive documentation
- Customer Collaboration more than contract negotiation
- Responding to Change more than following a plan
Thus agile delivery methods found favour with small teams although scaling up for large IT teams distributed across multiple locations had still remained a problem. Over the years the quest for faster and better quality of delivery combined with thrust to bring down rising costs entailed agile/lean industry leaders’ to come up with various new ideas and innovative methods. Modern approaches to agile methods stated four guiding principles:
- Make people awesome
- Make safety a prerequisite
- Experiment and learn rapidly
- Deliver value continuously
But all this indicated a shift in culture for all phases of SDLC (Systems Development Lifecycle). “Shift Left, is the right shift” was envisioned. The evolution of CI/CD (Continuous Integration/ Continuous Delivery) and rise of DevOps advanced this idea further.
Let us first understand what “Shift Left” means. Be it any methodology, all software/application development activities during an application’s lifecycle must involve the following phases:
Figure 2: Shift Left philosophy for SDLC phases
As we find from the above diagram, activities like testing, provisioning if done earlier and in parallel with development/coding can mitigate cost and time, assure quality early into the system.
Prepone, act early, shift left – DevOps prescriptive pills for SDLC pitfalls
The following points elaborate this concept further:
- A wrong set of Requirements or misunderstanding the requirements can make the project go haywire. So requirements should be properly managed and understood.
- With availability of requirements, Test Cases can be immediately created without waiting for coders to develop the code.
- Operations team can quickly provision IT infrastructure i.e. the staging and production server environments needed for development, testing and final deployments.
- Developers performing Code Quality Tests before committing codes to Code Repository can produce better quality of codes, eliminate rework and align them to desired benchmarks/standards.
- Codes once checked into Code Repository should be immediately integrated/built so that failed builds can be resolved quickly saving valuable man-hours.
- The built files should be sent immediately for integration and acceptance tests. Defects and issues identified early can certainly be fixed early, eliminate wait time thereby saving valuable man-hours.
- Relying more on Test Automation also eliminate wait time and manual hands off from routine jobs ensuring quality automatically.
- Building shorter feedback loops involving customers for acceptance tests, change requests and issues identification can result in quicker fixes saving valuable man-hours.
- Finally, continuous delivery resulting from production pipeline can produce frequent releases creating sustainable advantages over competitors.
But in the real world, all this is easier said than done because it not only involves shifting culture and mindset of people and processes but also involves managing a wide range of disparate tools used by different departments. It involves closer co-operation and collaboration among people/teams, tools and processes. Integration among tools, traceability between artifacts and above all mutual trust. A lot of DevOps specific tools for automation in areas of build, test, and infrastructure provisioning e.g. Chef, Puppet, Ansible, and Docker are already available in the market but then again there is no single tool that comprehensively covers all the functional areas. Kovair DevOps solution addresses this problem by integrating these tool environments through its flagship product Omnibus integration platform along with tool specific adapters and plug-ins.
What lies beyond Agile and DevOps?
With the advent of 3D printing, some manufacturing companies can become one-stop shop producing airplanes to safety pins, Google can extend its business as app cab aggregator with its fleet of driverless cars, and telecom giants can become entertainment hubs like Apple and Amazon. Certainly the late risers like Motorola, Nokia or Blackberry can lose the plot and fast become obsolete.
Although it is hard to tell but embracing 2018 the hyper-ride for financial success for technology companies shall remain in adoption, innovation and breaking of new grounds, creating new markets, ideating new products. And the path to achieve such success shall lie in embracing strategic and operational agility across organization, doing away with top-down bureaucratic style of functioning, embracing technological changes faster.
Acknowledging the fact that although rate of DevOps adoption has been a bit slow, yet the development community is anxious not only with Agile, CI/CD and DevOps but eagerly awaits to know the path ahead and what lies beyond. Even the concept of DevOps is not new and has been there since 2009 and only addresses their operational efficiency for software production and delivery. As for application lifecycle management and software, project management advent of AI and machine learning will create more room for automation, virtualization, containerization and moving all infrastructure away to the cloud shall become norm of the industry.
That One thing is for sure, the Shift Left philosophy is going to stay and succeed!
Very impressive DevOps blog. The content seems to be pretty exhaustive and excellent and will definitely help in learning DevOps.