“Only when the tide goes out do you discover who’s been swimming naked.” — Warren Buffett
The most important change in computing over the past 15 years has been the rise of cloud computing. The large hyperscale providers – I call them AMG, for Amazon, Microsoft, and Google – have been on an explosive growth curve and show no sign of slowing down.
To take one example, look at Amazon Web Services. As the chart below shows, it is now on a $60B annual run rate, which means it could be a $100B revenues business in 2023. Its competitors are smaller, but growing at similar or even faster rates. So cloud computing is perhaps a $150B business – with no end of growth in sight.
The question is: why there has been such a wholesale shift in where applications are deployed? What about cloud has made it so irresistible?
To my mind, the key reason cloud computing has grown so much and so rapidly can be found in the venerable NIST definition of cloud computing — specifically the very first cloud characteristic NIST states in its definition:
On-demand self-service. A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service provider.
Cloud computing makes resources available on demand — fill out a web form or submit an API call and infrastructure is available in minutes. It’s hard to overstate just how different that is from the infrastructure timeframes typical of traditional data centers. I recently heard of a shop in which the expedited VM provisioning process makes them available in 24 weeks — imagine how long the regular process takes!
Predictably, removing friction from the process of accessing computing infrastructure causes people to enthusiastically use more of it. Much, much more. That’s why Amazon has a $60 billion business growing at 30% per year.
There is just one problem: most enterprises don’t see any improvement in their software throughput despite infrastructure being available at the snap of the fingers.
And that’s where Buffett’s pithy aphorism comes into play. His insight is that a change in one condition can expose a shortcoming in another. In his industry, this traditionally means that when the business cycle ebbs, companies with too much debt get caught in a liquidity crunch and have to sell assets to generate cash.
Cloud Native and Accelerated Application Lifecycles
In the IT world, fast infrastructure access reveals lethargic software lifecycle practices. In the old days, that didn’t really matter. Taking weeks to get a new release put into production means little when hidden by 24 week ‘expedited’ infrastructure provisioning. Once cloud computing came into play, though, everyone sees that IT processes are ‘swimming naked.’
The question then became “How can I accelerate my application lifecycle to match the speed of my cloud infrastructure?” And you know who solved that problem? Cloud-native companies — companies built assuming rapid infrastructure availability with processes tuned to roll out software just as fast as a cloud provider could turn up computing resources.
Of course, these cloud-native practices didn’t just show up the day Netflix or Pinterest first deployed applications into a cloud environment. They were incrementally designed and implemented, improved over time to meet the demands of a digital-first business.
Over time, the cloud-native cohort has developed a set of best practices for lifecycle management, spanning the use of a sophisticated code management platform through to automated monitoring and management of application components to provide scale and resilience. Every process and milestone has been streamlined to provide fast, automated execution and enable touchless production placement once a developer’s fingers leave the keyboard.
The net result is that this cohort can deploy thousands of code changes into production each day.
The key to all of this is the relentless examination of the application lifecycle process for inefficiencies and improvement opportunities, all with the aim of removing any manual steps intruding into rapid code updates.
Now that enterprises are wholesale moving to cloud computing, they too will need to optimize their application pipelines. Many, of course, will resist that need, claiming that the constraints like regulation and risk management preclude removing human participation in the pipeline process.
They’re wrong. Companies like Stripe and Redfin operate in high regulation environments and seem to do ok. And my former company, Capital One, certainly qualifies as an enterprise, and it has adopted cloud native practices quite successfully — and achieved great business results to boot.
The need to adopt cloud-native practices will be all the more important as competitors embrace them. The cost advantages and revenue growth opportunities will make it imperative that enterprises become cloud-native practitioners; otherwise, they risk competitive disadvantage.
Best Practices for Cloud Native
So, what should enterprises do to adopt cloud-native practices? Here are some tips:
- Recognize that moving to the cloud is the start of a journey, not an arrival at a destination. One of the biggest mistakes I see in technology organizations is treating cloud computing like a data center at the end of a wire — an easy-to-access infrastructure that requires no additional changes in standard operating procedures. This represents a failure of imagination and not understanding that the logic of cloud computing extends well beyond convenient virtualized computing resources.
- Iteratively remove bottlenecks. I hope this piece has convinced you that getting the full benefits of cloud computing requires examining and streamlining the complete application lifecycle. It’s not a one-and-done process though. Just as cloud-native companies like Netflix had to incrementally improve their practices, so too will every enterprise. Removing one bottleneck exposes the next roadblock to full automation. Prepare for ongoing work and investment in your pipeline
- Don’t forget Day 2. Many organizations believe that getting code into production quickly is nirvana. It’s definitely a huge improvement, but remember that every application inevitably requires additional functionality, bug fixes, and security patches. Plan for ongoing streamlined deployments and application component updates. Also don’t forget your pipeline components and container platform. If you’ve implemented these elements of your environment via use of open source, the components and platform executables will themselves need to be updated and patched — so be sure to plan for their ongoing management.
Cloud computing represents a profound shift in the way infrastructure is used. What used to take months in preparation now is done by a cloud provider in minutes. It’s critical that you understand how comprehensive the changes implied by cloud computing are. Plan and execute a cloud-native plan to achieve real cloud success. After all, you don’t want the tide to go out and show everyone that you aren’t wearing a swimsuit!