The Trendy Phenomena in Tech

Nityananda Bashir
6 min readJul 31, 2020

Welcome fellow engineers! Welcome fellow people interested in technology! The following is Part I / III in a series of blog posts to inspire software delivery projects to practically implement the culture of DevOps. Here is a quick summary with links to the other parts…
Part I: Defining the term DevOps within the application lifecycle
Part II: Defining the culture of DevOps and describing its results
Part III: Practical actions you can take right now to start your DevOps journey

Lightning Summary

Defining the Buzzword

DevOps is a strange little term that many people like to throw around on projects, without knowing what it really means. Having implemented DevOps on a number of client engagements and worked in the industry for a few years now, this is the definition that gets clients excited to start their journey:

DevOps is a set of principles, a culture and philosophy that guides a complete development team to work towards a global business goal, enabling the team to create fast flow and feedback loops through the technology value stream.

So what does this mean in reality — there are even a few terms in that definition you might be confused about? Let’s go over this quickly.

  • Complete Development Team: Members from all aspects of the application lifecycle — architects, project manager, developers and security experts
  • Global Business Goal: A clearly defined objective that is valuable to the business and all areas of the application lifecycle are working to deliver
  • Fast flow and feedback loops: The team designs processes with automation and reliability as a primary focus and thereby continuously develop and learn
  • Technology value stream: The process required to convert a business hypothesis to a secure, robust and relevant technology enable service

Now that you know what all the components of the definition, go back and read through it with the new knowledge you have.

Keep reading if you would like to take the time to come on a stroll with me, we can walk the paths trodden by many engineers and envision a bright future together… Okay maybe that’s a bit too intimate, so if you want to read my story and the lessons I learned, then let’s begin.

We walk the path trodden by many engineers and envision a bright future together: Photo by Mohit Kumar on Unsplash

I work at a huge technology consulting company and if you would allow me to indulge, I want to make sure we are all on the same page regarding what DevOps is and what it means to implement it in a practical way.

What is DevOps all about?

The application lifecycle (as depicted below) is an essential foundation in defining DevOps. In my experience, this cycle fully summarises each stage in the lifetime of an application and the goal of DevOps is to close the feedback loop as fast as possible, i.e. make the cycle as short as possible.

The Application Lifecycle: Photo by neonrocke on Medium

A quick overview of what each of the stages mean:

  • Planknow what you are doing and what value it brings:
    Define the scope of the task that you are about to undertake. What is the end goal and what value will it add to the business? What are the inputs and expected outputs?
  • Codeconvert business logic into technical functionality:
    Write down the business logic and make sure you verify your understanding with the stakeholders, are you about to develop something that they want? Write your functions, scripts and classes that transform business into technical.
  • Buildcreate an artifact ready for testing:
    Get your code ready for a bunch of testing. With the defined inputs and outputs ensure that your functions are acting the way that they were designed, keeping away bugs as much as possible.
  • Testuse automation to verify the functionality:
    Run those unit tests, automation tests and UI tests with the goal of trying to break your code in any way possible. Remember that your users are going to come up with creative ways to use your application and uncover loopholes. Cover your bases as much as possible.
  • Releasecreate an environment agnostic artifact ready for deployment:
    Create a versioned package that is ready to be shipped to production. Does it need anything else before deployment, maybe certificate signing or Dockerisation?
  • Deployput the artifact in the wild with automation:
    Use Continuous Deployment (CD) to deploy your package across your environments, and maybe go fancy by using Infrastructure as Code (IaC) to create a new sandpit for your code.
  • Operaterespond to your application’s behaviour:
    Scale your environment or hosting platform according to the load that the application is experiencing or security breaches that might occur. Fight back against the Simian Army!
  • Monitorwatch the application as it performs in the integrated environment:
    Use watcher tools to keep an eye on your application performance and logs to ensure that you have not introduced any adversities elsewhere. Using this and customer feedback this can influence you plan for new items to bring through the technology value stream.

Therefore, the stages in the application lifecycle give the big picture of the projects that we undertake. DevOps aims to enable each stage to deliver faster uncompromising in quality and avoid becoming a bottleneck. How?

In the DevOps Handbook, I resonated with the way that the authors define the principles underpinning this way of working. Being analogous to Lean Methodology and Theory of Constraints in traditional production lines, DevOps is founded on a concept coined as “The Three Ways”… Sounds mystical and magical, and when I read more, I found it is. I will summarise what these principles are, and I recommend you delve deeper by reading their book.

  • The First Way: create fast flow from development (business) to operations (customer) by making all work visible, reducing iteration sizes and building quality to achieve the global business goals.
  • The Second Way: create unhindered feedback from operations (customer) to development (business) by detecting problems quickly, documenting solutions and building preventative fixes to grow a knowledge base where it is needed
  • The Third Way: create a high-trust culture that promotes taking risks in a measured way, shortens the feedback loop and celebrates success and failure to carry out experiments that can be delivered faster to the marketplace

Take a moment to reflect on what this means for your business when you implement The Three Ways into your application lifecycle.

In summary, these foundations of DevOps shed a light on two actions that are core to the ways of working:

  1. Create a feedback loop between the business and customer
  2. Shortening the feedback loop as much as possible

We can use the stages of the application lifecycle to identify areas where the feedback loop is lacking strength or automation and we can use The Three
Ways to bring the business closer to the customer by shortening the loop. Sometimes taking the time to stop… and listen can be the best thing we can do. That is how DevOps can deliver the greatest value for a business.

Take the time to stop… and listen: Photo by Maaria Lohiya on Unsplash

We have defined what each of the areas in application lifecycle are and alluded to how DevOps has an impact on all these areas. This knowledge sets the foundation for now learning about the culture of DevOps and most importantly what impact DevOps has on software delivery — this is always the juicy section! Read the next post here to find out more:
Part II: Defining the culture of DevOps and describing its results

--

--

Nityananda Bashir

A practitioner of Bhakti Yoga, a DevOps engineer and a student to deeper experiences of happiness. I share stories, thoughts and practical lessons.