The imperative for more sustainable and power efficient applications and systems is stronger than ever. Not only is the green agenda becoming more pressing, but recent energy price spikes mean that we all need to think about cutting our power consumption and, or, lowering our exposure to fossil fuels. Thinking about sustainability, software, and systems – how can we achieve better outcomes when we build new applications or modernize existing systems? I recently spoke to Holly Cummins, senior principal software engineer at Red Hat, about greener outcomes with software and system design and development in a new episode of Conversations with RedMonk.
There is a real opportunity to do better, a double or triple win. Cummins said:
Opportunity is exactly the right word, because instead of thinking of it as a sort of an obligation, what we see is that a lot of times the action that you take to reduce your carbon footprint has all of these secondary benefits. It almost always it reduces cost. There are big business benefits as well, because we’re seeing a lot of good commercial pressure on organisations to reduce their carbon footprint. And so businesses that can demonstrate they’re sustainable have a competitive advantage. And so then you sort of reduce your costs and you’ve made yourself more attractive in the marketplace all while saving the world.”
What would writing greener software look like – can particular languages or runtimes offer benefits beyond raw performance? Or is it enough to simply host the workload in a public cloud in a region with renewable energy as the major energy source. If we’re using renewable energy does it even matter whether the application is designed to consume less energy. Well, that’s one way of looking at it, but of course, architecture has to take account of a number of factors. Hybrid and on premises workloads still exist and will for the foreseeable future. Organizations continue to run their own data centers for various reasons, including data sovereignty and long term investment accounting.
What would green software look like? Cummins makes it clear that one of the most important aspects in power efficiency is the ability to turn software off. 24x7x365 operations can be a worthy goal, but one that doesn’t always align very well with keeping your energy consumption down.
Think of an empty office block with all of its lights blazing at 11pm. That makes no sense.
So green systems are systems that we can turn off, rather than leaving them idling when we’re not using them. Being able to scale to zero, Being able to turn the lights off when you’re not using them. Serverless architectures are a potential massive opportunity here. But Java, for example, wasn’t built with serverless and sub-second startups in mind. Fast starts are essential for systems that you plan to regularly turn off and on again, and that’s where a lot of current Java language and runtime investment is focused. Cummins for example works on Quarkus, a modern lightweight container-native open source Java framework, which aims for “zero config and live reload in the blink of an eye”.
As I joked with Cummins:
I’m a dad, and I walk around the house turning lights off that my family left on. Wouldn’t it be great if we had something in our applications that did that?
We need a better understanding of the usage pattern of a workload in order to reduce the overall energy footprint.
We actually recorded two videos about greening systems and software. In one we talk about some of the broader business and policy issues. In the second video, we dive into some of the energy characteristics of Quarkus itself. Cummins has charts. She has done the maths. A measurement and data-driven approach is always more likely to be more persuasive. Spoiler alert – It turns out that using Quarkus as a runtime can lead to better sustainability outcomes. One interesting tactical point in the video is being able to rightsize and move some workloads to smaller AWS instances.
Watch the video below to find out more.
For Java shops there’s going to have to be some re-engineering around Java, some rearchitecting. That’s an imperative for modernization at most enterprises today. Making apps suitable for the cloud, and better user experiences.
Amazon Web Services argues that the cloud is always greener than on-premises. Just rehost and become more power efficient because AWS is better at running data centers than you are. Go figure. It has some regions that run on renewable energy. However if we look at one of the default regions that everybody uses its us-east-1, which is not one of AWS’s greenest regions. AWS recently committed to running its operations on 100% renewable energy by 2025, five years earlier than originally planned. That’s a stunning commitment, and we’ll see how it fares. Maybe us-east-1 won’t be such a problem going forward. Here’s a related post about the AWS carbon calculator.
But for now location matters, whether you’re using AWS, Microsoft Azure or Google Cloud.
But back to software engineering. Red Hat is obviously thinking about this question. There is also a Green Software Foundation with members including Accenture, GitHub, Microsoft, NTT Data and Thoughtworks.
Whether or not one language is more power efficient than another, companies are already using Java, so Red Hat’s investments are on point. Organisations are already looking to modernise their Java workloads. For microservices, for cloud hosting, and so on. One of the pivots in that should be questions about how we can make this energy efficient as well. Have a double or triple win.
Cummins likes to talk about no regrets wins, and Java modernisation here is just that kind of opportunity. The best wins are painless. As I like to say, make the right thing the easy thing.
At a policy level sustainability is becoming more important to a wider range of people. We are seeing it in request for proposals from European organisations.
At AWS re:Invent earlier this month CEO Adam Selipsky talked about the fact that he’d recently been to Japan, and, in conversations with CIOs and CEOs three quarters of them wanted to talk AWS about its sustainability plans, in terms of alignment of strategy and beliefs. the agenda is becoming more pressing. They said they want to partner with a cloud company for sustainability reasons.
So if we’re thinking about Japanese workloads, European workloads, the increasing likelihood of regulation and Environmental, Social and Governance (ESG) goals, it becomes clear that sustainability matters more than ever.
And you know, the weather continues to be pretty messed up.
So here are a couple of videos where we talk about the issues outlined above. So please watch them. I would love to know what you think. What do you think about runtimes, services, languages and cloud hosting choices? What should we really be doing from a sustainability perspective?
These videos were sponsored by Red Hat.
AWS, Google Cloud, Microsoft, and Red Hat are all clients.