The Modern .NET Show

Episode 70 - Picking the Right Azure Resources with Barry Luijbregts

Sponsors

Support for this episode of The Modern .NET Show comes from the following sponsors. Please take a moment to learn more about their products and services:

Please also see the full sponsor message(s) in the episode transcription for more details of their products and services, and offers exclusive to listeners of The Modern .NET Show.

Thank you to the sponsors for supporting the show.

Embedded Player

Episode 70 - Picking the Right Azure Resources with Barry Luijbregts
The .NET Core Podcast

Episode 70 - Picking the Right Azure Resources with Barry Luijbregts

Supporting The Show

If this episode was interesting or useful to you, please consider supporting the show with one of the above options.

Episode Transcription

This episode of The .NET Core Podcast is brought to you in part by RJJ Software

RJJ Software is dedicated to helping you to realise your company’s digital potential through innovative solutions using the latest technologies.

Utilising the latest in .NET and cloud technologies, we can help you build the solution to your business needs, on time and under budget.

We have world class experience in cross platform development using the latest iterations of the Microsoft technology stack. This includes .NET Core; SQL Server; and Azure. Is Azure not your thing? That’s fine, because we have experience with AWS, GCP, Linode, and Digital Ocean, too.

We know what it means to have to be able to iterate quickly, and how important DevOps practises are when it comes to remaining Agile. As such, we have experts in the major build and release pipelines: from Azure DevOps to AWS, from Netlify to TravisCI, AppVeyor, and everything in between).

So get in touch today at RJJ Software, or check the show notes for a link.


Hello everyone and welcome to THE .NET Core podcast - the only podcast which is devoted to:

and not forgetting The .NET Core community, itself.

I am your host, Jamie “GaProgMan” Taylor, and this is Episode 70: Picking the Right Azure Resources with Barry Luijbregts. In this episode I talked with Barry about how to pick out the best Azure based resources for your application stack. Barry is an independent software developer, PluralSight author, the host of The Developer Weekly Podcast, and a Microsoft MVP.

So let’s sit back, open up a terminal, type in dotnet new podcast and let the show begin.

The following is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Jamie

So first thing I’d like to say Barry is thank you ever so much for spending some of your evening talking to me about what we’re about to talk about. Hopefully we get to talk about Azure and the different cloud offerings, and how you pick the right one for your project. So it’s been it’s great to have you with me, because if I’m completely honest, I feel like I could look at all of teh Azure offerings and go, “yeah, I still don’t know which one I need to pick. I’ll just go with webapp that’ll do.”

Barry

Yeah, that’s what most people do. Yeah, absolutely. Thank you very much for for having me on. It’s, it’s an honour. Really.

Jamie

Thank you so much. Okay, so what I thought is, perhaps we could start with a little bit about you. And maybe if you could sort of introduce yourself to the listeners, if that’s alright. So then everyone knows, you know, who it is they’re listening to, and what it is that you do and all that kind of stuff. Is that okay?

Barry

Absolutely. Yeah. So my name is Barry. And I usually don’t pronounce my last name. It’s Luijbregts - aka Azure Barry. So I usually don’t pronounce my last name, because it’s difficult in English and my wife always says that we should have taken her last name, which is Hannon, which is much more easy, because he’s from the UK. But okay, that’s a separate topic.

I am, so I’m a software developer and sometimes architect depends on which role I do, because I’m a freelancer as well. So I serve many different clients in all sorts of projects, usually, nowadays, as you’re related. And I do that for I’ve done that for many, many years. I’ve always been a software developer in the Microsoft space. So when .NET, from the early start of .NET up until right now, it’s an amazing time to be a dotnet developer, you know, .NET 5 is about to come out and .NET six after that, we have all these amazing tools like Visual Studio. Constantly amazed, if you look back, you know, it’s so awesome that this stuff exists Visual Studio code, and all that stuff is just amazing.

So my focus now is on Azure. And then on the developer part of Azure, which is still huge, because Azure in total has, I don’t know, 160 something services, including all the infrastructure services, and then maybe the developer services might be 100, or something - depends on what you count on service and what you count as a feature. I try to keep up to date with all of that, and use that for my clients, and try to assimilate all the information that comes out of Microsoft for Azure, so that they can advise my clients into what they can use the best for their projects, and also uses myself within projects that I do for the clients. And then I also try to teach those topics in PluralSight courses that I also create.

Jamie

Excellent, there’s a there’s a whole bunch of stuff to unpack there. But I think you’re absolutely right. I think right now is the best time to be a dotnet Dev, there are so many things out there that we can use. There’s you know, you said yourself Visual Studio, which is, you know, if you’re if you’re a small team, or you’re working or like, I’m not going to get the licencing, right, please view the licencing yourself. But my understanding at this time as we’re recording is if you’re a small team, of maybe up to four developers and or you’re doing open source, you can get Visual Studio for free. As an enterprise version, there’s a community version, there’s Visual Studio code, which is a wonderful editor that can practically do anything. All of that while Visual Studio code is free, right? And all the things the Visual Studio can do. It’s kind of like a Swiss Army Knife of development tools. It can almost do anything, really, you can edit, edit almost any type of file, it can open database connections and visualise all sorts of connects to the cloud. All sorts of stuff that I can do, I can do Docker things. You can even interactively debug an application that’s running inside of a Docker instance, from Visual Studio, it’s just the amount of things that it can do is just, I don’t want to say insane, but it’s kind of mind boggling when it can do.

Barry

Yeah, and you know, we really need to appreciate that a bit more, I think because we are so extremely spoiled. If you look over the fence a little bit like what let’s say Java developers are using. I love your Java developers. Oh my god, I’m so sorry for you guys. You know, IDs and stuff. It’s so much worse than Visual Studio as in usability and the features that it has. We are extremely spoiled with what we have. It’s crazy.

Jamie

Yeah. I feel as though that’s partially because I get the feeling that Microsoft dogfood all of their tools. So you know, Visual Studio is used To build Visual Studio, and to build dotnet, and to build C sharp tools and Windows things, you know, it kind of makes sense that, hey, can we iterate on this and make it better? And since I mean, I mean, sun and Oracle, have sort of overloads of Java, but they don’t tend to produce as many services and applications and things as Microsoft do, at least for you know, I haven’t had that much experience using them. So I guess they don’t have that much experience in dogfooding, their own stuff I know of Oracle because of the database technology. And I know of sun because of Java. But that’s, that’s it? Yeah,

Barry

yeah, absolutely. And it always feels a little bit a little bit like, you know, Windows 95. applications that you open, it’s just not a nice feeling. Yeah, so you know, we’re all we’re standing on the shoulders of giants with all the stuff that we’re currently using. And I think we need to appreciate that.

Jamie

Oh, absolutely. And not just that, like a third party tools. So I’m a big fan of using JetBrains. rider. And obviously, if you’re a C sharp developer, you’ve likely heard of resharper. And just those two tools, just I feel like that they should be included in everyone’s toolset but not relied upon, right? They resharper is a wonderful tool. But you shouldn’t really rely on it, to do your work for you. But you can use it as an education tools. Or you can say, okay, what’s, how can I refactor this? Oh, I get that. Now, I understand why you’re saying that I should replace this for loop with a select statement. Because I get it. It makes more sense. It looks as an way. Absolutely. Just going control control control. Yep, check it in. Not so much. No, I

