0:00
Hello, everyone. Welcome back to the Cloud Show
0:06
This is the show where we talk about important things that leaders in
0:10
Cloud projects should know about. We have a brilliant guest here today
0:15
We're going to talk about what it takes to actually start going to the Cloud as a developer
0:22
What do you need? I'm sure that you as a leader in a Cloud project have a lot of people in your teams
0:28
You need to understand what it is that they need if they're .NET developers and they need to start embracing cloud
0:33
What do you do? How do you get there? And which migration tools can be important to know about
0:39
And we have none other, none less than Scott Hunter with us today
0:44
So stay tuned. hi there scott brilliant to see you hey magnus great to see you too i'm so excited to be here
1:01
today yeah um this this show is is all about leadership and all about the the the toils of
1:08
understanding how to do cloud stuff, right? And you happen to be a leader at a cloud company who
1:16
does a bunch of cloud stuff. We do a few cloud things over at Microsoft. Some of them
1:24
Yeah. So you gave me a long list just for context for people. You interact with a lot of service
1:31
teams. You gave me a long list. So it's container apps, function apps, logic apps, app service
1:37
static web apps, API management, logic apps, config service, Redis, and Grafana, and a bunch of
1:44
other services, as you put it. And you guys, your team, teams, I don't know how many teams
1:51
you build the extensions for VS Code, you build the developer CLI, and all the Azure SDK things
1:58
So a bunch of Azure. It takes up your time. Lots of Azure, and it does take up a lot of time. I
2:07
give developers the best experience on building applications for the cloud. That's why our team is called the Azure Developer Experience Team
2:15
is because we're trying to go smooth down those things and make them as easy as possible
2:21
Yeah, brilliant. So we're really happy. I'm excited to have you on this show here because, again
2:27
when you're talking about a company that is going in the cloudy direction for some reason
2:32
I kind of have this mental model of some business person coming out from a pool hall or someplace in a parking lot late at night, and there's a salesperson with a trench coat saying, hey, you want to buy some Azure
2:46
And for some reason, this person buys some Azure, right? And now, all of a sudden, the company is going to the cloud
2:54
Holy crap. Then they look around, right, into their organization, and they realize we have a lot of really great developers
3:01
but they don't know they're cloud. So the question for today, should you choose to answer it, ha ha
3:08
is how do you as a .NET developer, what does .NET developers need
3:14
to get ready for being cloudy? You should have some good insights on this
3:19
I do have some. And sadly, this show's actually just a few weeks early
3:24
So we actually, you know, obviously I've been at Microsoft for a long time
3:29
working on both .NET and Azure. And our goal is to make it as easy as possible
3:35
for a customer to move their app from on-premise to the cloud. So we've decided, we built a tool a couple of years ago in .NET
3:44
when I was in .NET. It was called the .NET Upgrade Assistant. And the goal of that tool was to let you take a .NET framework application
3:51
and move it to the newer .NET, like a .NET Core 3.1 or a .NET 5, 6, or 7
3:59
And we are going to take the skeleton of that application and make a new tool, which is going to be our tool for migrating to the cloud
4:11
And so I'm kind of pre-announcing on your show that this tool is coming
4:17
We'll have a public preview sometime in August is what I would say
4:23
And the idea of what the tool is going to do, it's a developer tool
4:28
In many cases, if you go look at cloud products and stuff around, there's these tools that say, hey, we'll move your application to the cloud and you don't have to do anything
4:37
And I will tell you as a developer, I don't buy that at all. You just you just can't change a couple of configuration strings and and stuff like that and hope you can just copy the app as it is and make it and have it work
4:50
And so what the what the tool we're going to build will do for you is it's going to it's going to go look at a couple of things
4:57
It's going to find any IP addresses that you have in your source code and flag them
5:02
It's going to look for any URLs in your source code and flag them. It going to look for any connection strings in your source code and flag them It going to look for any time you actually access the file system and potentially flag them And the idea is it going to give you basically a list of all the things that you should think about and changing as part of the move to the cloud
5:23
It'll look at the packages your application is using and will tell you what it would recommend you using instead
5:34
And so this is a new idea that we have. And, you know, it's kind of funny, the way the .NET Upgrade Assistant kind of came to be was there's a customer success team in developer division where I work that, you know, goes and helps a lot of big customers do some of these migrations from .NET Framework to .NET Core and .NET Modern
5:56
Likewise, we do a bunch of these cloud transformations as well. And so this tool is kind of codifying all the things we've learned as we've helped migrate people to the cloud over the last couple of years
6:09
And the tool is pretty cool. It's going to support both .NET and Java
6:13
So it'll be the two, you know, these platforms that we think are out there
6:19
I mean, obviously, Node, Python and stuff are growing and stuff like that
6:23
But these are the two products that have been in the cloud for a long time
6:27
And they're the oldest products as well. So, I mean, you know, I don't know how old Java is. I know .NET's 20 years
6:32
I'm not sure what Java is. But that is the tool we have coming that I'm super excited about
6:40
And maybe I can come back on the show in the future and we can do a demo and actually show how this works
6:45
And I actually tried to get a demo video before I even knew I was coming on the show here
6:51
But they said at the earliest next week. Oh, okay. No worries
6:56
I love being out here with this topic as early as this, but also, I mean, this tool or not this tool, this sounds like a brilliant tool that I really want to get into myself
7:08
I have a great customer case for you, by the way. Let's talk. But that's a different story
7:15
Moreover, again, back to if you're a .NET developer, what do you do
7:19
Like, okay, so I know .NET. I'm a developer since many years. I haven't done cloud
7:23
What do I do now? Yeah. So for me, I think the first thing, and this sounds very basic and common, but it's still
7:32
a very important thing, is that there's a couple of options that we have moving to the cloud
7:38
And it really depends on what your organization, what state your organization's in
7:43
Obviously, there's the lift and shift, which is the traditional, easiest way to move your
7:47
app to the cloud, get it running in a virtual machine on premise, and literally you can
7:52
upload the virtual machine to the cloud. Yep. And that thing will work
7:56
That's not my, you know, if I talk to customers, that's not my biggest recommendation
8:01
And it's not my recommendation because all you save there is you don't have to replace hardware anymore
8:07
You still have to patch the hardware. You still have to maintain the hardware. If the app crashes, you own that
8:13
So it's still totally on you. So that's not my favorite place to be
8:19
You know, my favorite place to be would probably be on our PaaS platforms. That's Azure App Service or Azure Functions
8:25
We have some pretty cool stuff in Azure Functions coming along the way as well to help these cloud transformations as well
8:31
Today, Azure Functions for a .NET developer feels a little different. Your code is not the same as the APIs you're building with Web API or Minimal API tech they have
8:40
We're going to enable both Web API and Minimal API to work directly in Functions, so you can just upload that directly in the future
8:46
That's coming. I'm not sure I can say this year, but it's coming
8:50
It's in the process. But we also, you know, typically you come to the cloud to save money
8:56
And so that's why we typically recommend the PaaS platforms, platform as a service
9:02
And on the PaaS platform, not only do we manage the hardware for you, but we also manage the operating system for you
9:09
And we manage the runtime, whether it's, you know, .NET, Python, Java, Node, whatever for you
9:16
And so that really is where you see a lot of cost savings. We see a lot of customers that'll do a lift and shift, and then they'll migrate again to one of the past platforms to basically save some of that money
9:28
And I would say that's okay. That's an okay way to do it. First, do the lift and shift to get out of whatever
9:34
Maybe you're up for a contract renewal with someone or something like that
9:38
Don't do that. Just move as fast as possible. You get it running
9:42
It's going to run. Maybe it'll run good. but it's certainly probably not going to be great in the sense that you are still maintaining that VM, as you put it, right
9:52
And all the things that come with that. But it'll be great once your organization moves over, transforms over to using platform services
10:04
So let's talk about what scares the hell out of me. Okay, brilliant. Bring it
10:09
So a lot of customers, you know, we're obviously living in the container era
10:14
containers are slowly becoming the deployment model for apps to the cloud and for various reasons I assume people in the show know what containers are but in a nutshell you know I can basically define an operating system and how I want it to all look with some simple files
10:32
I don't have to go build machines manually and stuff like that. It's a great model
10:38
But, you know, we just mentioned virtual machines. On a virtual machine, you're responsible for patching everything
10:45
You're responsible for patching the OS and the runtimes. in the PaaS platform, we do that work for you
10:53
As soon as you move to containers, well, a container is basically
10:58
once you make it, it's immutable. It does not change again. And so you baked an operating system into the container
11:05
you baked a runtime into the container, and you baked your app into the container
11:10
And so, you know, you and I have been hanging around for a long time, Magnus
11:13
And, you know, 20 years ago, if you're building an app for your organization
11:17
you could literally build it and let it sit for 20 years and it would be fine
11:22
If you go to containers, you need to have a CICD pipeline
11:29
You just can't take your legacy app, leave it like it is today, and go push it to a container because you're literally baking all those things in
11:36
and you are going to be in a bad place, especially if the app is a public-facing application
11:43
And so I really recommend if you're not on those systems and we run into many customers because they have thousands of apps
11:50
The new apps are all on those systems, but the old apps, in many cases they're migrating to the cloud or not
11:55
you need to do that step first. If you go to the PaaS platform, you can get away with not doing that step first
12:01
But if you're going to a container platform, you need to do that step first
12:05
And this is something that we're going to address ourselves. We have a product that we launched last May called Azure Container Apps
12:13
and we will have capabilities by Ignite and for folks, Ignite will be a November timeframe
12:21
where we are going to give you some of the abilities to patch your containers for you
12:27
So we will patch the OS for you. We will patch the runtime for you
12:32
But that tech's not available yet. Today, you own those things. And so I think that's a thing to consider as well
12:39
And then there's the third leaf of this because I know we only have a short amount of time
12:44
which is a lot of our customers make some terrible mistakes. If you're on premise, all your machines are sitting next to each other
12:53
They have Ethernet cables that are 10 feet or 20 feet apart. Cable is long, right
12:58
Everything works perfect all the time. And when you move to the cloud, you're somewhere in a data center
13:08
and something else might be somewhere in a data center. And so one of the biggest problems that we see with people is not preparing their applications
13:17
And what I mean by that is, like, if you're a .NET developer, there's a library called Poly
13:23
And you should be using, you should take all your HTTP clients. That's how you're making your web requests
13:28
And you should create a HTTP client factory. This is capabilities we've added to the new .NETs over the years
13:34
And there's a Poly integration for those. And with that, you can set retry and back off policies on your APIs
13:39
And that means when the network in the cloud burps, maybe something normally takes four milliseconds, 10 milliseconds, it takes a thousand or four thousand
13:48
Your app can be resilient to those types of changes. If you're doing database with things like entity framework core, it has a package as well where you can actually turn on resiliency and that as well, which basically that's a retry policy that's built into the application
14:07
And so, you know, you have to prepare your application, assuming the cloud's not going to be perfect
14:13
And in most cases, you know, you're going to be up 99.99999% of the time
14:18
But there are going to be the wobbles in the cloud. And this is also something we're addressing as well
14:24
So we obviously run a bunch of .NETs at Microsoft at massive scale
14:30
You know, M365 backend, Teams backend, AAD backend. And I'm just that's all
14:36
So it's possible to do because you're doing it. We're doing it. We're doing it at a scale
14:42
With the launch of .NET 8 later this year, we're going to take the packages we use internally
14:48
to make our applications resilient to all these cloud things available to you, the customer, as well
14:55
And so .NET 8 is going to be kind of the cloud .NET in many ways
15:00
It's going to have those capabilities. and we're looking at taking those same libraries
15:06
that we use internally and adding some extra glue as well to provide you with what we call
15:12
a cloud-native framework for .NET for the first time. Other languages like Java
15:18
have things like Spring and we want to bring that kind of
15:22
we already have great frameworks inside of .NET whether it's Blazor .NET 8's got this new Blazor
15:28
where you can do server-side and client-side because we're seeing even the JavaScript folks going
15:33
that way with Next and stuff like that So we have great frameworks We just want to give you the extra glue to make the app super resilient to all the things that can happen in the cloud So to me it I know we crossed a bunch of topics
15:46
It's like lift and shift, pass platforms, being prepared for containers if you want to go that way
15:51
Yeah. And then making your app resilient. Yeah, yeah. Those are great areas of focus
15:59
And if someone who's listening now is maybe not the technical person in the company
16:03
they can pass this list along. And I think it's going to be helpful
16:07
because I couldn't agree more. Like, for example, companies go and say
16:12
we're going to use containers because somebody said it was a good idea. They don't know why
16:16
They don't know exactly why they're doing it, but it's just seemed like a good idea
16:20
And there's a bit of, maybe we can close on this note to think about
16:25
because of course, companies like Microsoft, you're advising your customers to use Azure, obviously
16:30
Hello, use our services. And how do you know how to advise them to do the right thing
16:39
Because in some scenarios, containers might be a really, really spot on solution for that company
16:44
And you say, trust us, use containers. In some other cases, you say, trust us, use platform services instead
16:52
How do you balance this? How do you give advice in these? It's tough
16:57
To me, it comes down to a control thing. so if you use a PaaS
17:02
you give us some control you gave away some control you don't own the operating system anymore
17:06
you don't own the framework anymore we might update some stuff but you don't want it updated
17:10
I can go to the farther extreme I can go you want full control
17:14
we have a great product called AKS Azure Kubernetes Service that's full control
17:20
you can change all the networking you can change all the policies
17:24
you can decide all the scales now you own the cluster now you're doing the whole thing yourself
17:29
You own the cluster, but that means you need to have a team somewhere in your organization that wants to do that
17:35
And so I think finding that, finding the balance between those two things
17:39
I'll give you an example. One of our, one of the companies, I don't know if I can say it publicly
17:46
No, no, do you have to say the name? A great car, a car manufacturer that makes these awesome, amazingly fast, beautiful cars in Germany uses Azure Container Apps for the back end
18:00
And they chose Azure Container Apps because in their case, they wanted their dev team to focus more on development and less on ops
18:08
I think it's always going to be some form of control and is where you're going to decide
18:13
And by the way, we find many of our customers do both. there'll be something i'll give you i'll give you a great example like m365 is a is a something
18:21
that runs on aks why well because that thing's running hundreds of millions of customers and
18:28
they want to scale that thing up and down on a dime to save money yeah but at the same time
18:34
they'll run some of their non-crazy stuff on things like app service or container apps and so i you
18:42
Once again, that's a crazy extreme. Most people don't run it to scale as those things are
18:46
But I think it comes down to how much control do you think you need
18:51
The more control you need, the more ops you're going to need. And that's kind of the sliding scale
18:56
that we think of. Like the tech I build is also app service or container apps
19:01
or functions. They're serverless, which means we can turn it off when no requests are happening
19:08
The price can change as well. So it's going to be some form of what it's going to be cost and control and ease of use
19:17
Yeah. And that's going to be different depending on the actual. There's no magic
19:22
We're working on this for AI bot to actually help answer these questions. No, there isn't a one answer there
19:28
But as an organization, you'd have to look at your organization and your teams truthfully and see which kinds of skills and experience do we have already available to us
19:39
And that's hopefully going to help when thinking about where to go
19:43
Because if you already have the amazing containers team, nothing wrong with going with containers
19:49
You already have the people. But if you don't, that's not going to be a good choice
19:54
It's not a good choice. I would always say don't do a choice you don't know how to do today
19:58
Exactly. Don't make two transformations. Make one transformation at a time. Wow
20:03
That was an excellent point. I love that. if you can't handle it already today
20:08
and it's not going to be like magically the choice for you in the cloud
20:12
It will not make it significantly better. Containers are great if you know how to manage containers
20:16
They're not great if you don't. And so if that's not your skill set and don't assume that containers aren't going to save you money
20:22
So, yeah. So listen, this actually, I don't think that the show can get better than that comment
20:29
So I think this, thank you so much for being with me here on the cloud show today
20:34
I'll call you back at some point. in the fall when you have new things to talk about
20:39
Yeah. Let's show those tools. Yeah. Thank you very much for being with me today on the Cloud Show