Cloud for Mountain Goats
Design cloud deployments for maximum business value from the ground up.
There is a classic old Far Side cartoon where a pilot questions why there’s a mountain goat up in the cloud.
While it’s highly unlikely goats will invade a cloud datacenter anytime soon, digital leaders must be prepared for all sorts of unexpected events. Just as the pilot failed to make an obvious connection between goat and mountain, IT leaders can get blindsided by the cloud’s idiosyncrasies―to such an extent that they miss some incredible opportunities.
There are many possible explanations for this and some border on the absurd―like cloud is always insecure or cloud models aren’t right for our business. The real truth, however, is much more profound. We fail to maximize cloud opportunity because we engineer against it.
This happens long before we flip the production switch then start pointing the finger at cloud providers when things go south. It happens when we design, develop and test our cloud applications. When we should be exploiting cloud for speed and scale, development constraints, poor engineering practices and mismatched applications erode value and increase risk. We’re setting cloud up to fail―we just don’t know it until it’s too late and the consequences are calamitous. That’s called the cloud mountain goat moment.
Cloud Applications are, Well…. Different
By migrating monolithic applications and traditional workloads, we could end up celebrating nothing more than technical dexterity. What’s been gained isn’t a perfectly orchestrated hybrid cloud but another technology outlier. True, the promise of improved cost structures is nothing to be sniffed at but are the gains worth the effort―especially for applications that are tough suckers to change and inherently brittle anyway? And if digital transformation is truly the goal, isn’t the rehousing of old problems just a way to avoid it?
Cloud applications are inherently different, so the way we think about developing and managing them has to be different too. With cloud, we’re dealing with massive complexity but also massive value creation, like engaging millions of customers via a new digital channel―something easily forgotten when we’re firmly planted in the cost-optimization camp, starting mass migrations without any real purpose or plan.
Design for Failure or be Prepared to Fail―Completely!
The traditional approach of measuring operational effectiveness in terms of preventing failure doesn’t work anymore. With hybrid cloud there are many moving parts– in terms of technology and process. There will be mobile apps and APIs supporting new digital channels but also backend data and systems. In these environments, failures are inevitable, so the objective should be to design for them―containing problems but still keeping the business running.
Once we accept this, we can start maturing those software engineering practices needed to optimize cloud-based systems―like integrating test data management with test-driven development to ensure compliance without impacting speed, or injecting performance monitoring into a release process designed to deliver high-quality systems.
Mythological Lessons―From Phoenix to Hydra Apps
Like the mythical phoenix, cloud systems should be designed to bounce back from every situation. And they must because when we’re engaging customers at scale or dealing with unknown demand, there will lots of complexity curve balls. Not least ensuring hundreds (even thousands) of services continue to be available and performant.
Throw in complex architectural issues like asynchronous messaging and API latency and there’s a whole new world of pain. It’s analogous to cutting a head off the mythical Hydra. Just when you’ve addressed one problem, two more grow in its place. That is why resilience doesn’t go far enough.
When considering value creation and the cloud, modern applications can’t just be resilient―they also have to be Hydra-like. Rather than simply recovering and staying the same, they need to improve (both technically and commercially) after every major event (positive or negative). This is especially true for applications leveraging cloud as a platform for business change and it reinforces the case against a migrate-at-all-costs strategy.
Manage Cloud Business Outcomes over Technology Outputs
But what does improvement actually mean? Sure, we can take the tried and trusted output-based approach, automatically tuning hybrid clouds in active response to systemic technology conditions. But that’s difficult to achieve in practice―and possibly fruitless. Even if we could stitch together a patchwork of monitoring and provisioning solutions to provide this, what’s the point if the ultra-fluid and highly-responsive cloud application creates no business value?
With such high stakes, cloud applications must be managed according to business outcomes so that outcomes are actionable. When we’re using cloud to deliver a dynamic customer experience, being able to interpret and respond to that experience can make or break a business. Once again, this is not straightforward. Tools will need advanced experience-based analytics―constantly feeding back a wide variety of insights to optimize the cloud application delivery model.
In a constantly changing digital world, this is the true face of cloud optimization. It is not enough to migrate everything and then attempt to prevent failures. True cloud optimization is about building complex applications where the inevitable problems will have the least impact. Get this right and your businesses can start reaping the benefits.
Get it wrong and say hello to the mountain along with its goat.