The CI/CD and DevOps Blog

Q&A with Adrian Mouat, author Of 'Using Docker'

Our very own Pavan Belagatti recently chatted with Adrian Mouat, the author of Using Docker. Read on about what he has to say about the book, the future of Docker, and DevOps...
 
 
[Pavan] Hey Adrian, thanks for taking the time to chat with us. Can you introduce yourself to our audience?
[Adrian] I work for a company called Container Solutions whose mission help companies transition to the new "cloud native" world of containers, orchestrators and microservices. My title is "Chief Scientist" which means I'm responsible for investigating and developing software designed to help companies adopting cloud native. A lot of my time is also taken up providing training and speaking about cloud native technologies such as Docker.
 
[Pavan] When did you become passionate about Docker? What is the story behind it?
[Adrian] At a previous company, we started using Docker and running a Docker meetup, where we realised its huge potential. It enabled us to rapidly iterate on a few projects we were playing with, which would have taken far longer with VMs or other approaches.

Why DevOps Efforts Fail

[This article was originally published on SDTimes as a contributed article.]

The main goal of DevOps is simple: ship software updates frequently, reliably, and with better quality. This goal is somewhat 'motherhood and apple pie', and every organization will agree that they want to get there. Many will tell you they've already embarked on the DevOps journey by following some commonly followed frameworks, such as CALMS

However, very few will express satisfaction with the results. After speaking to 200+ DevOps professionals at various stages of the adoption lifecycle, we found that organizations generally fall in one of 3 categories:

We were most interested in groups 2 and 3 since they were actually in the middle of their DevOps journey. When asked to better explain the challenges and roadblocks, here is what we found:

  • 68% said the lack of connectivity between the various DevOps tools in their toolchain was a very frustrating aspect.
  • 52% said a large portion of their testing was still manual, slowing them down 
  • 38% had a mix of legacy and modern applications, i.e. brownfield environments. This created complexity in terms of deployment strategies and endpoints, toolchain, etc.
  • 27% were still struggling with silo'ed teams that could not collaborate as expected
  • 23% had limited access to self-service infrastructure.
  • Other notable pain points included finding the right DevOps skillset, difficulty managing the complexity of multiple services and environments, lack of urgency/budget, and limited support from executive leadership.

Let us look at each of these challenges in greater detail.

4 Trends Driving DevOps Adoption

There has been a tectonic shift in the way we build, deploy and run applications. What started with cloud infrastructure has now created a revolution in IT organizations. As organizations realized the importance of continuous feedback loops, it created a need to ship software updates as fast as possible and brought in a culture of collaboration where everyone works as a team and not as a member of a silo.

This is fundamentally due to the DevOps movement. The word itself derives from “Development” and “Operations” and is all about removing barriers between Software Developers and Operations engineers and enabling better collaboration between the two. It also focuses on automation as the primary way to make software delivery lean and measurable.

DevOps is gaining rapid adoption due to some macro trends in the software universe: 

  1. Software Defined Hybrid Cloud
  2. Web-scale Requirements
  3. Modern application architectures (micro services, functions) 
  4. Containers 

NEW: Debugging with SSH (And Why We Don't Like It)

I am very happy to announce that we've launched a frequently requested (and internally controversial) feature: the ability to SSH into build machines to better debug your CI/CD jobs. I say controversial because being a team of over 20 strong minded people, each person had a distinct opinion on the merits and demerits of debugging with SSH. 

The merit is obvious, debugging is much faster when you can see what's happening on the machine. You can print out the environment, or see what happened to a particular container, look at CPU/memory utilization, or even change the configuration of a test database to see if that helps your failing tests. 

However, our team has made a conscious decision to disallow SSH access for our developers for two main reasons:

  • It doesn't encourage a mentality of 'designing for failure', for example, adding sufficient logging or making sure you can collect the information you need without needing access to the machine. You're not going to have access to Production machines, so avoiding SSHing into Test machines will build the discipline of designing for failure, rather than just reacting to failure.
  • Making ad-hoc changes to the machine environment results in environment drift and often, these changes aren't documented or really applied in all environments. Making it work on one Test machine isn't the goal, the discipline needed to then propagate those changes to all environments and reconfigure them is sometimes missed, which means your job will just fail again when your code change reaches the next environment.

Regardless, many of our customers still wanted this feature, so we're happy to launch it today. 

Before we dive in deeper, you need to know that SSH access is only available for paid accounts. 

Moving Up The DevOps Maturity Curve

“I don't get no respect”
       - Rodney Dangerfield.
Most DevOps automation engineers probably feel the same way Rodney Dangerfield did. While they work hard to make CI/CD frictionless and ship applications faster than ever before, other principles of DevOps like culture and collaboration get much more attention than automation. Organizations expect DevOps to help accelerate software releases and ship better quality products, but they often underestimate the time and investment that is needed to implement the automation that will get them close to the nirvana of Continuous Delivery.
 
There is a reason, however, why automation has failed to capture the attention of the DevOps community: relative to the other aspects like culture and collaboration, automation tooling is a laggard and hasn't matured to a point where it can help accelerate the evolution of the process of shipping software from craft to industry. Simply put, automation tools available today are too primitive and are on the lower end of the maturity curve.