Video details

Modernizing Java Workloads At Microsoft (yes that Microsoft!) by Martijn Verburg


For more info on the next Devoxx UK 👉
The Diabolical Developer takes you on a journey of how Java exploded on the scene at Microsoft, and how you can run your Modern Java there today, any which way you like! This will be the session to ask those burning questions...


Hello everyone. This is kind of weird. Three years ago, I last spoke at a real conference with real people sitting in a real audience. So this is nice. Hi, everyone. My name is Martin Virgo. I actually ran the first DevOps UK many years ago when I was running the London Java User Group. So it's nice to come home to this these days. I am I'm going to hate saying this a manager of managers at Microsoft, which sounds awful, but I run the Java Engineering group at Microsoft and I'm just going to take you very quickly through 15 minutes of what it is we're doing with Java. Why you'll get a little bit of transparency from me. And yeah, hopefully some time for questions at the end because I know some people are pretty damn curious. So this is the meme we have with Java at Microsoft. It's cool of Duke writing what some people might say is the Microsoft evolved, the Microsoft dinosaur, the old enterprise, proprietary software, Microsoft thinking of the past, that's the old Microsoft. We don't do things that way anymore. Won't worry about the agenda. Just wanted to say again, thanks. Takes actually a little bit of courage to come to an in person event. So I really do appreciate you being here. And for folks watching online, I hope you get some value out of this talk as well. And yeah, we know your questions will be coming in on the online forum, and we'll do our best to answer those as well. So why Microsoft and Java? Right? Java is meant to be dead. It's meant to be a dying proprietor, not proprietor. A dying language going the way of Cobalt. Right? That's what the tech media keeps telling us. It's quite interesting when you think about the other two major languages at the top of all the indexes, Python and JavaScript in particular. Have a little guess to yourself in your head. How old do you think these languages and ecosystems are? I'll give you 5 seconds to think about that and you might end up being surprised. So Python, the current cool kit on the block, 30 years old, JavaScript the other cool kit on the block, 24 years old, and Java actually alongside it at 24 as well. So these are all like venerable, long lasting longrunning ecosystems. And that's one of the reasons why Microsoft is getting into them. Microsoft is now a cloud company. It's no longer a Windows company or an office company. And so what we're interested in is supporting all of the really long running, long lasting ecosystems on our cloud. That's the transparency, right? We're here to support those runtimes and languages because that's our business. That's also how we make money. Some proof that Java is still sitting there at the top. And I like to say to my net colleagues inside Microsoft, see where Java is, see where C sharp is. We're actually good friends, but as you can see Java is a huge opportunity for Microsoft. And again, if you look at a different index at the very top there, I think this thing goes laser pointing JavaScript, Java, Python, next cluster below, C Sharp, et cetera. So again, you can see the opportunity that's there in front of us. So what's Microsoft actually doing with Java? We use it really heavily. So my company, J Clarity was acquired by Microsoft two years ago in 2019 to really kickstart the whole Java at Microsoft effort. And when I did some digging around internally to find where is Java at Microsoft? What are we doing with it? I found some really interesting things. Who has ever used SQL Server, for example? Okay, that's got Java embedded in it, believe it or not, right? Android is pretty obvious that there's some there a whole bunch of Azure services are actually written in Java and are natively run in Java. The thing that actually schedules your Azure VMs, that's a piece of Java software. It's called Azure Control Plane. So we did all this digging and found out there's all this Java there. And of course, we have our two marquee bits of Java. So whenever you go searching for your new Java job, you're using LinkedIn. Linkedin is probably in the top three largest Java shops on the planet. They have over a quarter of a million JVMs running. And of course, I joined Microsoft to help the kids out. I've got a six year old son, Minecraft. Java Edition is very important to him. And we actually now have a Microsoft build of OpenJDK. That is the Java you use inside Minecraft. And we've modernized that. So it's currently actually running Java 16, and it's going to be running Java 17 before very long. So Microsoft obviously still has a lot of learning to do, a lot of trust to build with the Java and open source ecosystem. So it started by acquiring my company, Jay Clarity, and a whole bunch of other well known engineers in Java, people like Monica Beckwith and Kirk Pepperdine and Co. And we've been doing a lot of work internally to kind of look at the layer of the land inside Microsoft and actually help Microsoft internally modernize itself with regards to Java. So we saw lots of Java, eight internally. We saw lots of different builds of Java. We saw lots and lots of horrible misconfiguration of Java. Because when you run net, you don't have the wide range of garbage collectors. You don't have the wide range of tuning options in Java. You do, obviously. And just quite frankly, there was no internal access to figure out how to do that. So we changed all that. Now that we've built a couple of years of internal expertise, we're now actually able to genuinely offer first class solutions for you as Java developers on the outside of Microsoft. And the first thing that we recognize and we built is a first class cloud for Spring. We've got a first class platform as a service for Spring. It's called Azure Spring Cloud. So you don't have to manage your Kubernetes, you don't have to manage your Docker containers or your CI CD pipelines, all that sort of stuff. You basically take your Spring Boot Spring Cloud application from your desktop. You ship it straight up to here. It does all of the auto deploying auto scaling for you. You can connect to all of your data sources, your message queues, security key vaults for secrets, all that sort of good stuff. It takes a massive amount of the headache away. Personally, I don't like managing Kubernetes myself. We also now have started to contribute a lot back to Java and Open source. So my group, the Java Engineering Group, we work on Java itself, OpenJDK. So for example, we recently ported Java to Windows on Arm. We also helped do the Port to the Apple M One devices because again, Microsoft is no longer a Windows company. We want to support developers wherever they are and that's a really key strategic move that we're making. We also are a strategic member of the Eclipse Foundation and we strategically support the Eclipse adoption project. So for those who know adopt OpenJDK. Yes. So I helped co founder and so did the London Java User Group about five or six years ago. We've now shifted it to Eclipse adoption as a software foundation. And the reason we did that was we wanted it to be vendor neutral, forever going forwards. So there's Red Hat, IBM, Microsoft, Zool, Amazon, Alibaba, Huawei, a whole bunch of companies involved in that project to make sure that you always have a free Java you can grab if you need one. That's really important to us. That's example of Microsoft giving back. We're doing a bunch of open source stuff so you can go to, Microsoft and we've currently got four open source repositories there. Openjdk and OpenJDK Docker are probably pretty selfexplanatory. Microsoft has its own build of OpenJDK now, so you can go look at the source code and how we do our Docker images and things. Gc Toolkit is a piece of technology that came from J Clarity. And for those of you who need to look at your garbage collection logs and understand how garbage collection is working inside Java, that's now the tool for you. So it does all of the GC log parsing for you and surfaces to you, a whole bunch of the metrics and stuff, and you can build your own analytics and reports on top of that. The other piece of observability we have is the Java Flight Recorder. We've built a component which allows you to stream that out of your container. So instead of writing the Java Flight Recorder to disk and trying to get that off your disk, we just stream it straight out of your container and straight to wherever you want it to go. So there's some useful bits of technology there. We have our own bill of open JDK, which we're very proud of. So like a lot of companies today, we need to secure the supply chain. So we build this securely behind the Microsoft firewall using the Microsoft native compilers, et cetera. It's all security checked by our internal tools, as well as the tools out there in the open. And yeah, we're pushing this pretty heavily. And if you run our build of Open JDK on Azure, you get to call me on my mobile for free if you have a problem with it. So there's a bonus, free support. The thing I wanted to point out here is that we're actually really big believers in modern Java at Microsoft. So we have heavily pushed all of our internal teams and our internal groups to move to, at the very least, Java eleven. So all of LinkedIn has shifted from Java to Java eleven over the past two years. As an example, 250,000 JVMs 2000 services. It was a really awesome effort, but they found they got double digit gains in what we call cogs cost of goods sold reduction. So they're able to run about 15% to 20% cheaper is one way of looking at it. Or they're able to run 15 or 20% more services and more revenue generating services on exactly the same hardware they were using before, just by moving from Java rate to eleven. So it's absolutely worth doing, even if the initial task looks really big. And we're encouraging people to go to 17, right? The move from eleven to 17 is not actually that complicated. Eight to eleven was quite nasty, but eleven to 17 really simple. And you will see in the not too distant future your favorite game, Minecraft running Java 17 internally, and we'll be looking to move the rest of Microsoft to 17 as quickly as we can as well. So we highly encourage it. If you look at Microsoft Docs Java, I won't expect you to read all of this, but I just want to get the message across that we have a lot of breaths now at Microsoft. With Java. It's not just we've got to build an open JDK or we've built a service off to the side here. There is an entire Java in to end strategic plan that's been rolling out for the past two years and we're trying to cover you, the end user, the end developer, where you are today and where you need to go. So there's plenty of documentation and resources there for you. Of course, we have some tooling to help as well. How many people here use IntelliJ? Is that everybody? How many people here actually also use Visual Studio code? Yes, we thought so. We're seeing a lot of this. So for lightweight code editing and for writing small microservices and things, Visual Studio code is a really nice experience and so I use both on my desktop all the time. And the reason I really love Visual Studio code the most is because it now integrates in with GitHub Code Spaces and GitHub Copilot and all of these kind of cloud based services. And it does it seamlessly. So when I'm given, for example, a less than stellar Surface book to develop on, which is pretty impossible as a developer when it's just a standard business laptop, I can just remote into code spaces using Visual Studio code and do all of my development there. And it works beautifully. So that's the big focus Microsoft is having with Java and Tooling is around the GitHub Code spaces and integrating that all into Visual Studio code. We got Windows subsystem for Linux as well. So instead of running the Windows command line, I actually just run a Bluetooth inside my Windows image, which is fine. It works really nicely, so you get lots of help with that as well. Right? Here comes the marketing stuff. So if people want to like have a little Snooze or whatever, that's totally fine. I understand. But I'll give you an indication of our approach and attitude to how we think you can bring your Java to Microsoft if that's your choice. So the thing is, unlike a lot of other folks clouds, we don't care how you bring your Java. We're not going to tell you, oh, you must re architect your Java application to fit into our framework or into our way of doing things. No, if you want to pick up your big humongous monolith and dump it on an Azure VM, you go knock yourself out. And we'll provide you a bunch of SDKs and APIs to help you connect to all the things you need. If you'd rather go micro services and you want to try out containers but you don't trust our platform as a service, you'd rather run containers yourself, go knock yourself out. We've got the Azure Kubernetes service that you can do yourself. If you don't want to do any of that kind of stuff at all, and you just want to take your Spring application, for example, and put it inside a pair of environment and have everything run for you, you can do that as well. So we genuinely don't care how you bring your Java workload, and we're never going to tell you how to write or run your Java. And that's a philosophical choice we make. We want you to have the power. Someone in the product marketing team was really proud of the Slack. An awful lot of work went into that. So I won't bore you to death with all the details. But as you can see, what we're really trying to point out here is again, you can just lift and shift your existing workloads today and get it out of your data center so you don't have to worry about your data center management anymore. And when you're ready, you can decide to migrate. That as far up the chain as possible, all the way to function as a service if you want. So if you want to do serverless, you can use Azure Functions which is similar to AWS Landers. So you can go all the way to that slides, or you can manage everything yourself on a VM and everything in between if you're running legacy Java EE applications. We've got WebSphere, we've got WebLogic and we've got JBoss and Tomcat, all those managed services for you as well. So you can shift and lift those things across as well. We're here to help you get off Java EE, by the way. So Jakarta EE is the way forward if you want to stick with that technology stack. But we will happily let you run your Java EE with us and we'll help you, but we'll also help you modernize and mind straight forward. Obviously you need to connect to all of the things with Java, right? Message queues secrets, data stores, Mongos, SQL servers, all that stuff. The key thing here to remember is that we have built Idiomatic Java SDK for all of these services. So we hired a bunch of genuine Java experts. We even pinched some people from Oracle on purpose. Sorry, Oracle to write Azure SDKs for Java developers by Java developers. So we promised not a single net engineer was involved in writing those APIs for you. We have Azure Spring Cloud. This is kind of the big marqueey thing that we've gone and built. It's been hugely popular with some really large customers like Kroger, the big supermarket chain type people over in the US, etc. E. And basically it's fully managed Kubernetes, but with a Spring Cloud interface on top. So whenever you need to auto Scale or any of those useful cloud things but you don't want to deal with Kubernetes or managing Helm or TerraForm or any of that stuff, then this is the thing you want to come try out lots of other stuff. We do all the log streaming, event streaming, all that typical kind of stuff. Ci CD platforms. You can either use your DevOps or you can use GitHub Actions. The choice is yours. And even if you want to bring your own Jenkins along, you can happily come and do that as well, even though I personally think that Jenkins is a security vulnerability masquerading as a CI CD system. So with 1 minute to go, we're investing very heavily in Java. Would love to hear more from you about what you'd like to see us do. Microsoft loves developers. You've seen all the tooling work we do with Visual Studio code, you've seen the investment we've poured into GitHub. We're still learning with Java and the Java ecosystem. So we really want to be guided by all of you as to where you want to see us go next. So please do let us know that's it I think. And there you go. If you need any details, you can follow us on Twitter grab our blog or just simply go to Java which amusingly is down today. So don't go there. Go to OpenJDK instead and that will take you to the same kind of area but it's the URL that's actually working today. Even multi trillion all our companies get URLs wrong. Cool. Thanks everyone for your time. Appreciate it. And yeah feel free to ask me any questions after this.