Logic apps with their connectors provide a very low barrier to entry for enterprises/ISVs loooking to bridge the on-premise to cloud gap. At the moment they can be frustratingly clunky at times but if you are pragmatic and keep the workflow simple its amazing how easy you can achieve things which would normally have taken much more time and money in the past.
Back in March 2015 Microsoft announced Azure App Service as part of some changes around the previous Azure Websites offering. The most interesting changes was the introduction of Logic Apps in close conjunction with api apps.
Promising to deliver the ability to create "code free" workflows and integration to other systems using some of the provided connectors.
Logic apps promise "code free" workflows in the cloud akin to enterprise level IFTTT
I've recently been using the logic apps to create workflows for integrating between Azure and on-premise systems with a large enterprise client connecting to on-premise ERP/BI systems.
I wanted to briefly share my overall experiences of using Logic apps to achieve this integration, it may help others to make an assessment of whether this is the right approach for them.
In the past, these types of projects requiring integration between on-premise and remote systems had a risk of quickly become a quagmire of business and technical complexities; with hand offs between different IT teams, security issues with servers needing to be in DMZs and other technical hurdles.
Thanks to the power of the hybrid connectivity offered by Azure we were very quickly able to set-up a simple connection between on-prem and the cloud. All we required was a small server within the network on which we could install the Hybrid Connection Manager, its really worth stressing that the server did not need any inbound firewall ports opened which was a significant barrier gone.
For me this is a "killer feature", being able to painlessly connect an ISV's SaaS product to their client's on premise systems in hours rather than weeks is a real enabler for smaller ISVs.
Logic apps template language
Logic apps promise a code free workflow experience, now of course this isn't strictly true. Yes you don't spend your time in Visual Studio when designing a workflow but you will need to figure out how to access data from each step of the workflow. Each connector exposes its API to the workflow designer and allows you to access data from previous steps. In most examples you'll find in the docs the data being access is straightforward. We found a little bit of a learning curve to figure out the precise syntax required, often needing to execute the workflow to see if it would work. There is documentation to help with this but the experience can still be a little fraught as a first time user.
Logic apps provide an in-portal based workflow designer to help create the workflows. Its fair to say the designer is a bit clunky and can cause some of frustration. The good news is you can switch to code view to see the json configuration which is the heart of the workflow, I only wish it was possible to default the code view. Having said that at the recent Connect2015 event we saw a sneak peak of the new designer which does look like a significant step forwards.
Connectors and api apps
I think the most important lesson to learn here is that connectors are just web apps (api apps), once you understand this you can quickly figure out how you can access the settings to make changes. Simply find the connector host application and get into the settings.
When we first started using the file connector we ran into an issue with the file size being limited to approx 5Mb. However we were able to work around this by updating the web.config file of the connector (thankfully this isn't something you need to do any more).
The ability to create your own api apps which can be plugged into the logic app workflows is an extremely powerful concept. Utilising the Swashbuckle library to generate the meta data and Swagger ui is also inspired because the very same Swagger ui can be used to build and test the api locally before it plugs into the logic app.
Monitoring and deployment
As each connector is a web app you can setup app insights alerts and monitoring as you'd expect, however there doesn't appear to be any support for plugging app insights into the whole logic app flow. Of course you can use conditionals on the logic app flow to deal with failure conditions but this should really be around business logic not infrastructure.
Another feature or lack of feature is the apparent lack of support for staging slots, we had to setup 3 separate instances of each of our logic apps environments (including all the connectors etc). It would be nice to have support for the staging slots built into web apps to make this process a little simpler.
With Azure and Logic apps we are moving in to the new world of integration. In particular its a game changer for smaller companies or ISVs who want to allow their products to integrate between cloud and on-premise without the expense of a large scale integration project.
Just as I publish this post they've announced PowerApps which appears to build further on top of Azure app service to provide even more capability for enterprises. More to come on this...