Barry

totally agree with that you absolutely need to understand what the tool is doing, instead of just having it refactor and then say, I don’t know what it did. But it’s probably good. Right?

Jamie

Exactly. It’s like, you know, a friend of mine, fancies himself a writer. No, wrote a whole passage of stuff, and then just throw it at the spell check engine and just accept everything. And they put it out there. I don’t like I’m not a writer. But this doesn’t make sense to me. Maybe should go back and try again.

Barry

Yeah, that’s probably not a good idea. No.

Jamie

Yeah. But yeah, I get the feeling that the tools like resharper, and part of the functionality of resharper has been included into Visual Studio. So those kinds of tools, those refactoring tools, they’re great. They’re a bit like chainsaws in that respect. They’re really good at getting carving down the craft of something. But if you use it wrong, you’re gonna lose a finger.

Barry

Oh, yeah, absolutely. Yeah, you’re right. Lots of resharper is now included into Visual Studio, last latest version 2019, or 20 19.6, or whatever, because it’s released every week, I think, or every week, which is great. You know, like, I did a course on what’s new in Visual Studio 2019, when it first came out, they had intelli code. Have you ever used that?

Jamie

Is this the the artificial intelligence engine that tries to learn how you’re writing code and suggest things?

Barry

Yeah, which it’s really, it’s pretty clever. And I think they revamped it a little bit, and now brought it out, again, to just get people to use it. But it’s really clever, because so you can train it on your own codebase. Especially if you have a large code base, this is very useful. Because then it will suggest in IntelliSense, hey, you probably want to use this method of this class, in this particular context, because that’s what you did in lots of other places as well. I love that stuff.

Jamie

So we’re almost at a point where we can go File New File control dot insert code, right.

Barry

Almost. Yeah.

Jamie

Excellent. Excellent. leveraging the power of the cloud, which I suppose we’re going to talk about in a minute. But yeah, you’re absolutely, yeah. But yeah, the the amount of tools and, and, and cloud things, and all of this stuff is taken care of for us, right? I mentioned earlier on that, you know, I’ll just go give me a web web application, I’ll just throw my card at it. And I literally don’t have to do anything. I don’t have to worry about a server. I don’t have to worry about firewall things. I mean, I can if I want to, but I don’t have to worry about I don’t have to worry about getting a URL. I don’t have to worry about getting a TLS HTTPS certificate. I don’t have to worry about ci CD. That’s all taken care of for me. And I mean, that’s not just as your AWS does this, too, right. And Google Cloud, they all kind of it’s all wrapped up in Are they different ways, but they all do things in a, they all achieve that same goal of how do we get this app out there or this service out there for people to use? And I think, whilst That’s wonderful, I push a button and it just appears. It’s which button do I push? You know? And? And, you know, because? Because they’re, I mean, the cloud itself is a huge subject, right? I mean, let’s talk about how it started. Initially, as just the marketing term, the cloud comes from how we used to draw block diagrams of how the application would work. And there would be a literal picture of a cloud that represented the internet, server over here, a cloud over there in a database there. That’s where it came from. Right. But, but like, for developers who have spent all of their time working on prem, going from I have a server in in a data data warehouse or maybe on the premises, and I’m moving everything to the cloud. Like, how am I going to pick the right thing? Like how do I even pick as your AWS, Google Compute linode digitalocean? There’s a whole bunch of them, right? Almost everyone’s doing stuff. platform is ServiceNow. So I guess, what the heck, how do you even pick one?

Barry

That is that is very difficult. You know, if you look, if you look back, when all the big players started to create the cloud platforms, they really started to create utility computing. So you’re computing as a service. And they all started out with virtual machines, basically. So now your virtual machine, on premises, or even under your desk on a server running somewhere, that’s your machine, that’s your server. And we’re just gonna have it now in the cloud. And then the only benefits they had in the beginning was because it runs in the cloud, when it goes down, we’ll make it go back up again. So you don’t have to worry about all that stuff. And also, it’s more secure as well, because you know, we run this whole thing. And we have firewalls, and we have all this stuff and people that know about security. So you don’t have to do it all yourself, you don’t have to put a physical firewall between your desk and the server that’s under there or something. So that was was the first step I think, and and then they all went on to create more and more powerful and easier to use services that basically take care of all the plumbing of all the stuff like you said, you just click on something like a web app. And then it’s just running and you don’t have to take care of the service. Basically, you don’t have to take care of running it, you just run your service, you don’t. You don’t care about the infrastructure, you can care about the infrastructure, you can run a VM, for instance, and then have lots of control over the virtual network and all that stuff. But you don’t have to, if you don’t want to, you can just run your app. And that’s the lovely thing about the cloud. So you can just create your application and just put it somewhere and then it just runs. And it takes care of load balancing high availability, scaling automatically. All that stuff that used to take weeks and months to configure web farms and all that very, very complicated stuff with sharing session state, which are really, so horrible thing to do. And now it’s all just a slider where you just scale up and down. But to come back to your question, how do you even pick a cloud provider? Well, now you have, like you rattled off, I don’t know, five or six or something. But there’s just a couple of very big ones that basically all do the same as Microsoft, that’s AWS, or Amazon Web Services. And that’s the Google Cloud. There are a couple others that trail beyond that, but they really don’t have a very complete service offering. But those three big ones really have a more comparable service offering, they basically do the same thing. At basically the same prices, really, you know, it differs a little bit. But it’s all basically the same thing. But I usually advise customers to do is to pick what you’re comfortable with. If you are working with the Microsoft stack, you’ve always worked with Windows servers, servers, or sequel and licencing. from Microsoft, you already have the connections with your Microsoft Office, go with Microsoft, if you’re not comfortable with Microsoft, and doesn’t really matter what you do. And development wise, you can if you do Java, or even if you do dotnet, you can still go to AWS as well, because they can run anything as well, it doesn’t really matter. Same goes for Google as well. But if you really want to have a very reliable partner in cloud, that is, that is their main business model to run, then that’s Microsoft, because Microsoft nowadays is cloud. They kind of make money a little bit with Windows and Office. But the main business model right now is the cloud. That’s what they do. If you look at Amazon, yeah, they make a lot of money with their cloud. They do that sort of stuff as well. You know, they send packages to your house. That’s fine, too. But their focus is not per se only to cloud. google the same thing. Yeah, they have a cloud business. But they also do lots and lots of other stuff. So you have to take that into consideration a little bit. I’m sure. They’re all very good, of course. But I like to put my money into Microsoft, because they have their extreme focus on the cloud. If that goes wrong, there is no Microsoft anymore. So they will definitely keep investing in that. They will keep it trying to keep it better, and more organised and more useful than the other providers. And I think they’re doing a very good job at that at the moment.

Jamie

