 cloud-native applications, you need to move fast, not wrestle with choosing and deploying frameworks. You wanna write useful code without infrastructure, cost, or scalability issues slowing you down. That's where Microsoft Azure Functions comes in. It accelerates serverless application development while making it easy to process and react to events. It's an event-driven, on-demand, serverless compute platform that scales automatically. You get a complete end-to-end development experience from building and debugging locally on major platforms like Windows, macOS, and Linux to deploying and monitoring in the cloud, yet you only pay for what you use. Save coding time with triggers, which enable your serverless apps to respond to events. Really speed things up with bindings, which allow you to connect to other services instead of writing connectors yourself. Do you have complex orchestration problems that require preserving state? Solve them with the Durable Functions extension, which manages the state, checkpoint, and replays, allowing you to focus on your business logic. Azure Functions also lets you choose from a variety of programming languages and hosting options. Simply pick the best one for your scenarios and quickly adjust to meet business needs. Do more with less code while saving time and costs with Azure Functions. Hey, everybody. Welcome back. My name is Jay Gordon, and you are watching Azure Funbites, where we get together and what do we do every week? Well, you know, we have conversations with the people of Azure, or people who build with Azure, or people who are just having an amazing Azure experience and want to share with you all the different things that kick tips the tricks and how you yourself can have an amazing Azure experience. So we just kind of set things up for today, and this week we're going to be talking about Azure Functions and specifically Azure Durable Functions. And to help me along the way, I've got a great guest who I'm going to bring in in just a moment. And I just always want to remind you all that we have our chat and the comment section within Learn TV. So if you have questions or comments along the way, I really would love it if you go ahead and you share them with us. We just want to know that you're with us, you're here, and you're interested in what's going on today. So I'm going to bring in my guest. It is none other than the great Laurent Pignon. How are you, Laurent? Hey, Jay, I'm very, very well. Thank you. And you? I am doing well. I am really glad to see you. You know, we used to be able to know that we're going to have some time together at least once a year or maybe several times a year with some of the tours that we did. But now, you know, things are a little different. So this is going to have to do for today. And I think this is going to do great. And so I really can't wait to learn a lot about Azure Durable Functions and all the different ways that you have found some success with it. Because I know that ultimately that's the thing we really want to talk about. We want to talk about success and how our viewers can be successful with this software offering or software deployment offering is the way I like to look at it. So Laurent, before we get too deep into anything, I just want to remind everybody, we always have a poll. We always like to ask you a question. You are wonderful viewers. And we'd love to know if your organization has implemented serverless technology in your tech stack. So if there's somewhere along the way that you've all put together some really great things, just let us know. And also if you want to talk about them specifically, put them in the chat, talk to us about it. We really want to hear from you. And of course, like I said, if you have questions or comments, send them over. The other thing I want to remind you of is we have Microsoft Learn. Microsoft Learn is a really great way to start learning how to use a lot of the things that we talk about here. And so fundamentals is a really great way to start. And then today, we've got some stuff that comes directly from our course and our module around creating serverless applications. So some of the things you'll see today and some of the things you'll hear today, they come right from this and you'll be able to take this as a free education to learn from. So that's really our getting started and we've got some really great things to talk about. But before we really get started, first of all, how have you been lately? How's time been treating you? Well, you know, it's still a weird time to be alive, I guess, going from traveling the world two weeks a month at least and raking thousands and thousands of miles to a complete stop. But I'm happy to say that we've had actually a pretty good two years and we, I would say we took the opportunity to pivot our team to offer even richer content online and that has been quite an adventure for me and especially the latest things that I'm doing right now which is LearnLive, which is directly related to Microsoft Learn that you were mentioning before and some of the stuff I'm going to show today, I use that actually to build LearnLive to create those episodes and all that so I'm very much behind the scenes for that. But at the same time it's very fascinating to do that and it's very rewarding as well to work with tons of people to make this happen. So that's been good. On a personal note last year, I'm always telling people, you know, people keep complaining about 2020, 2021, 2022, actually 2021 has been one of the best years of my life. I got married my fiance who before was always, thank you, was always back and forth between Switzerland and the Philippines can now stay here and we are finally together for good and we even managed to do a little bit of traveling we went to Iceland, we went to a few places and riding the Harley a lot which before I couldn't do so much because I was traveling so much so it's been a good thing. So all together I'm not unhappy I even managed to speak at two conferences in public, in person this year too that's like a little bit miserable but those who are really good including N-D-C-O slow where I actually gave a deep dive on the durable function which we are discussing today so yeah. Spectacular. I've heard about how you're doing and what you've been up to but for those who may not be very familiar with what you do and what you've done and how you've got here I'd love to ask you, how did you get here? It's been a little bit of a wild ride I basically didn't start my career in a very conventional way because I studied literature, Latin I did nine years of Latin in high school and basically I never thought I would be an engineer one day but at some point I really really really wanted to be a pilot and somebody recommended me to follow an engineering class and during school really because it was a good way to prepare yourself to become a pilot and I thought that was a good idea and while I was studying I really discovered that I love engineering and so the pilot thing didn't pan out I'm not going into the details but essentially I was quite happy on one hand because I really discovered during engineering school that I love engineering I love building stuff that's very creative it appeals to my artistic nature I would say the one that I was nurturing before by writing poetry and all kinds of things and then I pivoted that creativity into software really and you know fast forward years later I joined Microsoft four and a half years ago before that I had been an MVP Microsoft MVP and Microsoft regional director so those are two partner programs people who are not paid by Microsoft who are partnering with Microsoft and I was an MVP since 2007 and regional director since I forget 2015 I guess so I was already working very close from Microsoft anyway and so when I heard through one of our colleagues you know him Scott Cate who's a good friend of mine when I heard that there was a potential job for me there I immediately went to interview and things went well I'm still there in the course of the four and a half years that I've been there I've been through quite a lot of changes old Black Sabbath song right so I've been through changes indeed yeah look at that and of course the biggest change of all being that now we are really creating online content but I'm still a cloud advocate very happy to be an advocate and very passionate about teaching and I think this is really what has you know been accompanying me through my whole career is this desire as soon as I learn something I love to basically pass the learning to somebody else and so before that I was doing that as a hobby next to my main job which was to build stuff and now the cool thing is that when I build something I'm paid to also pass learning to somebody else which is really awesome one thing which has been interesting and you know Jason Hand who's a colleague of ours you know Jason Well Jason and I were talking last year about that the fact that we that we had to bring everything online very fast meant that suddenly we had to build a lot of infrastructure to support that and a lot of automation and that's going into what we want to talk about today because it was really awesome for him and for me that before when we were advocates we were building a lot of demos stuff that doesn't necessarily do something but that shows the purpose but that's actually building stuff which is used in production to build something to build shows to build pages to build all kinds of things and it's been good I mean that was my life before and now it's my life again and most of the code I write today is actually use in production to build you know shows like Learn Life for example and that has been actually pretty nice so yeah I'm not complaining I think it's been I've been very lucky very privileged as well I'm aware I never had to really interview much for a job in my life maybe only the first one the rest has been really through knowing people networking and basically reputation of course does a lot so yeah a lot of privilege a lot of luck also but in the end yeah it's been it's been really cool being here and I'm looking forward to the 40 next years or so yeah it's a great path you've had going from the world of wanting to have people travel along with you and you're just having them travel along with you in a different way making a journey into what their technology skill set is and so I love the term learning in public and I think maybe Kelsey Hightower who's a great developer relations developer advocate at a different company but he talks a lot about learning in public and I really enjoy that concept of you know you learn about something and then you bring it to the masses and ask them to kind of be part of that so love that love hearing about your story I want to talk a little bit about Azure functions today because I know that that's our big subject for today and so I'm going to bring up this page which is right here on the Microsoft Docs section you need to go here to this particular link CDAMS 3CH and you can go run over there right now the long and short of it is Azure functions is a serverless solution you're writing less code you're not necessarily concerning yourself with the infrastructure associated with that and for the most part you're giving yourself lower cost methods of building infrastructure for the cloud by reducing how many things that you are manually building and then in the long run you're not having to configure monitoring on your own you're not having to configure the logging it's all done for you the scale another big part and there's some really great scenarios Laurent we could talk about these really quick one you can build a web API so what do you think is a great example of that yeah I mean the web API saying my favorite part is you can really so I'm very much into static web apps at the moment I think this is fabulous that you can really build stuff where you don't need a whole blown web server which is heavy and expensive to maintain and passing a lot of basically the server logic into Azure functions and then removing most of the logic from the client and building the client client technology you love can be JavaScript I'm partial to view.js in JavaScript because it's lightweight and it's kind of a view model approach which I knew very well from my days in WPF and in cell light so that's cool I build a lot of stuff with view but also I do a lot of blazers this day because I'm a .NET guy and so blazer is cool for .NET and I build a lot of things but of course when you have a pure client application it's a little bit limited you need to call something in the back end because otherwise it's poor and of course a very nice way to do that is to build a web API using Azure functions and then we have of course different ways to host that but a great way is static web apps on Azure if you deploy you know you point static web apps to a repo where you have a front end built with client side technology and then the back end which is built using Azure function you have an automated CI CD going on it deploys everything builds everything and then you end up with a beautiful web page with a web API which is there now obviously technology is never black and white and the conventional way of building web APIs for example for example for the MBC it's still there and sometimes it makes sense sometimes having something which is maybe a little bit more stateful and maybe a little bit more I know stateful and API don't go well together but you know let's face it sometimes you have to be or just having this concept of controllers to build your APIs that can be actually very powerful but for many scenarios function based web API is actually a great solution and it's really way easier to maintain so it's also going to be a lot cheaper I mean if you go from running a simple ASP.NET website like for example when I had my blog running on ASP.NET my blog and my website I would pay maybe something like 30 bucks a month now it's not huge but it's still quite a lot for private thing and then after that simply by putting it on static web apps with a few functions costs to maybe 2 or 3 bucks a month right so divided by 10 it's not better so yeah so that's a great scenario I think me I use Azure functions for automation quite a lot I am automating a lot of pipelines and this is where I use Azure functions the most I would say but of course if you build application if you build for example also a mobile application using whatever technology you want on iOS and Android having a serverless backend and then maybe also a serverless database could be Azure Cosmos DB like a small instance or it could be something even smaller maybe PostgreSQL on Azure or MariaDB on Azure or whatever you want really and having the function in between and doing all the interface there all the APIs there that's a great solution really wonderful and so there are some rather really great use cases and we'll talk about what your use case was in just a minute using durable functions which is an extension of functions but another thing that I really can appreciate is one you can process file upload so let's say there's a change in a blob storage container and you want something to happen on behalf of that it will build serverless workflows and that's what we're talking about today respond to database changes like changes within Cosmos DB best way to think about that is let's say you're creating a ride sharing app and you're storing locations you know longitude and latitude from a certain area you'll be able to store all that is unstructured data within say a Cosmos DB database and then every single time there's an update to that database you can do something you can run some business logic like send the ride location back to the application send it up to the end user so they know oh here's my ride it's on the way I really like this idea we need to get rid of the dedicated Cron server I think that's something that's really kind of thrown way too much additional infrastructure requirements in front of people especially developers who want something to happen based on a time so running scheduled tasks I think is really great because then we can have predefined time intervals and then here's some other use cases reliable messaging queue so if you're using Q storage service bus if you're working with IoT streams or you want to process real time data and signal R that's something that Chris Norrig and I are going to actually be talking about next week my love signal R is one of my favorite services in Azure I build some really cool stuff with signal R in functions so what we're going to be talking about next is durable functions I'd love to hear exactly what are durable functions and how they differentiate from standard Azure functions absolutely so maybe before we go there let's talk a little bit about the use case so on my screen I have a page which is the Microsoft Ignite November 2021 web page and before that we had build in May and then we had Ignite again in the spring in March and what happened to me is that probably in February I would say so like months before the event that started in March my manager at the time came to me and said hey we need to build something like a prototype of showing how we could basically host videos on docs and that was relatively new so now a year later almost a year later well actually yeah almost a year later he knows that we had a huge migration from Channel 9 to docs for videos so now our our website for docs is here for videos is here right this is where we have all our videos but essentially a year ago we had nothing yet and so part of my assignment if you want was to build that and basically to bring quite a lot of videos on this website and this website to give you a little bit of a background essentially we build our docs on github so we have repos on github where we have some some markdown and some yaml pages and every time you commit something there there is an automation happening which builds those pages that you see so this is the HTML result of that and so my boss was telling me okay so there is an API somewhere which is going to give you all the catalog of all the videos that you have during Ignite and what I would like you to do is check this API from time to time and then check if there are some new videos which have been released and add them to the website and his his SLA if you want or his request to me was that okay when the video is released if we can have it online 48 hours later that would be great so I started looking into that and started saying okay how can I do that and 48 hours was a very long time to me so I would like to be much faster than that so essentially what I built is a pipeline which is working on the recurrence and so I say alright so every half an hour because the session the average session length at Ignite is around half an hour so every half an hour I'm going to go and hit the API I'm going to get the JSON and then I'm going to for every session which I'm going to check some criteria to know if this session is ready is it has it already been played on the on the live stream it available is there a thumbnail for it etc etc a few criteria like that and then based on that I went ahead and then I started generating some markdown so this is a markdown that we see now on my screen and this markdown is generated automatically and then after that for example here I mean to general and if I go and check the key segments for example and here we have the Ignite opening and all those pages are generated automatically and in the back end it's actually some markdown which is generating those pages and you see the video ready to play so that's interesting but the problem that I was hitting there is that I need to run this pipeline every half an hour and this Ignite we have something like 300 videos so essentially every time I need to process 300 items and potentially generate 300 pages and then commit them to GitHub and so I built also an automation which is using the APIs the GitHub APIs when commit automatically as well so 300 it's a lot right and so when you run this in the sequence it takes about 35 minutes to run the whole thing and unfortunately if I want to run that every half an hour you see that there is a problem somewhere right it's going to take longer times in the time out plus also there is a problem with Azure Functions the standard Azure Functions is that an Azure Functions can run for 5 minutes and then it's going to time out now if you have a premium plan you can extend that all the way up to half an hour but at some point the function cannot run and also I didn't want to take a premium plan for that it sounded a little bit silly so instead what I decided to do is use durable functions and so essentially durable functions allow you to bypass some of the limitations of normal functions so what I thought we could do is maybe just build a quick durable function before we do that I just wanted to make sure that you're a .NET person but I wanted to show everybody what languages are actually supported with durable functions so we've got C-Sharp which right up your alley JavaScript, Python, F-Sharp, PowerShell these are all available for you to develop your functions with really really important that accessibility to different people skill sets is there and I also just wanted to remind everybody before Laurent starts showing us a little bit more about how to create this function that we have a poll and if you'd like to take the poll you can head over to the Learn TV website aka.ms where we're asking has your organization implemented serverless technology in your text app so you developers if you're watching right now let us know hit that poll and also remember we've got a spot for you to be able to ask questions to leave comments we've already seen there's some lively conversation already going out Happy says I'm loving it and saying it's a fantastic session and there are some questions about availability for progress, isolated mode which we can talk if we get some time about that and see if we can answer that I just want to say something to that I want to just underline that I'm actually not an expert in durable functions by far, by all means I'm really basically a builder of stuff so I see a few questions there are some questions that I know the answer of for example is .NET 6 supported the answer is yes there are some limitations that somebody else answered in the chat which is great but essentially what I think we should do now is probably save them absolutely and then we'll direct that to Jeff Hollen who is basically the master of functions at Microsoft and then we'll find a way to answer that maybe we can do a page or something like that some of the questions I actually don't know the answer I'm very sorry about that but the fact of the matter is basically I'm a builder I'm building stuff and I'm not an Azure function expert I can do another session at some point with Jeff or with Anthony Chu or basically a few people who are really amazing at those functions or Chris Gillam also is the architect of durable functions and they can go deeper but here I think I'd like to show and also in addition to what you said about the languages so C sharp, sherd, .NET Java, JavaScript, Python, etc also the tooling is actually huge so you can do and start functions directly in the command line you do a function and then basically you build your function and then you start it and me I'm a dinosaur I love Visual Studio it's awesome, it has everything I need to do it makes my coffee in the morning I love it, everything is integrated but really a lot of people are doing functions in VS Code and that includes probably the function teams themselves so VS Code is a great platform to build that and VS Code of course is available on Windows but it's also available on Mac and on Linux which means that basically you can build your stuff including by the way functions in .NET because .NET now can go on Linux on different platforms so this is also a great place now personally I like Visual Studio I'm going to show it in Visual Studio but again everything I show you you can do it in other platforms so if you want to create a durable function what you would do is create a new project then you're going to create an Azure Functions application and then after that this is really a totally normal function application where nothing special is happening so I'm going to disable functions J for example and I'm going to create that and then after that like you always do with Azure Functions you're going to select a trigger so what J said before is absolutely correct you need something to basically start the execution of your function and very often it's an HTTP trigger could be a Q trigger something happens when there is a message could be a blob trigger something happens when a file a blob changes on the server could be a recurrence a timer trigger this is what I use to build the pages that I mentioned before every half an hour you have here a durable function of restoration and that's the one that we're going to choose here by the way you see that it says .NET 6 here so yeah that works now I'm going to create here this function and if I bring this here and make that a little bit bigger now we see that we have a few things that have been included including here an extension and so again like the lady was saying in the video before durable functions are an extension of functions but the cool thing now is that basically when you create a new durable function in VS Code or in VS you don't need to add the extension explicitly like we did in the beginning now it's just added automatically and then after that we see a few things so here again it is .NET in JavaScript in Java it would look different but with the same principle the first thing that we have is a start method a start function if you will you see that it is a function we know this because it has a function name and it uses a trigger which is an HTTP trigger now here I could change the trigger to be whatever I want this one is an absolutely normal function it's just going to react to an event and then start the whole processing the whole orchestration here in that case I am going to select get and post and then we also have a binding here bindings are just a way to get some information injected into the function this binding here is an high durable orchestration client so basically the orchestration starter ok then after that what we are going to say we are going to say alright I am going to start here the orchestration and then very fast this function is going to return why does this function return and it does not wait on the orchestration it's because we don't want to pay twice if this function was waiting then you would have to pay for this function and then you would have to pay for everything else that is happening in the orchestration and of course you don't want that so this function is going to return it's actually going to return an HTTP code 202 which means accepted it doesn't say anything about the outcome but it says I am good and something is running and then after that we are going to go into this guy here which is also a function and this one is an orchestration trigger so that's something that you cannot call yourself outside of the durable function framework if you want but the starter which is here is able to actually call this trigger and to start the orchestration here and now we will see some things very funny happening because it's going to create an output which is a list of string and then it's going here to call an activity which is called function hello which is by the way here right so it's calling function hello and it's passing a parameter which is Tokyo and then immediately after it's going to call here the same function but this time with parameter and then same function again but this time with London and so what's going to happen here is that when you go inside the function here you're going to because there is an await here it's going to actually call this function hello and it's going to wait for the result and then when the result is done it's going to go to the next one and then it's going to execute but this time with another parameter and then it's going to return here and then it's going to execute the third one so that's all good but the problem is that if we put the break point here and we try to see what's happening here so let's actually start to debug let's try to debug that and then we'll see how it works so this is the function console so here I'm running everything locally on my machine later we will deploy that to Azure and here we have a URL this is a get so I'm just going to be very lazy I'm going to take it and then I'm just going to go and hit a web browser here I'm just going to hit the web browser just to go and execute you see that what did he say here we have a bunch of stuff happening here this is basically some history which is coming here and now basically what is really interesting to me is that my orchestrator started and I have a break point this is really what I wanted to see so now I'm going to put a break point also down there in the activity trigger so now I'm going to advance it's going to call this function hello there is an await so the function hello is going to be executed and then the next step would be to go to line 22 here and execute the second call to the function but actually something very funny is going to happen if I press F5 and continue basically you see I go back on line 18 I don't go to line 22 immediately and then after that I'm going to execute this line here we already executed that so why is it back there well you see what's happening if I step into is that it's actually not going into this function again what it's going to do I'm going to step over it it's going to fill the output with Tokyo and then it's going to execute the second call to the function I'm going to press F5 now I'm inside the second call this time the parameter is then when I press F5 it's going to go back to the start but this time again the two first calls have been executed so now I have two outputs and then if I run a third time it's going to do the same thing and this is really confusing when you start with durable functions well essentially what's going on is that the orchestrator is a function and the activity trigger the activity here is a function as well and we don't want you to pay twice so when the orchestrator starts here an activity the orchestrator is immediately going to go to sleep and since you pay the functions by the time that you use them at the second it means that the whole time that the orchestrator is sleeping you're not going to pay for it so then this activity is going to be executed you're going to pay for that but then as soon as it's done the orchestrator is awake is woken up and then it's going to go here it's going to see oh I already ran this function cool I don't need to run it again actually what happens in the background is that there is some serialization and deserialization of state and the state is saved in a in a storage account and then after that it goes to the second call and then the second call have we executed that not yet so now it's going to execute it and again there is this whole serialization and deserialization thing happening so that's one pattern that we call here function chaining okay function chaining means we do the first function then we wait then we have the second function then we wait then we have the third function and this is a way that you can avoid the timeout that I mentioned before because a normal function has a 5-minute timeout so if you have a very long running task of an hour or whatever you can basically break it in multiple sub tasks and then you can run those sub tasks one after the other and basically it's going to run but you don't have that 5-minute timeout anymore this time is 5 minutes times the number of instance that you want to run so this is one of the patterns function chaining there are other patterns that are interesting and for example there is this pattern here which is very similar but you see the big thing here is that instead of having a list of output a list of string like before now I have a list of tasks of strings so basically I have a task in .NET is something like a promise in JavaScript a little bit it allows me to run some code in an asynchronous manner so here is a big difference is that when I call context.callActivity I think with the activity function I don't have a weight here so I'm not going to execute that task I'm just going to take the task in the list and right now I'm not executing it and after that I go to the next step and I'm going to again get a task this time with Seattle as a parameter and I'm going to save it in the list and then same thing for the third time and then at some point I decide now I want to run all those tasks in parallel and this is what I use when all here basically what when all does it says I'm going to run everything and wait until all of them are complete before I continue to the next line so this is a very very asynchronous way of processing stuff now the cool thing is that because I have three tasks here it's going to actually give me three instances of this function here but if I had thousand tasks if I had millions of tasks it would give me a million instances and again same as before you pay for what you consume so basically it's very fair now in the case of my orchestration of my pages I have about 300 videos it means there are some pages supporting those videos some summaries and stuff like that it's about 400 pages that I need to build and just like here I'm going to call when all at some point and then I have 400 instances of the functions running together the orchestrator is happily waiting until it's complete and then there is a fan in and then you continue and of course you can combine all those patterns function chaining there are more patterns that I think there is a link somewhere which is showing all those patterns that you can have you can also use that for example to monitor something if you want to have very long running tasks for example that can be interesting etc etc and yeah that's been really cool because it really frees the mind it helps you to build stuff which is long running which is extremely parallel but of course because of the serialization the serialization process because of the complexity of keeping state and restoring state there are some caveats that you need to do and that's important it's quite important actually to take a little bit of a deeper dive into durable functions durable functions are quite a lot more complex to understand than normal functions hopefully the small summary I gave is kind of helping people to get started with it but yeah it's been pretty pretty cool and pretty amazing really yeah it looks great so one of the questions I have specifically is your success with it have you seen great success aside from just building out your pages from here what do you think is the best success story you've had so far? yeah I mean the pages that I built were a really cool success story to be honest because within a couple of weeks I was able to really have that ramp up and this was almost a one-man show but I think that I've been using durable function a lot for is also LearnLive right so LearnLive is a show that we have it's also running on different platforms Microsoft Developer YouTube on LearnTV on Twitch as well and we have a show where we run before November we were running one show a week and it was kind of difficult to scale up everything and one of our goals was really to say all right now we want to produce more shows per week and immediately after Microsoft Ignite in November we went suddenly to three shows a week so we went from one show a week to three shows a week and a lot of the things that you do when you create these kind of shows so those shows are essentially always the same structure right you have the video here we have two presenters in this case those presenters are MVPs and basically they run through a Learn module it's a 90 minute show so it's quite a long show to produce and there are a lot of things that are always the same for example here I have I'm sure they don't mind that I show their name here they are public persons anyway Charlie and Constantine, Kostia who wears the speakers on this show and so one of the things that I need is really collecting a lot of information and I know that you need to do the same for Azure Fundite because you asked me some information and I was very slow in delivering it and I'm so sorry about that but essentially that's one of the challenges that you face when you produce a show is that I need to collect a lot of information from people and people are slow so you need to nag them and then when you have the information there is a lot of copy paste happening and one thing I built with Azure Function and Durable Function specifically is a way you see this is what I use to produce Learn Live so it's a repo here I have tons and tons of documents that I need so if we take an example one of the documents I need is for example an ICS file this is a calendar blocker and those calendar blockers we use them if you go to our promotional page for example for one of the series that we have right now which is the Azure Cosmos DB certification study whole and if you go to here you have add to calendar so I say alright I'm interested next week 19th January we have a show if I click here it's going to download the file an ICS file I can save it or I can open it if I open it it goes into my outlook and it adds the date into my outlook oops I'm showing my emails here which is not a great idea alright no no no no big deal it's very small I don't have any secrets but essentially this ICS file is something that we need and this ICS file uses information like for example the abstract or the location or the title or the date of start and end which are the same for tons of other documents for example I also have an invitation that I need to send to my presenters to invite them to the location right to invite them to the studio so here I have a date and time so this is the date and time of the show date and times are very confusing because we have time zones so what did I do I generate here a link to this wonderful website which is helping me to know when the event is going to be my time zone alright etc etc so we have tons of documents that we generate and again the same thing every time I collect a piece of information like I don't know the presenter's profile picture then I save it in storage and I kick a whole lot of durable functions really which are generating those for me but a lot of things are generated automatically for example this is a description that we page on the YouTube page it is formatted in a specific way but it is again the same information that we have everywhere so why do we need to copy paste no we have some automation to do that so this was really a great success for me because within weeks I was able to you know what would take probably an army of people to create all those documents all those invitations and things using automation I was able to create that basically on the press of a button so that was really cool it really allows us now to have a very good place to feel confident for the future and basically to move on with additional shows and now we have plenty of ideas we want to produce shows in different languages as well probably Spanish first etc etc so really allows us to experiment with different format different languages different ideas and this is all thanks to the automation nothing is lost everything is preserved it's saved and it really allows me to build stuff much faster so that's a cool success story of course it's a cool success story but that said I know for a fact that durable functions are also used in the industry at a large scale and I'm sure that again right if you talk to somebody from the from the functions team Jeff Holland Chris Gillum Anthony Chew and those people they will have plenty of things to tell this is a really really good tool to have in your tool belt great so let's remind people that the most basic of function app will contain three functions correct so those are the orchestra function which describes a workflow that orchestrates the other functions yeah then the activity function which is called by an orchestrator function performs the work and then optionally it'll return a value so if you want something to actually happen and you want to find out what you did you wanted to access another API and then have it return some information that would be it and then a client function and that client function is a regular Azure function that starts an orchestrator function so this if you take a look at some of the documentation that we have available you can actually see that you can create an HTTP triggered function so Laurent we've got about 10 minutes and I'd love to show everybody real quickly and I'll bring it up on my screen first of all the tooling around visual studio code for all sorts of different Azure products is incredible and Azure functions there's an extension and it's just as useful and helpful as all the other ones and getting started with building Azure functions specifically a durable function really starts with opening up the command palette accessing create new project and when we create our new project come on let's do it when we create our new project let's try this again okay why aren't you so first place we need to do is we need to specify a folder to keep it in and we'll just say ABC 123 great just want to find a place and then what that's going to do is let you select what language we mentioned all these languages before I'm just going to use PowerShell then what we're going to do is select a template that we're going to be using so what we're going to be doing here is using the durable functions orchestrator we'll give it a name durable function orchestrator one is fine and then we're going to just open in our current window so that it'll bring up and so on our palette we're going to see here on the file explorer now we've got this this kind of scaffolding it's a template on what we're going to be doing and you can see we've got our function right here the PowerShell file that we're going to be actually using and it's not by the way we can recognize pretty much the same goal that had before in .NET except this time it's in PowerShell so it's already in exactly the same manner it'll run just like any other one that you expect using the integrated console and then when we want to actually create a function within this space we can just go back into the command palette so let's bring the command palette up and we'll click create function and so now we can select the template and let's just pick the variable functions HTTP starter we'll give it a function name what our authorization level is and I'll just use anonymous and then it'll you can see it's gone and it's actually built out our specific function that we needed so we've got here right here here's our HTTP function right here we have some JSON we have the PowerShell file it all gets built for you right here see here's PS1 that azure functions file it's going to be easier for you to do this by picking tooling that you may already understand or tooling that you prefer and the fact is is that these integrated IDEs that we have here they're going to give us the options to build it quicker easier faster without actually having to understand every single little piece of code required and having things like a starter kit if you will based out of that template it just makes life so much easier so check out the documentation around the azure functions specifically durable functions and you'll be able to build your own you put this right here Laurent was nice enough to have with his gala soft website he's got some short links right here you can go and check that out it's also going to be in the show notes but Laurent we've been through a ton of stuff and we've looked at some examples we've talked about some use cases but I really have a super important question for you this is tremendously important what is the best music style and why is it heavy metal I know right it's like like is that even a question there is no question here no metal is fascinating it's and nothing to do with functions here but really I fell into metal when I was 14 probably when I was 12 to be honest I remember the first time that a friend of mine in school introduced me to some metal and so when I was 12 it was in 83 right now I'm not exactly how old you are but actually we have 43 yeah so let's put it this way we have an age difference you and me right there are guys who are indeed there are guys who are I mean guys and gals right for that matter who are half our age or even less than that and who are into metal and metal is like the an amazing an amazing common denominator to a lot of people basically we're going to my first concert now you're going to laugh I'm sure you're going to laugh my first concert was Scorpions hey a lot of people wins a change yeah back then they were really good and Joan Jet was opening and oh my god Joan Jet right you know she was amazing her blue spandex and I remember that as if as if he was yesterday really I was 14 I was front row probably I was pressed against the barrier and then I was rocking and I saw some picture of you doing the same right so basically this is yeah exactly this is amazing right so yeah metal is fantastic and I know you and I we share a love for Lemmy of Motorhead I'm currently reading the biography of Ronnie James Dio and basically the one who invented the horns as he called it he used to say his grandmother gave this and she called it the Malac if I'm right it's just like an Italian it's a blessing really it's not it's a blessing it's a warding it's a way to ward from the devil so basically it's a protection etc etc so a lot of stories that we have but really what's amazing is that I remember very well that when I was 15 16 and I was listening to Maiden and I was listening Metallica and when I was 16 is the year where all those amazing albums came out and then later when I was 20 something Nirvana came and you know all that right and I remember thinking to myself wow when I'm 50 I'm 50 now right when I'm 50 I'm going to be all this we cannot say that word here but old right and I'm wondering what I'm going to listen to right and I was seeing my parents listening to stuff that I didn't like and I was thinking oh my god am I going to I love my parents but you know musically speaking we don't have really the same pace and I'm amazed that you know 30 years later 35 years later no I'm still listening to the same music it's still here it's you see tons of innovation around that and no this is this has been amazing and I mean I miss concerts I had tons of concerts delayed and postponed and now I see in June this year I'm going to have something like 7 concerts in June yeah all the concerts that have been postponed so I'm really rooting for June and yeah I'm going to see Metallica sabbaton I'm going to see Maiden again I'm going to see tons of people Judas Priest I think so I'm really looking forward to that yeah I've loaded up on a bunch of stuff I've gone to have some shows already I've got a bunch of music festivals one the next this year a couple months really really fun I absolutely love going and seeing live music so we've just about got to the end and I wanted to remind everybody we had a poll today we asked you know has your organization implemented serverless technology in your stack yes no or it's complicated and 70% of you all said yes a lot of hope that you know we can help you reduce the infrastructure that you need to manage and help you write more code you know I really appreciate you being here with me today it was a lot of fun I learned I got to talk with you I got to talk to the audience as always and I really appreciate it so thank you so much and I really appreciate it great to see what you're going to be up to next all right thank you so much for having me I really appreciate the time everybody the big wave goodbye we'll catch you next time we've got another show next week make sure you check the archive and take a look at the show notes if you want any of the links so until then see you all soon thanks for watching Azure FunBytes