I was a software developer for a while. I didn't do computer science as a degree. I have a physics degree - applied physics and electronics. So I got into software through real time coding, real time control and signal processing systems.
And then got into Sun Microsystems because we were using them and ended up working for Sun for a long time. And ended up in the performance area there. So performance capacity planning was my specialization, really. I ended up in the performance team at Sun. Wrote a book on performance tuning that lots of people bought. That got me to distinguished engineer at Sun because everyone had heard of the book. And one of the ways to sort of hack your career is to write down everything you know in a book. And if everyone buys the book, then that's your career, right? You can monetize that for a while.
And then as Sun shrank, I moved to eBay for a bit. Learned a bunch more about how to run large scale web facing services, properties, and some really interesting ideas that eBay had developed around effectively what became NoSQL. A lot of pattern-based automation of the way they did their rollouts of things. The technology doesn't look very familiar from today, but the concepts were pretty foundational. Met a lot of interesting people there as well.
And then went to Netflix in two thousand and seven, just as they were trying to figure out how to scale up from a DVD business, which was pretty small scale from an IT point of view, to an online service that needed to be reliable and scalable.
And, if you know the geography, eBay is about five miles from Netflix down the road. And a whole bunch of people that I knew who had figured this stuff out at eBay literally went five miles down the road and started working at Netflix. There were a group of us that came from eBay. And that was where, as we started doing scale, our data center team that knew how to run this small-scale data center basically couldn't figure out how to run the stuff we needed at scale reliably. So at some point we went… after like a several day outage, we went, now we need to do this differently and maybe we can use that Amazon thing, the AWS thing. So that was about two thousand and eight or two thousand and nine, after I'd been at Netflix for a couple of years. That was the idea.
And the ideas around cloud computing was something I'd been developing back when I was at Sun as well. Sun couldn't figure out how to do it, but the concepts were there. So that was sort of how I got into cloud.
I think it's still hard and I think that it's hard to get people to be on call. And the question is whether you're going to get called anyway, because you wrote the code and whoever is staring at the broken thing is going to call you anyway. So you may as well be the first person there and not depend on somebody else. That was the philosophy.
We weren't calling it DevOps. We were following some things that…Werner Vogels wrote a paper (I forget exactly what it was called, but it was an ACM paper in around two thousand and six, something like that. You find it and put it in the show notes), but one of the essence of it was run what you wrote. That was the philosophy. That's the way AWS runs. The service teams are on call for their thing, because they know what is the state of the thing.
And what we were building was a thing that had… because of the way Netflix does a lot of testing and we wanted it to be very rapid at deployment... If you pick a service name, there could be four or five versions of that service running in production. Different versions, each of them supporting a different A-B test or a different stage in the development. And most of them, there's a legacy version that supports some ancient thing that hasn't migrated yet, but we just need enough of it to support the traffic from that old thing. And then there's the mainstream one, which is taking most of the traffic. And then there's two or three developers working on it that’ve got their own custom versions in production related to different tests. And so if something goes wrong, you have to understand that there's all these different versions and why are they there and what's going on, and everything. The context is very high.
If you try to hand that off to somebody in Operations, like we used to in the data center, there was a weekly meeting or bi-weekly meeting with a huge number of people in the room arguing about what was going to be delivered and trying to pass on, this is how you're going to try and run it. And it was just a big mess. So we wanted to get away.
So we had a bunch of pain we were running away from. One was the bi-weekly Ops TOI (transfer of information) process. The ability for developers to push code anytime they wanted. And the developer responsibility went from, I'm building a JAR file which QA will integrate into a build and stick on as a release every two weeks (which was the model we were on in the data center) to that same JAR file is now going to have a service wrapped around it. So I own an API, some client libraries, and I have some dependencies to other things.
And some of those things that you were building were platform layers, and some of them were more business logic layers, but we didn't really distinguish. The work of an engineer wasn't that different between the platform team developers and the business logic developers, if you like. They were using the same tooling to deliver things.
Yeah, usually the biggest bill is the logging bill, it’s usually bigger than the compute bill.
I think that I would actually refine it to say step functions first. If you're trying to build some business logic, I would try and prototype it in step functions. I think it's one of the most powerful tools out there and most people don't use it because it's AWS specific. But if you're modeling business state changes, step functions is a super powerful tool for doing that.
It gets expensive if you try and drive it too fast. And there was that whole fuss last year with the blog post about Amazon moving away to a monolith or something, which was basically somebody stopping using step functions and moving to Lambda function. But anyway, moving on from that, I have a whole ranty blog post about that. But the point is that you prototype in step functions and it's an incredibly quick and reliable way to model what you're trying to get done.
And then as you try to run traffic through it, bits of it will start getting expensive or slow and you start replacing those with maybe Lambda functions. And if that Lambda function gets to the point where it's running flat out all the time, or you need to hold some persistent state like a database or whatever, then fire up a container to run that. And that's my sort of approach. You'll build something quick that way, which is maximally leveraging the platform things that you can get from your cloud provider.
So that moves on to kind of like, well, where are we today and why is it complicated? Which moves on to kind of a whole new topic, which is sort of Kubernetes and why has that taken over and all of that kind of stuff. So as I left… I joined Battery Ventures in two thousand fourteen and that was when Docker started becoming a thing.
I started hanging around. I did a talk at DockerCon. I was talking about microservices, architecture, and looking at the evolution of all these different container management systems at the time. A whole lot of old talks on that subject.
And at the end of two thousand sixteen, I joined AWS. And it was a couple of things. One, I was in marketing, I was a VP in marketing reporting to the CMO. And I was sort of doing some of the things that Werner does, going outside and talking to customers and keynoting summits and stuff. So that was part of the job. The other part of the job was to build an open source kind of community engagement marketing team. We had a team in engineering that was worried about licenses and using open source, but we didn't have anybody that was engaging with the community.
I had built the open source program at Netflix and figured out a whole bunch of things and been to a bunch of conferences. So I hired an open source team from outside, people that were well trusted in the open source community.
And built the team around them. And then we were inside Amazon so we could influence Amazon, but outside visibility was like, these were people they knew and trusted. So we kind of built that trust bridge. And we basically fixed the Amazon reputation for open source over a few years. We sponsored OzCon, All Things Open, FOSDEM turned up.
I hired Arun Gupta as one of the first few people and he said, we really need to join CNCF and get into this Kubernetes stuff. So we went, all right. Together we wrote a paper - he wrote the first draft and I modified it. And I took it up management all the way to Andy Jassy to say we need to join CNCF.
We kind of went, all right, well, it looks like the alternative is worse. It's going to be difficult, but we need to try this. We need to do this. So a team was internally forming to build EKS, but hadn't done anything visibly externally.
We needed air cover for our activities before the product was launched. So that was one reason for joining CNCF that summer. EKS was launched in the fall, but there was about a six-month period where we were clearly doing CNCF stuff, even though we didn't have a product. And it was partly so that we could start building it. Bob Wise and the team started building out all the stuff and just engaging with the community.
Kubernetes is a difficult thing because what it does is it builds a different platform on top of AWS from the EC2 native platform. And you have all kinds of things. Like the firewall knows how to do EC2 firewalling, it didn't really know how to do Kubernetes firewalling for a long time. I think the latest version finally supports EKS, right?
So all of this integrated tooling that used the cloud, but used it the Amazon way and all worked together was very effective. But now there was this, well, we want something that's portable and these things are starting to commoditize out and become common capabilities. And there's going to be this common thing. If AWS had stayed outside CNCF, it would have given everyone else a tool to marginalize AWS with. And whenever there's an industry consortium formed against you, you should always join it. That's a strategy thing.
I've been around, I've seen this play out. Sun ran into this a bunch of times. You will end up joining it anyway, so you should join at the beginning. Otherwise they'll just say bad things about you and do things that get in your way. If you're in the room, then it's very hard for people to optimize against you. And in the end, AWS made a lot of money out of running Kubernetes. So that was fine.
But architecturally, it's a big problem because now there's two platforms. There's two ways to do IAM. There's two ways to do security groups. It's a complicated mess because now you've got this layering going on. And effectively what people have had to learn is, well, we're just going to learn this Kubernetes abstraction and we're going to treat it as its own layer. And the complexity is visible to you because now you're trying to manage a cloud. And Kubernetes is designed to do that in a data center, which means you have to manage the actual underlying things and there's sort of leaky abstractions because of that. When you're running on a cloud provider, there's a bunch of things it shouldn't really need to do, but it does because it needs to be portable.
They're the same people. You've learned the same things.Certainly statistics and data science is the same thing. But the practices and tooling are different, right? The underlying theory, when you get to pages of Greek symbols, it's all the same stuff. Underneath, they're all doing regressions and whatever, fitting models and clustering and things like that.
So there's a layer at which it's the same underlying… Like if you were a new graduate and you have a certain aptitude for something, like you learn the tooling of that generation and there's a job title that goes with it. And then you know how to do that thing. And then if you reinvent yourself year after year, maybe you change your job title and learn some new tricks, but your aptitude is the same thing.
Like some people are happy staring at pages of Greek symbols. Other people are happy staring at a bunch of machines trying to figure out why they aren't working today. Or writing code or whatever it is that you like doing. So that's, I think, the sort of underlying, like where is talent and how can you apply it?
And then how do you optimize your career is to sort of figure out, if all the hiring job adverts say I want to hire platform engineers, then you're a platform engineer, right? And then that sort of forms a trend and it's just like that's just natural.
It's sort of a marketing branding thing. Having worked in marketing a lot, yeah, marketing works. There's a phrase that says perception is reality. And that's what marketing does. It sort of takes perception and reality forms around that perception. And in some sense, yeah, it's marketing, but that's not a bad thing. It's a way to brand something. And hopefully it's better, right? You've got some more tooling. You've got a better understanding of some good practices. And then every now and again, people reinvent or rediscover something from 20, 30 or 50 years ago or whatever.
You know, Conway's law pops up from nineteen sixty-seven. And I get to hang out with Mel Conway every now and again, which is very cool, but he's in his 80s now. He was a young guy in his 20s when he wrote that paper.
Why are you doing it? I mean, if you're just doing it to save money, then that can be.If you can't get what you need somewhere else. I mean, what competency are you trying to build up? That's really it. And then how much ROI are you going to get from that investment? Everything should be driven off of that.
If you are a company that needs to learn in the long term how to run stuff yourself, sure. Most people, if you're just trying to build it and become a SaaS provider for something else, then if your selling proposition is you're going to do it cheaper than everyone else and most of the cost is cloud provider costs, then you need to find a way of doing it cheaper. And maybe you can take out some somebody else's margin and figure out a way to optimize it.
It's usually cost, I think, is what people look at. And the problem there is if the true cost is bigger than the little Maths you did. So the total cost of ownership is typically much higher and the distraction of having to deal with it.
I need an AI machine to do some training. Am I just going to hit a button and get one from the cloud for a few hours, or am I going to go through the hassle of trying to get this machine running and sitting in the corner of the room getting too hot and, you know, every now and again I have to go buy a new board for it or whatever. And how much time am I spending doing that versus getting one from a cloud provider for a few hours.
So that's one way of looking at it. The other thing is that running stuff in the data center is hard. It always has been hard, but it's become easier with the layering of the platform and the tools. So Kubernetes and the various tooling around it and the services you can get from hosted data centers - it's just less work and less hassle and to do it yourself than it used to be. So it's more viable to do.
And then the other thing is just the big shortage of GPUs. If you can get a GPU, maybe you want to just run it yourself. If you can physically buy one, if you can't buy one or you can't buy enough of them, you'll end up using a cloud provider because they actually have them. You can do it by the hour and share them, that kind of thing. But those are most expensive because they're trying to make you not sit on them for the hours you're not using them because they want other people to use them.
And then there's the new tier of cloud providers like Lambda Labs, which is actually where Jeremy Edberg is currently working. I mentioned him earlier. Where we just sell GPUs basically. And it's a very simple layer over the top for doing that. It's not a full on AWS or GCP or Azure. It's more like a hosting model with a bit on top of it. And so I think the other reason that this is happening is just this big new workload that suddenly turned up that's very expensive to run and people are still figuring out around GPUs. I mean, there's a massive shortage and they're expensive right now. So that's probably a temporary situation. They're probably going to get cheaper and easier to get as production catches up with demand.
Yeah. Well, I left Amazon two years ago. The last couple of years there I was in the sustainability organization, trying to just get AWS's act together. So that they both had some common messaging. If you ever go to re:Invent, there's a sustainability track. We had a lot of arguing to get that track to exist. It still exists. So, you know, a few things like that. Like setting up the internal mechanisms for getting everybody together.
There were bits of sustainability happening in scattered pockets all across AWS. And what I did there for a year or so was gather all that together and get some mechanisms and some common language and the standard presentation deck that everyone used.
I couldn't actually fix some of the things like transparency and stuff about the tooling, but we did produce the well-architected guide for sustainability as a pillar and a lot of advice in there on how to build more sustainable applications. That was kind of what got done there.
What's happened since then… well, AI was happening then… but the real GPU explosion that happened last year, the reports on what happened have not come out yet for Google and AWS. They come out in July, detailing what happened in twenty twenty-three. So we don't have data for that.
But Microsoft releases a little earlier, their roll up of their sustainability data is quicker for various reasons. Mostly Amazon has a huge global delivery business, which takes a lot of time to figure out, whereas Microsoft is a more software organization, so it's faster for them.
They released their annual report and there was a bunch of talk about this a month or so ago because they said, we were working on reducing our carbon footprint, but it started going up because of all the AI rollout that we did. We had an unexpectedly large deployment of very hot GPUs. And we've had to do that very quickly. Whereas building out more sustainable, more solar farms and wind farms and whatever is on a longer time scale. So they've ended up with a shortfall. So their numbers are going backwards.
And this is indicative of a problem across the industry. There is so much potential demand for these GPUs that are 700 watts to a kilowatt or more each GPU. To the point that the latest Nvidia ones are 1,200 watts water cooled and 700 watts air cooled because if you go much beyond 700 watts, they just melt. You have to go to water cooled if you're up in the kilowatt range. They can see this is the deployment pattern we're looking at and this is the energy to supply it, and there's a shortfall and we're going to have to generate more energy to do it.
The sort of pessimistic view is we're going to have to go build a bunch of gas-fired power stations to do this. And delay turning off other things like coal plants and whatever. And the more optimistic one is, well, we keep underestimating the rate at which solar and wind and batteries are deploying. They are more than doubling every year, and we just need to crank up and do more. So you can see both sides of that argument.
I think that the energy may not get cheaper quickly enough because of this, because the demand's going to be extra high. But that's kind of the problem that people are currently sort of working on. So my emphasis is, let's see if we can use GPUs more effectively, tune them up. I've been sort of trying to look at some observability tools and performance tuning around using GPUs more effectively.
There is a well-architected guide if you're mostly around development and operations practices. There's the AWS one. There's a Microsoft one, which has actually been adopted by the GSF. So they're kind of the same thing. So the GSF has a guide, which is, I think, the same as whatever Microsoft publishes. They're roughly the same. A bunch of good advice there for how to think about it.
Internally, generally, the way to think about the pressures that are causing people to care about sustainability come from different areas. And I say it's top-down, bottom-up and side-to-side.
So top-down, there's regulations that say you need to disclose your carbon footprint. Depending on where you live in the world, those regulations are either happening now or somewhere in the future, but they're coming. They aren't going away.
In Europe they're current. The UK government has regulations, for you to sell to the UK government you have to disclose your carbon footprint. Currently they're one of the most, sort of, you have to do it otherwise you don't get the contract. Whereas most of the others are, well, you've got to measure this year to report next year. Or in the US, there's some rules which start to bite in several years. But it's coming. So that sort of top-down management, like board level reporting that kind of thing. So that tends to cause companies to want to do that.
Then there's also the marketing. Marketing wants to be able to say my product is greener than yours, in some sense. Or I want to have a brand which has some positive environmental attributes to it. So that's kind of marketing top-down. Products, product definitions, you know, there's things there that matter. So that's the top-down piece.
The bottom up piece is just employees that care, right? And if you have young kids and they come home from school saying, “I've heard that the world's going to end in a climate crisis. What are you doing about that?” Do not underestimate the power of that as an influence, it is incredibly strong. Of either young people going, “I've got to live on this planet for the next 50 years or whatever,” or people just trying to explain to their kids what's going on. That causes a lot of, “Well, I should do something about it.”
And the side-to-side is supplier and purchasing and customer. So, the things you buy, you should be asking what's the carbon in that. All of your supply chain - you should say, well, when do I get the carbon footprint of the things I'm buying from you as part of the purchase?
The EU is mandating that now, that's coming in. So if you want to sell something to Europe, you're in that supply chain, you have to disclose your carbon. Regardless of where you are in the world. You could be in California, but if you’ve still got to sell to Europe then they need to know the carbon. So the US doesn't get out of that, it's viral in the same way GDPR was viral. It kind of spreads throughout the legal requirements.
Then, on the consumer side, people are going to be asking you. And the problem then is you have to take your total carbon footprint and then attribute and allocate it. You've got to say, okay, this feature of this product uses this carbon. And these are the customers of that product and they used it in this proportion. And I'm going to somehow allocate out some amount of my carbon that is attributable to the customers. And I have to figure out an algorithm for doing that. And that's actually a fairly complex problem.
If you're trying to do that within Kubernetes, because you've got all lots of things running, that's what Kepler (Kubernetes-based Efficient Power Level Exporter) does. Kepler uses eBPF to look at what's going on. And it will tell you that this workload, which is part of this namespace, and it's this set of containers and pods, is consuming this much carbon out of the total carbon that those nodes are consuming in that cluster. And it sort of maps up the energy usage and the carbon into that. You have to do something like that, but at the sort of SaaS provider or customer level as well.
There's a whole lot of things there. If your company doesn't seem to be doing anything about it, you just start asking questions, doing it as hack day projects, things like that. But most companies have at least got some kind of report going on. So go look at your company's corporate report, try to understand where those numbers come from, what you can do to influence them. And look at some of the CNCF… well, CNCF actually has an environmental group as well, I meant GSF, the Green Software Foundation. There's a podcast, there's a whole lot of information there, so lots and lots of things to do there. So just get up to speed on it. That's really what people can do individually.
There's a lot of concepts, models, it's confusing. Like the mathematics for it is multiply two numbers together, picking the two numbers is the hard part. You’ve got how much energy and how much carbon was that energy? Ludicrously complex to answer that question. The more you know, the less you realize you know about how all this stuff works. It's one of those areas. So just becoming an expert in it is useful.