Why Software is Key to Getting Value From the Cloud
Rackspace recently worked with CIO UK to produce a series of articles looking at how CIOs can develop and implement agendas that drive modernisation and technology transformation across organisations.
This article explores how CIOs can build a DevOps mindset, and use software design principles to bake in resiliency, change management, and auditing into processes, thereby increasing benefits and maximising value from the cloud.
The cloud has firmly entrenched itself as an inexorable part of our day to day lives, but really its era is only beginning - evidenced by the oncoming march of 5G and the industrial Internet of Things, which promise to enable radical transformation and better connectivity.
This technological shift has raised challenges that are only set to continue. Those who have already made the move over to cloud and may not be realising the tremendous value that was promised in the early stages of cloud computing will not see this problem magically go away.
Getting value from the cloud starts with software
How, then, can CIOs and IT leaders better leverage the kind of return on costs that they had initially anticipated? In a software-defined landscape, to answer this perhaps it's worth going back to basics: placing a lens on what software design principles can teach us about maximising value from the cloud.
It's uncontroversial to state that Andreessen Horowitz's famous adage that software is eating the world has proved true. However, this is often understood to refer to those consumer-facing applications that we so frequently hear about - the Ubers and the Airbnbs and the Netflixes of the world - but to truly understand your capabilities and drive that value means extending the maxim from the traditional understanding of applications and APIs - instead including all those layers in your stack and everything that glues them together.
"It's not just infrastructure as code, you need to think about infrastructure as software," explains Iskandar Najmuddin, Lead DevOps Consultant at Rackspace. "The way that you deploy changes into your environments is also by software, which you maybe happened to write. The way that you make and manage changes into your current platform, your security rules, or maybe the size of your compute instances? All of those things are managed as software."
Many legacy businesses that have leapt into the digital world have done so with successful buy-in from senior management and the c-suite around DevOps principles: building pipelines, failing fast, and encouraging collaboration between teams. It's now time to go a few steps further.
Infrastructure as code vs infrastructure as software
Silicon Valley darlings like Google and Netflix had the resources and the foresight to catch the message early. Google's Site Reliability Engineering and Netflix's Chaos Monkey initiatives built resiliency into the full enterprise suite by default, testing code with their own software best practices. But these methods are similar to those that have built up the successful software industry as a whole in the first place.
"Infrastructure as code is a key tool for getting a whole bunch of value out of cloud platforms," Najmuddin adds. "Infrastructure as code is just the beginning, what you need is infrastructure as software. The key differentiators between the code, and the software, is that software has a life-cycle; it has versioning, it has testing, it has collaboration, it has operational integrity, and it has security around it.
"Code could be a couple of files sitting on some admin's desktop. Software lives in a repository, has teams working on it, it has an audit trail, and there's lots of ways to manage software lifecycles. They're all quite mature, and quite valuable."
Of course, no one person can be all things to all people. It's a sizeable ask to bring sysadmins and operators who might have been working on dedicated infrastructure to begin grappling with the software-defined world. The reality of that skills gap we keep hearing about might not exactly inspire confidence either.
Encouraging a software engineering mindset need not be daunting, as long as the human element is taken into account. Upskilling your workforce and helping your technical stakeholders better understand how software works and best practices for managing it will only bolster your organisation's technical capabilities.
"If you're not able to use software yourselves, then you could be in a bit of bother," says Najmuddin. "You're going to still get some value from cloud - but let's say, it could be marginal compared to the full potential that you're missing out on. In a world where the platforms are API-driven and composable, the only way to get true value is to write software."
"The message from the trenches - from our experience in recent years - is that we've talked to loads of customers and people who are struggling, because they've got all these code assets, snippets, templates, all these source code files floating around in their business across different units. There is no source of truth! There is no discipline from an engineering perspective to really enable reuse."
And by creating auditable records of changes, a software-defined stack will also go towards building visibility and observability into every element of an organisation.
"If you think about something as trivial as a firewall wall - unless your business has existing, strict change management processes - often that stuff will get lost," says Najmuddin. "Why is this web service, which is meant to be private, visible on the public internet? Why is our customer data sitting in an object storage bucket publicly visible to the internet? When did this happen - who did it - why?"
Baking in resiliency, change management, and auditing into your processes from the start will help tie up these loose ends, and assist in delivering the benefits that you may have been missing out on.
Click here to learn more about how Rackspace can help you adopt a software driven approach to realise more value from your cloud implementations.