Find this Podcast “Getting Started With Azure Functions” on the ThreeWill Soundcloud, Stitcher, and iTunes.


Danny Ryan:Hello and welcome to the ThreeWill podcast. This is your host Danny Ryan and I have Pete Skelly here with me. He is our director of technology, yes?


Pete Skelly:Ah, that’s correct.


Danny Ryan:Director of technology.


Pete Skelly:That’s what they call me today.


Danny Ryan:You take the technology and you direct it in certain ways, is that what you do?


Pete Skelly:Some would say that.


Danny Ryan:Some would say that and so this is going to be a really fun podcast because Pete is in the delirium stage at this point right now so what better than to sit down, record it for posterity and so when your grandkids are listening to this they’re like, “Papa, what are you talking about? I don’t understand what you’re talking about. You sound silly.” What, seriously today we wanted to talk about a subject that we covered in the morning brew, a morning brew is something we do weekly where we sort of do knowledge sharing within ThreeWill. This week you covered Azure Functions, correct?


Pete Skelly:Yes, that’s correct.


Danny Ryan:A sec, hit that and tell me at a high level, assume I was there and listening or maybe I wasn’t listening and you were going to describe this to me at a high level?


Pete Skelly:Azure Functions, I don’t even know what the Microsoft marketing terminology and speak is at this point but Azure Functions to me really are the, a pure function if you will, and not in the proper use of pure function, don’t send me hate mail. It’s just the functionality that you want to run.


Danny Ryan:Okay.


Pete Skelly:There’s no additional need to have a full blown visual studio project or, you know, all this extra cruft to accomplish a typically small task. There’s a whole lot of caveats around that but that kind of boils down. You’ve got something you want to accomplish, it can be chunked very small, and it’s kind of an in and out function that achieves some, you know, valuable process.


Danny Ryan:This is, previously we’d take these and you know you’d build out an app and this app would have a bunch of functions inside of it and-


Pete Skelly:Yep.


Danny Ryan:Here we’re taking something that’s going to, I mean we’re just putting it out there in the cloud and something that we can interact with and do what we need to do in little bite sized chunks.


Pete Skelly:Yep.


Danny Ryan:They go and they do their thing and they probably I guess just very specific inputs and outputs for this little guy that does this thing?


Pete Skelly:Absolutely, so Azure Functions are based on the Azure WebJobs SDK.


Danny Ryan:Okay.


Pete Skelly:You know, and please if somebody if I misstate this provide some comments or feedback in the


Danny Ryan:There will be a comments section.


Pete Skelly:Website that Danny has so, you know, full transparency Azure Functions were recently released to GA.


Danny Ryan:Okay.


Pete Skelly:Myself and someone else in our free time are spending some time learning some Azure Functions and one of the things that we started to look at was what do you really do with them? The classic example is a timer job.


Danny Ryan:Okay.


Pete Skelly:Probably the biggest use of WebJobs, at least from ThreeWill’s perspective for customers or even internal, we used WebJobs for timer jobs so we had some-


Danny Ryan:I love a good WebJob, I’ll tell you that much.


Pete Skelly:The timer job really was, I just, I’m not even going there. The timer job really is the classic example, you know, I have to clean out some table in a database, or I have a files in some location that I want to clean out, or it’s a very simple, everybody gets it, you know, classic IT Admin schedule a job to actually import a file or something.


Danny Ryan:Nice.


Pete Skelly:In Azure Functions it’s a very simple mechanism of saying I have this little bit of code that might have to, you know, add a file or parse a file and update a database, or parse many files and update a database and so you can create these functions that are based on HTTP triggers. Basically, kind of a fire and forget mechanism or even npoints that might serve a mobile app, or a custom app, or even a SharePoint app, for example. They could be timers, they could be BLOB or Cube-based and all of these things are just events. An event kicks off that code and that Azure Functions just essentially going to run and perform some action.


Danny Ryan:This tickles you inside because one of the things that you can do is PowerShow? What’s with the deal there.


Pete Skelly:One of the things, yeah, one of the things that part of what I kind of dove into in the morning brew the other day was to try to get my feet wet with Functions you can do. You can write the Azure Functions in multiple languages so they have support for Node, and C#, and Bash, and PowerShow, et cetera and I figured, “Hey, PowerShow seems pretty good.” I had just read that everything went GA for Azure Functions and I also saw an article or blog post by John Woo about using the PnP PowerShell CmdLets in an Azure Function so I said, “Why not give it a shot?”


