We are in the middle of a year-long project to 'rewrite' all of our ESB glue/pipelines from MuleSoft to the Azure platform. We've been using Azure for a while now for almost all hosting. But our ESB had still been in Mule, because as sort of the vital arteries of our entire enterprise, it's hard to seriously consider completely reimplementing them -- especially since we're only about 3 years out from implementing Mule in the first place.

But Mule's skyrocketing costs are forcing our hand. If we don't finish this transfer project within the year, we'll be charged $100,000 for another year of Mule -- an absolutely unfeasible cost for our small/medium sized nonprofit. Our preliminary cost analysis for Azure showed it would be a fairly tiny fraction of that. So off we go.

I bring this up because we have settled on mostly Logic Apps with a few Azure Functions here and there as necessary, to fill in for missing connectors. So we are in a pretty good position to directly compare the two platforms against each other.

So far, my personal judgment is that Mule offers a lot more whizbang, but we weren't using nearly enough of it to justify the bananas cost, and LAs are turning out to be just fine. Mule development work happens within something called Anypoint Studio, which is (I believe) built on Eclipse. Most of the work you do tends to be done in the visual editor, just like in LAs, but you can drop down into the XML as necessary. It provides a fairly good debugger, and has one benefit of being able to be tested locally. I could fire up a flow in debug mode, pop over to an ActiveMQ admin panel on my machine, fire off a message, and watch it hit breakpoints. Mule's also able to provide a more consistent ability to validate JSON against schemas; LAs appear to only really be able to do this at the trigger point. That's relatively minor, though.

Mule's visual editor has no problem with large (sometimes too large) flows, with multiple branching paths, and then sub-branching on top of that. The visual elements themselves have a certain polish to them as well, and don't take up too much space -- they're represented as square instead of wide rectangles.

In comparison, the Logic Apps design view feels rather clunky. It's clearly been designed to encourage small concise flows rather than large ones. We've reimplemented complex flows that felt fairly manageable in Mule, but feel rather unwieldy in LAs despite being essentially 1-to-1 translations.

But LAs do have some honest advantages besides price. A big one is being able to easily drop in a custom Azure Function as a processor. This provides some easy reusability for more complex tasks; we had to write a Function to create JWTs, but now can reuse that in every LA where we need it. Additionally, having everything there in the Azure portal is valuable. There is essentially no gap between working on a flow, and releasing it. Azure provides the run history for your app right in the panel, which essentially acts as a set of visual logs for past runs.

We are kind of struggling with figuring out how to integrate LAs with our source control, but my guess is we'll figure that out with enough experience. All said, I think MuleSoft offers a ton of advantages that very large enterprises would find highly valuable; there's the whole Anypoint Platform that I haven't even discussed here - API managers, access control, etc. But everything that our smallish organization has needed, we've found alternatives in LAs or in the wider Azure ecosystem.