Yeah, I have to agree. I know that. So I don’t like to refer to the ongoing situation as anything other than the ongoing situation. But when that whole thing kicked off, I know that a lot of businesses immediately went right, we need to go to the cloud, and set up teams or slack or something to get everyone involved. And I know that then almost the entirety of Microsoft’s Office Suite is kind of mostly powered by the cloud, right. And the fact that people could take all of their business online, send all of their staff members to work staff members, or send all of their, their teams to work from home, fire, lots of teams instances, and everything just kept working. Right. I was always involved with things other than development work. That wasn’t, you know, any kind of work work. But I was sort of consulting and giving advice on all things that were not nothing to do with development during the early parts of the unfortunate and that’s the current situation. And just jumping from one team’s chat room discussion to another all of these conference calls, and it just worked for it. And that’s, that’s all, that’s all the cloud right there. All of that is powered by the cloud, though, you can’t get away from that Skype teams, I think it used to be called was it links, it used to be called the link links are in SQL Server, all of this stuff, everyone’s apps that they threw up onto, as your are these test apps for Hey, I’ve just made a blazer thing. Or I’ve just made a dotnet core thing. Everything kept working, which is just amazing when you think about it.

Barry

Yeah. But they’ve been doing this for a while as well. Like remember MSN Messenger. That was also the cloud, early versions, but it was Microsoft data centres. So they’ve been building and running their own data centres for four decades now at eXtreme Scale, because everybody had it back then. And it woke me up as well. Another extremely popular service, I think it’s still around. No idea. outlook.com now, isn’t it it is it, that’s what it is. But they’ve been doing it for a while. And they they develop this stuff themselves. And they keep developing stuff. Like they have project Natick, for instance, which is where they develop data centres that can be deployed under the water. So in the ocean, because they they found out that a lot of people live near big waters, so near the ocean line, or near big lakes or something. So if you can deploy smaller data centres there, they have more coverage, which means less latency, so less time that signals need to travel over routers and wires and stuff, which just saves us milliseconds per request, which adds up to lots and lots of time, which makes things significantly faster, and also more reliable. Because when one goes down another one tick so so they’ve been building this huge infrastructure of data centres all over the world for decades now, they have way more data centres than AWS and Google combined even. And they can now leverage it, especially, like you said, with the current situation, everybody goes to the cloud, the digital digitalization of the workspace has been in hyperspeed. And so Microsoft has been able to deal with that. And everything still works, which is incredible. You know, that’s the cloud for you. It just makes things work. It takes care of all the plumbing, all the boring stuff so that you can do whatever you need to do. Is it a like a teams meeting? Or deploying your app? That’s what the cloud does.

Jamie

Yeah, and not just that, like one of the things that I thought of when you were talking about the underwater data centres and let’s shave a few or I don’t want to reduce it, but let’s let’s reduce the time it takes to get the data out of the data centres. And then I think we’ll, I can have a database based in the UK, and the database is mainly based in Western Europe that are hundreds of miles apart, but they are automatically sync synchronised using acid technologies and stuff so I can write to I can have one instance of my app that has the UK data centre SQL Server instance, as its main instance. And if that ever goes down, it just silently switches the Western Europe on. But the Western Europe one in the UK one I kept in sync for me automatically. And everything’s backed up as well. Right. So I’d have to go in and go shedule a backup, because, as far as I understand, it’s done on a transactional basis. So the backups are taken for every transaction, I believe. And each action is a transaction. So Oh, somebody wrote something to the database and the broker. Okay, let’s just rewind to before then, and change that name move forward. Again, it’s, it’s glorious. Now, all of that all of those difficult ops related things are completely removed. They’re all taken care of, regardless of as your AWS, Google Compute, they’re all sort of, like you said, they’re all offering the same thing, right?

Barry

Yeah, they’re basically offering the same thing, also in terms of reliability. So what you’re talking about is, when you have an Azure SQL Database, you can turn on geo replication, which means that you have another instance in another region, like in Europe, or the US or whatever. And then it actively replicates data from your main instance to that other instance. And another instance is read only until you failover. So if your instance ever fails, then you can start reading from that application. And it’s magic, really. And even within your own region, without you having to configure anything out of the box, when you spin up a new Azure SQL Database. It backs up everything in three times within the data centre on storage, because it’s just on Azure Storage, where the actual data lives. And then it also backs that same stuff up three times in another region in case that region fails. And that’s just the standard Azure Storage backup without you doing anything, really. And then it does, like you said, transactional backups. And also every hour, it takes a full backup of the whole database, without you configuring anything. That’s amazing. And you pay pennies, because it’s storage and storage is extremely cheap.

Jamie

Yeah, I do remember, one of my older roles was sort of early DevOps days. So you know, a couple of years ago, and it was, hey, we have all of these database instances, in lots of these data centres. And we need you to sort of come up with something that unifies their backups, technologies, their backup strategies, and shift all of the backups from those data centres, because it’s slowing them down and making them more costly, put them somewhere else. And I spent ages trying to figure out how do I, you know, maybe a backup system that will fire at two o’clock in the morning, and it will collate everything and throw it over here? But what if, what if someone switches that server off? That I’m trying to backup from? Or what if the backup gets 95% of the way over, and then the file that it was transferring, the transfer was dropped or whatever, there’s all of these things you don’t think about? Until disaster strikes. And I just I love that someone, or a large team of some ones have figured this problem out for me. I just get on with the difficult part of writing the app. And, and and deploying it. And even then the deployment, like I said, right, click Publish. Done.

Barry

Yeah, exactly. And that’s the thing, isn’t it? Because these are extremely difficult problems. Dealing with backup, it seems simple. But it can become extremely difficult. What if your database very large takes maybe hours? Maybe it takes one hour? So you have to do it incrementally? What if somebody turns the server off? So Microsoft, and all the other cloud vendors, they think about this stuff? They have been doing it for decades now. So there’s best practices on their site, so that you don’t have to do it? And like you said, you can just deploy your app and focus on your app. And that’s the power.

Jamie

It is it is. But then I suppose, in your opinion, then before we go on to like, how do I choose the right thing? Should there be a point during requirements gathering or that early planning stage of which cloud? Or which application within the cloud or which, which, which resources within a cloud? Do we need? Or is it just a case of we’ll just rent the app? And then we’ll split it up later?

Barry

No, no, definitely. Yeah, that’s absolutely part of it. So if you are, let’s say you are designing your solution, which consists out of, let’s say, a web application or something. So it’s an app that you write, let’s say, an ASP. NET Core. So that’s a bit of code you have there, it needs to live somewhere, but it has requirements, right? For instance, it needs to be up or 99.99% of the time, or maybe you need to be up more. And it then has data and that also has requirements. Is it document data? Is it relational data? Is it something else? How large is that data? If Do you need that data in multiple regions as well? Are your users just in one, one region? Are they only in the UK, for instance? Or are they distributed globally? And do they they need to be able to write something in the UK and instantly see the same thing in the US? For instance, those are things that you need to take into consideration at the start. So at the at the start, you need to pick your Azure services that fulfil all of those requirements. Because there you also pick all do I need a lot of control, for instance, do I need to instal weird stuff? Like, maybe it runs on dotnet? core? But maybe you need all sorts of weird things that only run in a VM? For instance, we’ll recommend it, but you never know. Maybe you’re deploying some legacy thing? I don’t know. So at that stage, you already need to pick and pick between a web app, let’s say or maybe, maybe it needs to be in a container or a VM, or something else.

Jamie