Danny Ryan:Sure.


Pete Skelly:Using the PowerShell, using a PowerShell function and based on an HTTP trigger I was trying to set up a Microsoft Flow from a SharePoint list to kick off an Azure Function that would provision a site collection in Microsoft 365.


Danny Ryan:Boom. Boom. It was easy, piece of cake?


Pete Skelly:Setting everything up was fairly easy except for getting the PowerShell PnP CmdLets to work. Little did I know, you know spoiler alert, the CmdLets had been changed probably two weeks prior and so everything that, you know, John wrote about-


Danny Ryan:Was it a big change, or?


Pete Skelly:The names, the CmdLet names were changed so they had used, you know, Startup PnP or Startup SPO for SharePoint Online for their CmdLet names and that caused a couple of problems and it was something you could work around but they recently changed it to Start PnP Star. For example, get-pnpsite would get you to site collection.


Danny Ryan:Okay.


Pete Skelly:What I did not know is that that had occurred and that I had grabbed the latest code for the PowerShow CmdLets and was trying to, thinking that it was an Azure Function issue because I’ve used the PowerShow CmdLets enough in the past to know exactly what they were. It’s always something simple and I didn’t know what I didn’t know and they were renamed. In the end it was real simple to set up, very simple issue-


Danny Ryan:Once you figured it out.


Pete Skelly:Just took a little while to figure it out, you know, so, in the end, it was a very simple, creative SharePoint list, creative Flow.


Danny Ryan:Yeah.


Pete Skelly:Then Flow has the ability to basically call out to an HTTP npoint and that pushed the data over to the actual Azure Function, PowerShell took that data and basically provisioned the site collection and applied the site template from the PnP CmdLets. Really simple exercise that shows some of the power of Azure Functions and right now, kind of, diving into some other things. There are some edges with it at this point so learning some of the development style, some of the SDLC or ALM depending on who you are. Some of the lifecycle management ways of developing functions, deploying functions, managing them, et cetera.


Danny Ryan:Thank you for defining the acronyms for me, that’s so sweet.


Pete Skelly:Yeah, so software development lifecycle and application lifecycle management. You know, their functions are pretty, they’re extremely powerful and they’re super simple to get started with so you can literally go to the Azure Functions at and in the course of probably 20 clicks have some pretty powerful stuff wired up.


Danny Ryan:Did you look at all, how are they pricing this? I mean, how do you license something like this?


Pete Skelly:In a nutshell, it’s compute time.


Danny Ryan:Okay, compute time.


Pete Skelly:Really, it’s, you know, for someone doing development you could probably get away, you know, learning it, you could get away with pennies if you’ve got a developer subscription or an MSDN subscription to Azure. It’s not going to cost you really anything to get started. There’s in the millions of compute cycles for free basically with an Azure subscription. If you’re using, you know, if you’re processing BLOBs, so if somebody puts a file into a BLOB storage and you have a function that’s kicked off because of that event, obviously, you’re going to pay for some BLOB storage and some of the storage things, or depending on how much you’re using could get a little pricey. To get started and to start figuring it out, very cheap.


Danny Ryan:Nice.


Pete Skelly:Also, really looking at if you have things that are, that typically might be a workload where, you know, a couple of our customers currently have the classic scheduled task running on a server in their own environment and so they’re paying for the infrastructure for the server, they’re paying for server itself, they’re paying for somebody to monitor and manage it if they’ve got to patch it. All those things where literally they’ve got a PowerShell script that’s fifty lines of PowerShell that’s running, that’s doing the work. That can be moved up to Azure and actually function in Azure, they get rid of all that cost.


Danny Ryan:That’s awesome.


Pete Skelly:They get rid of all those kind of moving parts and it just becomes somebody uploads a file to BLOB storage, that function runs, they get charged for the time that that function is running, and they move on. Really, I think there’s a lot of potential there.


Danny Ryan:Yeah.


Pete Skelly:The IFTTT mentality, and Zapier mentality, and now Flow. That style of interaction with things and we, you know, wrote in a white paper many moons ago. The true power of kind of a network, if you will, are all the permutations that you have basically all of those Nodes, the more Nodes you have the more value you’re going to get. While Flow just kind of, between Flow and Functions and all these other things it’s now you’re getting to a power use that could make some really effective workflows if you will, and I’m doing air quotes on the podcast.


