DevOps 101 & its relationship with Digital

DevOps 101 & its relationship with Digital

Digital at its core is driven by innovation and agility. Innovation to generate new ideas and agility for faster creation of value to end users by faster delivery of the idea, faster feedback loop and faster course corrections before getting too far in wrong direction.

This agility facet of Digital at the top end means faster GTM and at the bottom means more changes hitting production systems with increased frequency. Traditional development process and application architectures act as a hurdle in meeting these demanding needs.

In the following sections we will dive deeper into the challenges posed by the current needs and how DevOps helps in overcoming them.

Development Process

With the deployment frequency increasing to few times a week for example, the traditional approach of Knowledge Transfer (KT) to operations Team by Development Team at end of development cycle is not viable and does not guarantee effectiveness. On the other hand to develop new features many new developers will be on boarded to the project. Time pressure to have new features in production does not guarantee adequate KT of the application knowledge from operations team to the new development team or even between developers.

The resultant challenges that these circumstances impose on each of the stakeholders is outlined in diagram below.

So, can these problems be solved without compromising agility?

DevOps overcomes all of these and enables agility by means of

  • People and Processes - Collaborate for success
  • Automation - Accelerator
  • Application architecture - Designed for agility

People and Processes - Collaborate for success

Reimagine the challenges outlined in the diagram with the below changes:

  1. Member(s) of operations team is partially made available to the development team and is responsible for the success of the project.
  2. Member(s) of the development team support the new changes for a fixed amount of time post go live.

Operations team now understand the new features, understand how to troubleshoot - where to look for and what to look for and essentially are more confident of the new changes as following:

  1. Guiding developers and making sure that Dev/QA environments used for development are close to production.
  2. Based on the modules undergoing change, they make sure that regression test cases cover all the impacted modules.
  3. Highlight known performance issues to the developers and making sure that the new changes improve the performance or worst case further does not deteriorate the performance.
  4. Make sure that there are adequate logs necessary for troubleshooting by providing feedback to developers.
  5. Make sure that code conforms to the project specific guidelines.

Development Team is more empowered with existing knowledge that enables them deliver product that works as expected in production the first time it's delivered.

  1. Gathers all necessary information about existing functionality from the operations team member who are now part of the project.
  2. Receives review comments from operations team member all through the development life cycle and thereby eliminating last minute feedbacks during deployment.
  3. Receives feedback about hardware deficiencies that helps in more informed hardware design eliminating issues post go live.
  4. Develops tools and techniques to make life of operations team more easier.

These process and people changes enable the objective of agility.

These changes still do not guarantee all the needs of agility without automation of time consuming and repetitive processes of build, testing and deployment.

Automation - Accelerator

There are a number of tools that automate build, testing and deployment processes. A simple search of continuous integration (build automation), continuous delivery (test automation) and continuous deployment (deployment to production automation) yields a lot of good links. Hence not detailing the tools aspect of DevOps in detail in this article.

Now that we have a robust process covering both people and practices accelerated by tooling, could we achieve agility if the application architecture follow old practices? Definitely NOT.

Application Architectures - Microservices replacing Monolithic Applications

Advantages of traditional monolithic applications are

  1. Easier for new developers to understand the application as there are no distributed components.
  2. Easier to develop, deploy and scale as all that needs to be done is in one single application.
  3. Better performance as there are no external calls as all that is necessary for the application to run is present within (except for database calls of course).

With increase in the size of the application each of the above advantages grows into a disadvantage

  1. Same app becomes difficult to code as there are multiple developers who touch the same app at same time.
  2. Deployment becomes riskier as for even a small code change the entire app has to be deployed.
  3. Selective scalability (scaling a particular feature for eg., selective scaling the electronic products section in an e-commerce app is not possible) becomes impossible as we have to deploy the entire bulky app.
  4. Performance starts to deteriorate due to size of the application.

Before understanding how Microservices application architecture addresses these challenges, let’s get on same plane on - what is it?

Each microservice is characterized by

  1. Single purpose
  2. Completely independent
  3. Each service is a small self contained independent piece of functionality that can be independently developed, tested and deployed

Microservices hence brings in below advantages and helps achieve higher agility

  1. Easy to develop
  2. Easy to deploy
  3. Scalable
  4. Fault and resource isolation
  5. Polyglotism

Below disadvantages of micro services seem minuscule when compared to the advantages it brings.

  1. No code reusability
  2. Inter process call overheads degrade performance
  3. Memory and compute overhead as each service runs as its own instance

With this we saw how DevOps with its people and processes, automation and application architecture enables organizations to deliver new ideas with agility that is key to their success and existence in this rapidly evolving business arena that revolves around users.

Thanks for reading and hope it was useful !!!

Thought provoking blog regarding Digital Transformation trends which help me better understanding about DevOps 101 & its relationship with Digital

Like
Reply

To view or add a comment, sign in

Others also viewed

Explore content categories