Sure, I guess things like if it’s using Service Fabric, or, like you say, if there’s some kind of orchestration required, you have a bunch of Docker instances, and you need to have it all scalable. And, you know, if you’re building let’s play buzzword, bingo, if you’re building micro services that are going to be infinitely scalable, and always going to be on and, you know, they’re going to be completely transactional, it doesn’t matter if one of them dies, we’ll just bring it straight back up. Well, you need to know that ahead of time, right? It’s pointless right here, monolithic ASP. NET app, if it’s got to be inside of Docker containers, that is orchestrated by Kubernetes, or something similar? Because it just is not going to work, right?

Barry

No, you’re gonna make a lot of very different choices when you’re actually creating your application. So you need to know that up front, but it needs to be driven by the requirements from the business. So how up does this need to be? And what do we actually need to run? And from there, you take a look of all which technologies can actually fulfil those requirements, and not the other way around? Which happens a lot like are we gonna do microservices, and it’s all in Docker. And it’s all containers and Kubernetes. Because Kubernetes is cool. We don’t really know why we’re using it. But it is just so cool. Look business, and they’re like, what is this? I just want it to be to run I don’t care about Kubernetes. He cares. I just needed to run?

Jamie

Yeah, I’ve seen them a number of projects in the past where the either the developers or the company behind the project have gone, we need to be Netflix to start with. And I’m like, are you building as a blog? That’s, that’s literally all you’re building. That could literally be a static site. You don’t need microservices and all of this crazy architecture, you don’t need messaging systems, you don’t need an event queue. Why have you got an event queue? It’s a blog. What is a blog needed an event queue? I don’t understand. And I feel like sometimes this this almost techno joy, how can I use all of these hundreds of different components in my application. And it’s, it seems a bit silly, really, I try to work the other way around. So I try to work upwards. Instead of going at the top, I’m going to you know, like I’ve seen someone do microservices, Vue js, and node and all of these hundreds of pieces of technology talking to blazer talking to document dB. And it’s just this ridiculous map of technologies. And they’ve built a brochure where single page app, like a single page of HTML, like that is amazing that you’ve been able to tie all of that together. But I can go angle brackets, HTML clause, I got brackets, angle brackets, body angle brackets, and I’m done. You know,

Barry

keep it as simple as you can. More components that you introduce the more things that can break and will break at some point. That’s that’s just how it goes. And not only that also in the more it will cost, not only per month, but also operational. Somebody has to take care of all that stuff,

Jamie

you know? Absolutely. But with that in mind, and so we’ve, we’ve talked a little bit about how you would you have to figure out what you’re going to build first. There’s there’s a couple of different methodologies for building apps, right? We’ve talked about, we’ve mentioned monoliths and micro services. And I’ve got written down the 12 factor. Because the 12 factor app and cloud architecture are kind of intertwined. Is this something that I need to know as a developer before I even start my application, if we decide to use as your or can I just throw something out there, get a demo version? And then maybe we’ll split it up afterwards? I mean, everyone knows the minimum viable product is going to be the product, right? But let’s say we live in a perfect world, we’re allowed to release a beta and it stays as a beta. And the the the actual release project is different, right?

Barry

Yeah, I’ll definitely never release your MVP. But I’ve seen that happen a lot as well, you know, because it’s so cool, and it works so well. So we’re not going to throw that all away because it was months of work.

Jamie

Absolutely So.

Barry

But before you start to develop stuff and architect stuff for the cloud, you need to know about design patterns, right? So you already needed to notice, but now it is more prevalent. For instance, when you’re talking to a database, it will fail at some point, you will have a transient error, which is, which is an error that will resolve itself as a hiccup in the connection from you to the database, for instance, you do a call to a database and it fails for some reason, the next time you call it, it works. So you need something for that you need to have a retry mechanism in your code. Now luckily, in let’s say, if you’re using Entity Framework, it’s baked in there. And lots of other SDKs have the same same things. But there’s lots more where that came from. So things just fail at some point. And that doesn’t mean that the cloud is something that always fails, no, your server on your desk also fails. If you if you bother to, to look at it, actually, it probably feels much more than the cloud. When you the cloud, things start up again. And instances where things are running or like an Azure SQL Database might change because they might be updating some underlying infrastructure or something. And for a millisecond, just something changes, and the connection might just drop, good could happen. And that’s not a bad thing. But you just need to be prepared for that. So you could use Entity Framework, there is also out of things like Bali, for instance, which are third party library that does retry circuit breaker, all that good stuff. And there’s lots of cloud design patterns that you need to be aware of to do things like this, including offloading things to CD ends, using a queue if you really need to, of course, not to just use a queue. But to introduce reliability in your messaging, as in, if you want to send something to a database, and you have many, many, many, many things coming in, and you need to all send them through a database, maybe it’s a good idea to put them on a queue, so that the database or the background process can pick those things up in its own time, instead of having to do it real time and maybe fail at it because there’s too much load on it can do it in its own time. process it and then it’s done. depends if that’s possible, of course. But yes, you need to learn about these type of design patterns. And so clouds and reliability, performance and availability programming, let’s say, before you actually start to design for the cloud, but I, in my opinion, you’ve always needed to notice, you know, this is nothing new. But now it’s just becoming more obvious that you actually need to use it. But your servers always went down.

Jamie

Yep, yep. And even then, even in a perfect system, there’s gonna be like, you can’t, you can’t protect for everything, right? Someone’s gonna trip over a cable and pull the cable out and the machine goes off. What happens ever Oh, or some strange weather pattern brings about some kind of subatomic particle thing. And you ended up in Star Trek, land, talking about subspace, and all this kind of stuff. But these kinds of things can happen, you know. And it ranges from the whoops. Jane has fallen over the gable. Let’s go help Jane, let’s make sure she’s okay. Oh, wait, she’s taking out the server as well, at the same time as plug that back in and wait for it to start up, again, all the way up to I believe there was a time a couple of years ago where there was a stone, not at a data centre, but near a data centre, which took it out. And that’s just it’s, it’s, it’s crazy to me to think that a stone that is a couple of kilometres away from a datacenter has the electrical power to wipe out a part of a part of some business, right? Let’s say 50,000. People can’t access Netflix because there was a electrical storm near not at the data centre, as just as crazy to me to think that there’s that much infrastructure in place. But then none of those users would have realised because there’s backups for the backups for the backups, because these ops geniuses have taken care of it all for us. Right.

Barry

Exactly. But that also meant that people that programme, Netflix in this example, also programmed it to be reliable, and to retry things when that database went down. Because maybe the database went down, you retry retry and you’re redirected to another database, you’d be trying and it works again. So maybe you see a little bit of a glitch or something where your your finger loads for a couple of milliseconds longer, but then it works, but things go down. It’s that simple. And all data centres. Just sometimes are wiped out. You know, nature is strong. You see it in the us right now there’s new storms and stuff. I’m sure Microsoft looks a little bit at that and doesn’t plan data centres in hurricane Valley or something. And still, you know, stuff happens.

I’d like to take a moment to tell you that this episode is sponsored by Datadog. Also stick around for the next 30 seconds to find out how you can get a free t-shirt!

Datadog are a monitoring and analytics platform which monitor your infrastructure, application performance, and log management.

Are you looking to move to the cloud, microservices, or .NET Core? Datadog can help with that. Their distributed tracing and APM provide end-to-end visibility into requests wherever they go. Whether it’s across hosts, containers, or service boundaries.