Danny Ryan:I see it, I see the air quotes.


Pete Skelly:You can create some really powerful, you know, sort of personal workflows using Flow and then if there are something that need to be more enterprise grade that’s where Logic Apps would come in.


Danny Ryan:Okay.


Pete Skelly:In effect Logic Apps would be the enterprise level of a personal flow, if you will, and Logic Apps basically know how to interpret, interact with, you have full access to Azure Functions so it’s the big boy movement to getting all of the business processes that will be event driven within kind of your Microsoft 365 or Azure environment.


Danny Ryan:Someone getting started with this besides nailing the class names, what would you-


Pete Skelly:Figuring out the easy stuff?


Danny Ryan:Any tips that you have for them?


Pete Skelly:Start with


Danny Ryan:Okay.


Pete Skelly:You’ll need an Azure subscription but that’s the simplest way to get started. The Azure WebJobs STK in GitHub has a ton of samples. I believe it’s Chris Anderson did a Azure Functions demo, or seminar, or session at Ignite this year.


Danny Ryan:Ignite, okay.


Pete Skelly:That is probably one of the better things I’ve seen as far as explaining what they are, how to use them, you know, giving you some concrete examples, et cetera. Once you kind of go through UI to get your feet wet there is in, there’s several utilities depending on if you are inside of Visual Studio. Me personally, I’m on a Mac so I’m using some command line tools so the Azure Functions Command Line Interface actually lets you stub things out and get started kind of in a better application lifecycle management so you’re using source control, you’re pushing to a repository.


Danny Ryan:Nice.


Pete Skelly:That’s actually going to, once you push it, check your code into master. It actually deploys it out to the Functions so get a little bit more advanced once you get out of the UI in the web you’ve got to get some tooling. That’s not there yet, it’s kind of half-baked. There’s some really good stuff out there but it takes a little effort, that’s kind of the stage I’m in is getting the pieces and parts together so that you are actually doing the development quote properly versus trying to go through the UI and not being really scaled. Not that there’s not value in that but for our customers, you know, we’ve got to find a way to actually make that a little bit more ALM compliant.


Danny Ryan:When do you see first, and we’re getting here to the latter stages of this, need to let you get back to work here. When do you see first using Functions on projects, or Azure Functions on projects? You’re next project you are going to be on, or is it?


Pete Skelly:I think dependency right now is does the customer have Microsoft 365 first off. If they have Microsoft 365 I think that’s the easiest on-ramp because then it’s just, “Okay, you’ve got Microsoft 365 let’s get a subscription in Azure.” Basically, wire up some processes so one of our customers that I’m working with currently that’s in their plan for 2017.


Danny Ryan:Great.


Pete Skelly:They’re really looking forward to kind of doing some of the things I described which are kind of timer job based on premises and moving those into the cloud and using just pure compute so they’re not, they don’t have servers on-prem anymore, those types of things.


Danny Ryan:Do you mind taking a couple of hours this weekend and getting the Jive migration tool over into this Functions?


Pete Skelly:Actually the reason I’m a deer in the headlights today is because I’m working on, I’ve been mired in Git for most of the day trying to set it up so that we can have multiple Git repositories that share all the same code so I’m working on your migrator tool right now as we speak.


Danny Ryan:Aww, thank you. Very nice. Very nice.


Pete Skelly:It’s coming, I don’t know if it will be in Azure Functions very soon but it, that’s kind of the long-term goal for some of this stuff.


Danny Ryan:You should focus in on getting the project done. I’m like the number 18th priority around here so I understand. I know where I fit into the world. With that, thank you so much for taking, I just wish that at the end of the day here, taking some time out just to share, you know, share internally at the earlier this week and then sharing with everybody here. If you are picking this up and have any questions, please leave a comment at the bottom of the page. Also, promote your website, Pete.


Pete the Azure Functions blog post that actually goes through what I had to do to get the PnP CmdLets working full code, those types of things are all out there.


Danny Ryan:Yeah, and I’ll put a link to that at the bottom of the page as well so jump off there as a good next step from here and thank you so much for listening and have a wonderful day. Take care. Bye bye.



Share and Enjoy !

Related Content: