Docker announced a collaboration with Amazon Web Services (AWS) to simplify the lives of developers by allowing them to focus on application development, streamlining the process of deploying and managing containers in AWS from their local development environment.
Businesses today are powered by software, yet many continue to fall behind when it comes to adopting modern, agile development and deployment practices that bolster business continuity strategy and fuel faster product-market fit. Software and application modernization plans need to include provisions for DevOps; ignore at your peril.
DevOps is a fairly recent term that has taken deep root within the application development and deployment community. Or rather, recent in the consciousness of those on the periphery of this transformation, as Patrick Debois is credited with coining the term as far back as 2009. But DevOps is usually lumped in with "being agile" and, sadly, misunderstood.
My goal here is for you to gain a great understanding of and realizing the full potential of DevOps. Once that is established, this will lead to a better understanding of the innovation and evolution enabled by DevOps, which I hope will inspire you to think of your own business or product investments in a similar light.
What Do We Mean by DevOps?
To the uninitiated, asking them to define the term DevOps usually conjures up descriptions of the legendary developer operations engineer, forever watching over the health of a SaaS application like an omnipotent god ready to take corrective action whenever anomalies are encountered.
To others, it is simply the newest job title of a build/release engineer, helping get code into production. And these descriptions aren't wrong, they are simply myopic — very small facets of the overall DevOps value proposition. The reality is that DevOps is a practice, designed to bring efficiency, reliability and predictability to the deployment of software.
The practice of repeatedly deploying reliable software is a long-term undertaking. That is, assuming your product is successful. But this is where the larger business problem looms. Every time software is deployed, it is incurring a cost of production. The time it takes from code complete, through quality validation, and into the hands of sales is time spent adding little to no value to the customer.
Yes, you may be providing your customer with a more reliable product through that process, but the customer already expected that. There is no incremental business value delivered beyond the implicitly set expectations. The longer and more inefficient that deployment process is, the more cost you incur that cannot be passed on to the customer, except in perhaps trivially competitive markets.
On the other hand, you can't just cut corners and reduce spend here. Deploying poor-quality or broken software is a surefire way to negate years of customer loyalty and goodwill. Over time this will drive up churn, and in worst cases scenarios, expose you to lawsuits, bad press and other business challenges. So, being efficient in the delivery of your software, while also delivering high quality products has obvious cost and loyalty benefits. But what else is there?
Frequent Customer Feedback Accelerates Product-Market Fit
You may have heard the saying, "release early and often," referring to the practice of getting frequent software updates in the hands of users, creating a tight feedback loop. This allows you to act on feedback sooner and iterate to a delightful solution rapidly. Due to the fact that you are releasing software updates more frequently, each release is smaller than if you batched it up into one larger release, as companies traditionally did. This translates into less surface area to debug when things do go wrong and being able to spot errors much more quickly. Without an efficient DevOps practice, this simply can't be done, hamstringing you versus the competition that can.
Faster Response Mitigates Disasters, Improves Customer Loyalty
What do you do when one of your largest customers logs a severity-0/production-down escalation? If you have a mature DevOps practice, your team can quickly deploy an environment that exactly matches the customer's, and immediately work on recreating and solving the problem.
When they've solved the problem, an update can be released quickly and repeatedly. Without a DevOps practice, the team can end up spending days trying to mimic the environment, and they may struggle to recreate the problem because of this. The fix will be delayed, urgency and tensions will rise, and tempers will flare.
Make Solution Discovery and Innovation Your Competitive Advantage
One of the hardest aspects of software is figuring out just how to delight the user while increasing engagement and overall traction. With a mature DevOps practice and a modern application architecture, you can deploy experiments into production for a subset of your users and measure the impact. You can deploy multiple experiments into production to different subsets and conduct multi-variant testing against them.
Facebook, for example, has hundreds or thousands of experiments running concurrently at any given time. The best software companies improve their product management practices by investing in a DevOps practice. They derive business growth from investment in DevOps.
Delivering the best platform on which to build mission-critical business applications requires supporting the latest innovations in software manufacturing processes. While I have simply touched on a few high-level benefits of DevOps, I hope it provides a quantum of value to someone, that some reflection is derived from it, and that it connects the dots between the technology and business impact.
Investments made in DevOps are investments made in automation and efficiency, in customer engagement and customer satisfaction, and in market research and data-driven decisions. If you believe these business goals are as important as I do, then an investment in DevOps is well worth it.