Logic apps vs Azure function: a short review


 


One of the toughest questions to decide for any integration project is whom you are going to decide; that too if both of them could give you equal possibilities. It's like choosing your favorite Avenger hero, when you could see they are battling each other ⚔ 🏹 πŸ‘ΊπŸ‘²πŸ‘¨ 


You could get a lot of suggestions across the net, here goes my list of observations, when to choose what:


πŸ“Œ  ALA and AFs are both trigger-based phenomena, however when you see you have a lot of connectors that you need to use in your ALA, which definitely are not free, (and give you an alluring offer of first 3 months' of subscription as free) -- I think you should choose Azure functions. Let me give you one example: I had a requirement, where I needed to read a PDF, as soon as it arrived a blob storage, then do some manipulations to the file and then move it to a shared folder drive, once done. Here, if we choose an ALA, then we need to use a lot of connectors that are readily available, so as to process the PDF and then move it to the shared folder. Unfortunately, these are all paid services and could eventually sum up to a huge bill amount, if not planned properly. 


In this case, the best choice is to go for an AF. Azure function can let you write your own code to process PDFs, move them across shared/SFTP folders (I remember, leveraging SAMBA client-based DLLs to orchestrate and call moving files between cloud to shared folder locs). In all these cases, functions are the best options to tailor-make your requirements, tossing it as a perfect cost-effective opinion.


πŸ“Œ Cases where we need to retain expensive variables (eg. tokens) between different calls, A Durable function can offer you the best possible solution. A Durable function can be architectured with a myriad number of possibilities: of cascading one output to another's input, summing up outputs to be fed as a resultant input, delaying output, monitoring, chaining, async HTTP API calls -- which I suppose Logic apps might not be flexible enough to accommodate so much.


πŸ“Œ Azure functions could safely be declared as a perfect way to tailor-fit your solution. A lot many triggers are just not available on Logic Apps side, which you can safely find amidst a rich set of bindings that are presently available in Azure functions' triggers. What? Didn't find, what you're looking for? Take a chill pill, I create my own connecters and call them from Azure functions (Please reach out to me, just in case you're interested about this cool hack).

πŸ“Œ Anybody tired of fighting with Expression based formating on Logic Apps' controls? Try Azure function: the C-Sharp can do miracles: unleashing anything that you want to concatenate, format, add-up, substr, with quite ease. Not to mention, the ease with which you can play around with serialization, and deserializing your data, casting out variables of a class from an incoming JSON payload -- only to mention a few. Yes, these things could be done on Logic spps too, but Azure functions gives you a lotta freedom of speech.


πŸ“Œ Yes, on the other hand, Azure functions are difficult to maintain. If your client asks you to tweak some logic to existing functions, you need to write a whole lot of staff, to make the thing work. For Logic apps, this is pretty straightforward and easy (owing to its low code-no code, and expression-based structures).


πŸ“Œ Azure functions won't let you reprocess the errored runs, whereas Logic Apps can easily help you out on such matters.


πŸ“Œ Not to mention, both the components have their own pricing model and a lot of other strategic differences, which could be found on: 


https://learn.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs#:~:text=Functions%20and%20Logic%20Apps%20are,Both%20can%20create%20complex%20orchestrations.

Comments

Popular posts from this blog

X++ : mistakes which developers commit the most

Make your menu items visible on main menu, conditionally,, using this cool feature of D365FO

Speed up your execution performance by using SysGlobalCaches