See for yourself! Start a 14-day trial today, and Datadog will send you a free t-shirt!

Find out more at datadoghq.com/dotnetcore - that’s datadoghq.com/dotnetcore - or check the show notes for a link.


Jamie

So we’re saying that the that like the 12 factor app, and things like this are more like, design patterns that you need to know these things anyway. And that, I mean, I feel like I’m just echoing what you said, right? But it’s true. All of these things are taken care of, for us, by the tools and libraries that we’re using when we assume is going to be on one server, or on one instance, right. But as soon as you have two boxes using running the same software, and a user can be redirected to either, and there’s some shared state or some shared database or something like there’s, there’s the old, the old problem of we have two users accessing the same record in the database at the same time, and they’re both writing to it, well take that problem. And then say, well, you’re not just messing with one database. Now, you’ve got 15 of them. And they’re all geo located in different places. And each of those 15 databases is connected to a 30 copies of your application, and that each of those 30 copies of your application have 200 users at the same time. And like, just what, like, do I need to as a developer worry about that huge case there? Or should I start with just okay, what happens if the database dies?

Barry

Yeah, the latter. So so keep it small. Because yes, that can all happen. And you don’t know you, you should assume that your system is distributed. So services live external from your application. And data should live external from your application as in, you’re not saving stuff on disk anymore, you’re not writing to the registry anymore, you’re not saving stuff in your local memory anymore, it should all go. Because you should assume that your machine can go away at any time, because you might scale, for instance, then you have two machines, what are you going to do with the state that’s in your memory, you need to copy that or something. So you should have that somewhere else in an external cache, or external storage or something. Once you have that, thinking, that you cannot store anything local anymore, including session state, which you shouldn’t use anyways, anymore, at least, you know, back in the day, I did it in his field. NET forums, of course, was super cool. But that stuff can’t live local anymore, because your local instance can just go away. But keep it simple for yourself. And don’t, don’t get overwhelmed by thinking, Oh, geez, I now have 200 of these. And then there’s two caches somewhere. And then who knows, this thing might scale out to 10 instances or something. Yeah, you cannot predict that. But you should just assume don’t store anything local anymore. And you’ll be fine. Plus, also remember, most of the things that we use, if we use standard Microsoft libraries, like as your library should talk to as your storage, they already have retry mechanisms. And they already can be configured to use alternative locations as in, if your local region doesn’t work anymore, it will automatically ping, whatever coupled region in Azure is there without you doing anything. So that just works out of the box, including Entity Framework. Does that also for you?

Jamie

Sure. I do love that, that ability to have all of your things in multiple different places and have the failover there was a project I worked on not so long back where I’d said, I designed this system, and I said, the config. So like app settings or JSON is not going to be deployed with the app. The app is I mean, it’s going to have a an app settings dot JSON, we’re just going to use as your config, right. So then, when we need to change the configuration of all of the like, we were releasing 50 different microservices, they’re all using common bits of config. When we need to change those things. We don’t need to then redeploy every single individual micro service, switch them off and switch the back on with literally just one central thing, change the connection string there, and everything is automatically updated for us. And then if that one thing dies, it’s already replicated, you know, 13,000 times so it’s, it’s, it’s just a blue Mum, I blew my mind whilst I was scrubbing externally. And they were like, but But what about the file? I don’t understand. Where’s the conflict going? This is going in some esoteric places. The cloud, don’t worry about it. It’s over here. Don’t worry about it.

Barry

But yeah, it’s external. It’s not on a local file anymore. It’s in another surface. That’s just notice

Jamie

I tend to think of anything that’s not happening right now in the code that I’ve written, or the code of the framework or any libraries that are pulled in. Everything else. Is is ephemeral. Like you said, it can go away, right? If it’s not happening right now in memory, it doesn’t exist is how I try to think about it. When I’m designing the applications that I write, because it doesn’t, right. I looked when I was looking into Docker a few years back, I was like, okay, so you don’t write anything to disk. Because even even Docker, like the documentation for Docker says, it can die at some point, we don’t know. Docker will literally crash. And we’ll just restart it, don’t worry about it. We’ll take care of that for you. But do not write files to disk because you’ll lose them. And I was like, Yeah, that makes perfect sense, actually. Because it is. Excellent.

Barry

It does. It’s a little bit of a shift of the traditional way of thinking, where we always thought that Well, my machine is going to be here forever. But that’s just not how it works anymore. Because we’re agile, then we can scale.

Jamie

Yeah, well, I did that this afternoon, I had to I had to wipe my Windows machine that I do some of my development on. And obviously all the files that were on there. And I won’t read all the data. Luckily, I had absolutely everything in source control, I even have the config for that machine in source control. So it was just reinstall Windows, pull some stuff from my local Git server. And it’s back to how it was right. And I think windows can do that for you. Now anyway, a lot of the modern operating systems, if you sign into an account, it will backup things for you. And then when you reinstall Five minutes later, everything is back as it was, because even the operating system folks go yet your hardware is going to die. And you will want it back in that same state. Or it’s or even doing cloud stuff with the operating systems, right?

Barry

Yeah, absolutely. It’s like Desired State Configuration, really, like I store all my stuff in OneDrive. And just if I do, I make sure everything that’s important, isn’t there. So if my machine explodes, and I need to do a new windows instal, for whatever reason, I just have it all back within minutes or something, or if I have a new machine, I just instal windows on there. And then everything just downloads back and I just have everything where where I had. It’s brilliant, isn’t it?

Jamie

Yeah, we just need to take that, like you said, we need to take that attitude to the design of our applications. The thing that the application is running on is not going to be there all the time. And how do we work around that? Right? Yeah. Well, then, I guess so we kind of hinted at something earlier on. How do I whilst I’m designing my application? How do I figure out which let’s go with is your right, because we talked about as you’re like, how do I decide which resources I’m going to use? Right? I mentioned web app a whole bunch, because that’s kind of like the default standard. If you’re making something for a show, and he’s going to talk to the web, it’s probably going to be a web app, right? But a web app is no good. Really, is a web app any good for microservice. I’ve always thought it isn’t. But is is that what I do? Do I do something else? I mentioned Service Fabric, is that something that you should that everyone should know how what it is? and how to use it? Or? Like how do you go about sort of the discovery of these services and figuring out what works for which solution?

Barry

Yeah, I what I try to do is I try to ask a couple of big picture questions about my application. And then with those answers, I can narrow down the services that I can pick from, and then I look at the requirements that I have, and see if the services fit those requirements. So you can do this in many categories. For instance, like running your app in Azure, or storing data in Azure, or speeding up your application. And as you’re working with messages in Azure, a whole bunch of things. So if you look at running your app in Azure, I asked before following questions, and the first one is, how much control do I need? And that is the question of, do I need control over, let’s say, the operating system. So maybe I need to instal some weird legacy things or some third party library to make my application work, it doesn’t work, let’s say an app service or in in some higher level service. If that’s the case, then I probably lean towards either a virtual machine or any of the container services, if they need less control, for instance, only over the configuration, like you just said, where you need to configure application services, or connection strings, which always have to do of course, but you don’t need control over anything else really, except for of course, the application. Then you move on to Platform as a Service services, or serverless services, which I like to call logic as a service as well. Things like Azure functions and Logic Apps and stuff. And there’s even times where you don’t even need that much control. Or you say, Well, I don’t really care, I just need the functionality of this particular thing. For instance, if you’re using, you want to use machine learning as a service, like an Azure cognitive service, which are basically API’s that you call, you send them a photo, for instance, a picture. And then they sent back a description of the picture. And maybe we found five faces. And we found Jamie as well, here, here he is, he’s this tall, he’s wearing glasses, and he has a beard, for instance, that’s then software as a service. So the first thing is to determine how much control do I need, which also determines how much responsibility you have over your service. If you need a lot of control, as in if you need control over the operating system, you’re also responsible for the operating system. So you are responsible for patching it, to make sure that it’s all up to date, even for the antivirus that runs on the virtual machine. And if there’s a virus on it, that you might have installed yourself, or comes from the internet, or something. So you need to determine if you really need that type of control, because that also involves work and responsibility, which means that more things can go wrong, and you need somebody to actually do that, which costs also money. I usually tend to go up the stack if I can, with less responsibility, and also less control and as your handle running your things. But it depends, of course on what you can afford to lose control wise. So once you’ve answered that question, I usually go on to where do I need my application to run? Is that only in Azure in the cloud? Or maybe you also need it to run on premises in your own data centre? Or maybe you want to your CIO said, Well, we need to run in Azure, but also in AWS, because I don’t really trust it only in Azure, we need a multi cloud environment could be they need something that runs both in Azure and also somewhere else. There are services for that. And then the next question that I usually ask is, then what usage model do I need? And this is then the question

that asks, Do I need this thing to run all the time, as in 24? Seven, so something all month like a virtual machine, or a web app? Or is this something that is just a service or a tasks that runs occasionally, like when I upload an image that needs to be resized, resized, and put somewhere else, for instance, that doesn’t have to run all the time, that only needs to run when I use it. So when I have things that need to run all the time, I have a bunch of services to choose from, like virtual machines, container services, web apps and stuff. And otherwise, I choose from the serverless services. So these three questions I used to pick one of the services for running my application, let me just sum them up what they are, because there is a lot of options. So you have virtual machines, like actual virtual machines that you can run stuff in. So those are on the spectrum of a lot of control, and also a lot of responsibility over them. Then you have the container services. So you have Kubernetes service Eks as your Kubernetes service, which is used to run containers, multiple containers, because that is a container orchestrator service. So it takes care of multiple containers and networking them together. And making sure that if one goes down at it, it brings it up again. And when you deploy it, it it meshes all together. So you don’t have to worry about all that. There’s also container instances and use that to run a single container, just a one off container that you run without a container orchestrator. Although you can combine the two, where you use container instances in Eks. But still, it’s a different usage model to run it in a container instance. There’s also web apps for containers. That’s also a single container that you don’t need the container orchestrator for. And that uses web app features that you also find in Azure web apps. So you have deployment slots, and other features like that. There’s also Azure Batch. And you can deploy a container to Azure Batch. Or you can use virtual machines with Azure Batch, which means you have a lot of control over that. And then as your batch, what it does is it takes whatever task you deploy whatever little programme tasks that you deploy, and it can run that on many, many nodes. So let’s say 1000 containers to scale that up that task and then string the workload all together. Let’s say you’re rendering a big movie file that usually would take days for instance, to render, you can use as your batch for that to just render that in an hour. You pay a bit more of course, and then scales all backwards. Done. And then you’re done with that. Then there’s also surface fabric, which you talked about. And surface fabric is something that is a special service. This was publicly released 2015 2016, or something, Microsoft has been using this service to actually run all of their services are a lot of them, like Azure SQL, for instance, that runs on Azure Service Fabric. So what that is, it is a reliable infrastructure where you can run workloads on. So you can deploy a service like Azure SQL or your own web service, or even your own website to Azure Service Fabric, it takes that it replicates that a couple times, so that there’s multiple instances of that thing that are running, and then it is reliable, it is up and running, it is highly available, it is performant. And you can update it as well, you can deploy a new version, and it just takes care of updating all of the little instances that are running there. It’s basically magic. But you also need to make sure that you know how it works, because it’s not a simple service to operate. I call it a little bit of infrastructure as a service, because there’s lots of knobs to to operate a thing. So you need a bit of infrastructure knowledge, you can imagine that that’s true, because they use it to run their infrastructure. So but from the other side is also Platform as a Service service, because you can deploy your stuff to there. And then it just works. Because you can run this in in multiple fashions Service Fabric can run, you can instal the Service Fabric runtime on your local machine, in your own data centre in AWS, or you use it from Azure as a service. And then you can use it as a platform as a service. There’s even Service Fabric mesh, which is a serverless version of that, which means they take care of running the whole thing. You just deploy your services to it. And they just make them reliable and highly available and performing and all that stuff, which is amazing. But lots of options within that one service even. Then there’s also cloud services. This is one of the first services that was released on Azure. After Azure SQL, one of the first Platform as a Service services, you can use cloud services to deploy a website to it a web app, or a background task. And it just runs those in, let’s say worker processes is a very old service, do not use it anymore. Microsoft’s not investing in it anymore. And they are advising you to use something else. So if you have a web application, just a web application or a background worker, you use a web app for that an Azure App services web app, like we discussed previous before, that’s might be one of the most used services in Azure, because it’s so superduper simple. You just spin one up, and you just deploy your application, your web application to it can be anything can be dotnet, can be Java can be PHP, node, whatever, it doesn’t really matter. Microsoft’s very inclusive, because they want everybody to use this cloud, of course, it’s their business model. And this thing can run reliably out of the box, it does 99.99% with just one instance, you can set it to automatically scale when it gets busier. You can set it to scale, when CPU load is high, when HTTP, Q is high, or whatever metric you were, you can think of or on a schedule, you get the DNS, you get a domain name, you get TLS, all that good stuff. And then there’s also deployment slots, which means that you can create another instance of the web app, you don’t pay for that, that all runs on the same infrastructure. And you can deploy a new version to that new version of your application, test it before you put it into production. And once you think, well, this is ready, it can go into production, you perform what’s called a swap. And that warms up the slot and warms up the production slot by hitting it a couple times. And then it just flips it around. It flips it by actually changing the IP addresses of the slope and the production slope. And then it’s alive without the user ever knowing that you’re doing it. So with deployments lots, you can deploy with zero downtime. I always say in the same family, you also have Azure App services, mobile apps, which is the same thing. You have deployment slots, you have domain names, TLS, and everything. But you use this to host an API, a back end for your mobile application. So when you have a mobile app runs on Xamarin, or whatever it runs on. It always has some functionality that it uses from an API. And the mobile app as your app services mobile app is specifically designed to run such an API, because it offers functionality like push notifications, and offline synchronisation. So when your connection goes down for a little bit, it can then sync back up to a little database that is on your device. And then it has some knowledge of what is synced and what isn’t synced, so that he can do that clever service. So those are all Platform as a Service services, but you do not need that much control. You don’t have as much control but also not that much responsibility. So you just run it, and Azure just runs it for you. And when you need a little bit less control, then you can run serverless things or logic as a service services. Those are things like Azure Functions, everybody’s heard of these, these are awesome. You use an Azure function to run a small piece of code. So you literally can create a function or a method that does something like resize an image and put it somewhere and just put that in your Azure function. And Azure just runs that whenever you need it. And that’s the beautiful of serverless, it doesn’t run all month, but it only runs when you call it. So that means it might just run one time a month, it might run a million times a month, and only runs when you need it. And as your skills it’s for you. So if it’s, it’s being called a million times at one point, and Azure tries its best, of course, and scales it out a million times, which means you also pay for it 10 million times, which is not a lot, actually, because you get I don’t know, five, I don’t, don’t quote me on these numbers, but I think it’s 500,000 instance runs for free on the free tier or something. So you really have to do a lot of work in DOS to actually rack up a bill. And as your function is a small piece of work that you run whenever you need it. And then there’s Logic Apps, which strings, things like as your functions together, as your logic app is basically an orchestration process, which previously, we had BizTalk. If you remember that integration, hell, that was horrible.

Now, this is all in the cloud. And you can just say, Well, I want a new process. And I want this to run every Friday at noon, or whenever I get a new email, or whenever I find this message on Twitter, or whenever there’s a new row in Azure SQL, all these things are taken care of these are connectors that you can just use out of the box, you just configure them things starts running. And in the process, you can call API’s, like an Azure function. When this runs, I call this as your function, or I call this API, this connector to send an email, or to Call this Custom API to do something. And this is brilliant, because these things run serverless. Again, only when you need them. You don’t need to pay for these things. When they don’t run, you only pay for them when they run, they scale automatically. And they are also reliable. So there’s never been any logic app that hasn’t been completed, might have failed, the steps might have failed. But it will always run. Even if a whole Azure goes down. Whenever as your comes up. Again, it will continue to run your logic app if it’s not finished. So those are services that you can use to run your application. And like I said, you can use if you need a lot of control, we use the infrastructure as a service services. So virtual machines, or the container services, sometimes Service Fabric, if you need less control, you use a platform as a service services. So Cloud services, mobile apps and web apps. And if you need even less control, then you can use Azure Functions and also Logic Apps. And like I said, then you can choose where it needs to run, is that only in Azure, or is it somewhere else, if it is somewhere else, then you can run it in containers, for instance, because a container can run anywhere, you can have your container run on your local Docker in your local machine, or in AWS, or in your own data centre, whatever that runs anywhere, you can also run it in Azure Service Fabric, because like I just said, you can instal the Service Fabric runtime anywhere, which means that you can run your applications anywhere, can also run it in a VM. Because a VM is just an image that you can run. And you can instal and run in a VM image also on your local machine if you want to, or in another data centre, of course, the other services, those are Azure bound. So as your functions, app services or Logic Apps, those are things that only run in Azure, which is fine, of course. But that’s the choice that you have there. And then that other question is, how often? Or how do you want it to run is that all the time, then you choose anything but serverless? If it is only when you need it, then you use the serverless services, so as your functions and also as your logic apps. And once you’ve chosen all those things, once you’ve answered those questions, you end up with a couple of services. Maybe you end up let’s say, with all of the the container services, and then you can go and choose from those. And you can do that then well do I need a single container? Do I need multiple containers and an orchestrator, then you’re looking at Kubernetes for instance, do you want things like deployment slots, then you might look at web apps for containers. And then from there you narrow down even further, and you might end up with one or two. And from there, you can take a look at things like pricing, availability, performance, security, all the good things that you look at as a, as a good solution, architect, of course. And that’s kind of the process that you need to take for this stuff. And this is then the extreme example, because running your application as your basically as the most services. And the other categories, like storing data in Azure, have a little bit less categories, and says an example for storing data in Azure. By the way, I’m looking at slides here as well, I’m not just doing this all from memory, of course.

But four options for storing data in Azure, you have as your SQL database, like we talked about, you use it for storing relational data. So tables with rows and columns, and other relational data stores our Azure database for MySQL as a database for Postgres SQL Azure database for Maria dB, because Azure is inclusive, and everybody can use it. And then there is document data stores like Azure Cosmos dB, user to store a document, you can get it out in multiple fashions, as in with a gremlin API Graph API, but a sequel API with a MongoDB API even. But it all comes down to it is a document database. And as a couple other tricks, like active geo replication, and stuff, still should document database. And there’s Azure Storage, which contains Azure file storage, as your queues, which also stores mechanism as your Blob Storage, which can use to store blobs of stuff. So also files, maybe an mp3 file or something. And then as your table storage, which sounds like relational data, because it is a table with rows and columns, but it is kind of loose, loosey goosey semi relational, because this table can actually have rows with different columns in it. So one row can have 10 columns, another row can have one column, for instance, doesn’t really matter. And then there’s Azure disk storage, also, which is useful virtual machines, for instance. And then on top of that, there is the big data data stores, which is Azure synapse analytics, that was Azure SQL Data Warehouse, they just did a marketing thing, where it now is called differently, but it does exactly the same. And there’s Azure Data Lake Store, and synapse analytics. So as your SQL Data Warehouse that’s relational, so that has tables with rows and columns, which means that before you use that, you need to define a schema. So you need to actually already know kind of which answers that you want the data to, to give you. So you know, the questions that you want to ask of the data. And Azure Data Lake Store is a document database where you can basically store anything in there. So that’s more of a store where you store data, that you don’t really know what kind of information you want to get out of there. You don’t really know what questions that data will answer beforehand. Because you can’t really create a schema for that you don’t have to as well. And that’s then the options for storing data in Azure. So how you choose between those, like I already said, you first need to know what am I going to use a document database? Or am I going to store relational data as you’re going to be a normal application that I’m going to build with this? So a online transactional processing application as in forms over data? Or is it something that I use analytics on which then you look at the Azure synapse analytics and data lake, so big data, things to use analytics on? Those are the big questions that you asked there. And from there, you can then filter the choices that you have. And then again, look at the requirements. So look at pricing, availability, the other tricks that they have geo replication, you know, stuff like that. So this is basically my process for filtering all this stuff. And I’ve also created a course on Pluralsight, where I go through all of this stuff. And these were just two categories. But there are like 10, or something, doing speeding up your application, working with messages, securing your application deploying your application, you name it, there’s just so much. But that’s basically the process that I then go to, and go through as well.

Jamie

Sure, cuz that’s one of the things though. I mean, even if, even if we kept going, there wouldn’t be enough time to talk about but like, there’s things like network transports and firewalls and all kinds of lovely, wonderful ops things that you don’t really need to mess with. But if you desperately wanted to, say lock down access to your system, to a certain IP range, or to within Active Directory or to certain users, then you could totally do that too. Right and I guess it’s just a case of just figuring out, well, there isn’t what you need, right? It’s, it’s all talk to your clients or customers and find out what they want.

Barry

That’s the thing. It’s all about the requirements. So if you need this, to not be available on the internet, but only in your within your intranet, let’s say, then you need different services. So you could do that with web apps. For instance, with as your app services, web apps, you might need to choose a different tier, because you have an isolated tier that puts all this stuff within a boundary of a virtual network and firewall around it. But like you said, there’s also services that can just do that, you know, you have virtual network services, there’s all sorts of stuff, there’s peering, there’s firewalls, there’s as your front door, which is something that you can put in front of a web app, let’s say to filter traffic, and to route it. There’s Traffic Manager, there’s all these more obscure things as well. But once you pick there, again, it all depends on what you need on what the requirements are. So therefore, it’s also always important, what I think when you talk to the client in the beginning, and during the project, to involve your your ops team, your infrastructure, your DevOps team, within the requirements gathering, because usually that’s forgotten. like, Alright, tell us what the application needs to do. Tell us what the UI needs to do. That’s usually what we’re talking about. And then later on, we might talk about, you know, how fast does this thing need to be? How up? Does it need to be? Can we update it on Sunday, or something, where we have it down for four hours, stuff like that, because that determines everything else that determines basically everything really, that determines all the services that we can pick. But usually, that’s left to, to after the requirements, phase?

Jamie

Sure. So I know that a friend of mine just sort of that there’s so many things to choose from, right. And one of the things that you mentioned, and I run was this, this idea of logic as a service, that’s sort of the the function stuff. And I know that a friend of mine effectively runs his business, through logic apps. So like, where previously we’d have a virtual machine on one of his on prem servers with hangfire, sitting and doing nothing, until Friday evening, and then doing a bunch of stuff, he now has a logic app that doesn’t even like it doesn’t, it doesn’t practically doesn’t exist until seconds before it needs to run. And then it exists and does its thing and then disappears from the face of the planet, right. And he does things like when one of his clients emails and for report, he has his emails hooked up to a logic app. And if he comes in asking for a report, it fires off an application that builds a report for him, and replies back with his report. So he never even sees those emails. And things like invoicing people, they, every Friday, it runs out all of the invoices and just sends them off. It’s wonderful. And it costs him nothing. Because it’s all part of that free logic tear is, is wonderful. Just there, the breadth of what you can do with as yours is just amazing.

Barry

And and over the years because of the competition that the big players have AWS, Google and Microsoft prices have gone down significantly, not only because of the competition, but also just Moore’s law. You know, things are just way cheaper. So storage cost, nothing. Compute is starting to come down as well. And because of all that, it is so easy now to run an application or a business within the cloud. because like you said, you can do it for next to nothing. If you’re a bit clever. You pick the right services. Even if you run, let’s say, an application in a web app all month, it’s not that expensive. Not really, because you can run your whole startup just in Azure, without costing that much you know, as your SQL database or mon, five bucks, five, five euros, not exactly capabilities that you get incredible. You go and run a SQL server somewhere with licencing. Go do it. See what it costs on premises. It’s crazy.

Jamie

Yeah, there’s even there’s an episode that will come out before this one, with a developer from the UK called Andy morale, who’s proud of the live goddess crew. And they ran two live conferences over twitch using a VM and it cost them 50 pounds. That’s it. Just to run this in this entire conference is 2040 hour conference. 50 pounds because they spin up a VM, run everything through and then shut it down again. And go as wonderful, right.

Barry

It’s such a good enabler. You know, it enables us, all of us to use this incredible infrastructure that’s just out there. Because it’s now accessible to everybody. You know, and there’s lots of plans that you can use as well to make it even cheaper. When you, you could, for instance, pre reserve a bunch of resources, or you say, Well, I know I’m going to use 1000 pounds worth of stuff this year. So I’m going to pay you that already prepay it, and then you get a discount, usually pretty significant as well. So there’s lots of options there.

Jamie

And like you say, It hardly, there are some services that require you to say upfront what you’re going to do, or which technology, but the majority of them are, like with their with their web services, right? I keep coming back to them. Because that’s feels like as your easy mode, you just throw something at it. And it just figures it all out. Like, I can write something like you said in PHP, Python, node dotnet, anything, as long as it’s got a web server, throw it at it, and it just runs it, I don’t need to tell you what it is just like is the directory with the binary in it, go figure it out. And it figures out the runtime and all this kind of stuff and wiring everything up is absolutely wonderful. Yeah, well, you

Barry

do need to do something, let’s say if you’ve run something other than dotnet, in Azure, whether you need to flip the switch there where you say, Well, this is the runtime it actually went to run on. But apart from that it does everything by itself. It was a brave new world that we live in, is amazing. It really is.

Jamie

So you talk to everyone about you’ve done a whole bunch of PluralSight courses on things related to as you’re picking the right resources and all that kind of stuff. I was wondering if I’ll get a link from you in the if the put into the show notes. But what are other ways that people can find out more about you and the things that you’re doing? Is there ever a blog Do you do I know that you do broadcast but other than the podcast and like Twitter was the other the other way to find out the best, best way to find out what Barry’s up do.

Barry

Central way to find me is Azure barre.com. That is my blog. And through there, you can also find my Twitter and LinkedIn and all that good stuff. And also, my podcasts, like you mentioned, thanks for the plug there. It is a relatively new podcast called developer weekly, you can find that just in any podcast app or at developer weekly podcast.com. And that’s, well, you thought it probably it’s a weekly podcast with developers. So we talk about stuff like we talked about today. dotnet, as well. And, and very broad, Azure as well, AWS, and whatever. And from there. Also, you can find me and my PluralSight courses as well. I have lots of courses about Azure, as you know, I am as you’re buried, but I also have courses on other stuff like JavaScript, HTML, continuous integration, continuous delivery, things like that.

Jamie

Excellent. Okay. Well, I’ll make like I say, I’ll make sure to put links to all of those things in the show notes. So if you’re listening along, please click through and you’ll find them along with the full transcription as well. But yeah, all that really remains to say varies. Thank you ever so much for, for coming on to the show and talking about a little bit about Joe. And I feel like you’ve said a lot. But I feel like this is just a little bit about as you’re right. It’s a huge topic.

Barry

We’ve barely scratched the surface yet. You’re absolutely right. It’s so it’s so incredibly huge. It’s, it’s, it’s an art in itself. It’s a whole technology field in itself. But the thing is, it’s fun to get into. But you don’t really need to do that per se. You know, if you just focus on building your app, that’s absolutely fine. Because if then the deaf ops person in your team, for instance, knows how to push this to whatever thing that your architect or whatever has decided. And that’s fine, too, because it will just run there. And like I said, if you then focus on running your app, and making sure that you don’t store anything locally, and use Cloud design patterns, like retry and stuff, which are all baked into the standard libraries, you’ll find and it will run.

Jamie

Excellent. See, I love that parting shot of wonderful advice. I love it. This is why we do the podcasts, right to get all of these wonderful nuggets of advice and share them around. Because it’s a it’s best that people know about these things. It took us all years to figure them out. So I share this information. I like it. But yeah, like I said, Barry, thank you so much. It’s been wonderful talking to you. And I’ve learned a whole bunch about as your I now know that is your is a little bit more than just web apps.

Barry

Thank you very much for having me.

Jamie

You’re very welcome. Thank you.

The above is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Wrapping Up

That was my interview with Barry Luijbregts. Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at dotnetcore.show, and there will be a link directly to them in your podcatcher.

And don’t forget to spread the word, leave a rating or review on your podcatcher of choice - head over to dotnetcore.show/subscribe for ways to do that - and to come back next time for more .NET Core goodness.

I will see you again real soon. See you later folks.

Follow the show

You can find the show on any of these places