Serverless Azure A Gentle Introduction to Microsoft Azure Logic Apps & Functions from zero to wicked useful in about an hour HELLO my name is Bill Wilder Granite State SharePoint Users Group Thu 07-Sep-2017 6:00-7:30 PM Bill Wilder, CTO, Finomial Corporation
8x recipient cto author founder
Goals: By the end of this talk… Demystify Logic Apps and Functions (aka Function Apps, Azure Functions, Functions as a Server (FaaS)). Realize that Logic Apps and Functions are completely independent of each other, but can be used together. Both are serverless technologies.
Logic Apps
@ServerlessAzure LiveSlide Site https://twitter.com/serverlessazure
Just hitting this URL (behind the scenes) via HTTP GET to invoke the Logic App: https://prod- 11.northcentralus.logic.azure.com:443/workflows/786d9f6792f643bd87 7cc2e863ae4425/triggers/manual/paths/invoke?api-version=2016-06- 01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=bSl6WTGbTSJe2phH XPporWYFbgRp6w6ZD0NH8eBVLnc LiveSlide Site https://prod-11.northcentralus.logic.azure.com/workflows/786d9f6792f643bd877cc2e863ae4425/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=bSl6WTGbTSJe2phHXPporWYFbgRp6w6ZD0NH8eBVLnc
@ServerlessAzure LiveSlide Site https://twitter.com/serverlessazure
Logic Apps – the new component model Triggers + Actions = Logic App
Triggers + Actions = Logic App Triggers Some event – web hook, timer, user action, etc. + Actions Your response to trigger – based on trigger & data = Logic App Serverless Software Component
How is this possible? Connectors A Component Model for the Cloud The code behind Triggers & Actions Front simple microservers or whole systems Ecosystem is blooming Gallery of Microsoft-maintained connectors Community-contributed connectors are available You can create your own connectors (via Open API (Swagger)) Well-defined Logic App Workflow Definition Language https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-workflow-definition-language
Triggers Timer User action Action from some other system Queue Message, Blob Creation, Webhook/HTTP Call Examples: tweet, email, slack, calendar event, something changed Business event: User signed up on my website Code event: New version of file checked into GitHub Azure event: A new VM was provisioned
Actions Call an API Trigger more actions Use data from triggers for filtering/decisions Pass along data from triggers in carrying out actions Can be custom Huge gallery New component model for software developers
Demo Time Build the tweeter we just experienced Build other integrations (dangerous ad hoc demos ) HTTP 202 JSON Schema Workflow Definition Language Use trigger data & conditional processing Logic App Workflow Definition Language https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-workflow-definition-language https://en.wikipedia.org/wiki/ISO_8601#Durations https://jsonschema.net/#/editor { "type": "object", "properties": { "tweet": { "type": "string" }
JSON Schema example (tweet) { "type": "object", "properties": { "tweet": { "type": "string" }
Sharepoint + Logic Apps https://docs.microsoft.com/en-us/azure/connectors/connectors- create-api-sharepointonline
Function Apps
Function Apps are Code with Triggers Timer User action Action from some other system Queue Message, Blob Creation, Webhook/HTTP Call (Look familiar?)
Error Handling Try it Retry it Deal with the failure Track with logging & telemetry Monitor with alerts & dashboards “Scopes” https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps- exception-handling
Azure Function that returns 500 75% of calls https://gist.github.com/codingoutloud/151976063b1e9367369f1505f 6cca66e
Sharepoint + Functions https://dev.office.com/sharepoint/docs/apis/webhooks/sharepoint- webhooks-using-azure-functions
Demo Errors/Retries What happens if there’s an error? Command Line Azure Function Monitoring https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-create-api-app#webhook-triggers
Serverless
Serverless Computing is characterized by… Deployment units are small, loosely-coupled components More “no server configuration” than PaaS Cloud-friendly pay-by-the-drink billing https://martinfowler.com/articles/serverless.html https://twitter.com/adrianco/status/736553530689998848
“Multiple Triggers” One trigger type can be assigned per Logic App Many parallel instances of your Logic App can fire to absorb load Limits? https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-limits- and-config Why would you want to limit it? Singleton available https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-limits-and-config
Pricing Logic Apps Azure Functions Consumption https://azure.microsoft.com/en-us/pricing/details/logic-apps/ Azure Functions Consumption or App Service Plan https://azure.microsoft.com/en-us/pricing/details/functions/ https://commons.wikimedia.org/wiki/File:Gold_Currency_Symbols.svg
Flow vs. Logic Apps https://portal.office.com/myapps https://flow.microsoft.com/ Flow is “civilian” version of Logic Apps: “Grow up to Azure Logic Apps” https://flow.microsoft.com/en-us/blog/q2-2017- update/ Same connectors: https://docs.microsoft.com/en- us/azure/connectors/apis-list Same underlying core Comparison by Microsoft: https://docs.microsoft.com/en- us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs
–Microsoft Announcement on May 31, 2017 BizTalk vs. Logic Apps “To simplify the customer experience across our enterprise integration services, we have incorporated the Azure BizTalk Services capabilities into Logic Apps and Azure App Service Hybrid Connections.” –Microsoft Announcement on May 31, 2017 https://azure.microsoft.com/en-us/updates/azure-biztalk-services- simplifying-our-azure-offerings/ https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps- enterprise-integration-overview https://channel9.msdn.com/Events/Ignite/Australia-2017/CLD224 http://www.alliedc.com/azure-logic-apps-vs-biztalk-a-comparison-between-old-and-new-integration-platforms/ https://social.msdn.microsoft.com/Forums/en-US/de98495a-9395-4468-933c-92bedf7d80da/logic-apps-vs-biztalk-server?forum=biztalkgeneral
PowerApps vs. Logic Apps https://powerapps.microsoft.com/en-us/tutorials/getting-started/ https://www.carlosag.net/downloads/PowerApps-Connectors-Reference.pdf
Zapier vs. Logic Apps
IFTTT vs. Logic Apps
Dev & Deploy Visual Studio (2015+) - https://docs.microsoft.com/en- us/azure/azure-functions/functions-develop-vs Azure Portal ARM Templates PowerShell REST API
Official Twitter Accounts (pretty sure ) @LogicAppsIO @AzureFunctions @AzureApiManagement @PowerApps @CosmosDB
NuGet Packages Conference session (video) on making NuGet packages for Azure Functions: https://channel9.msdn.com/Events/Iglooconf/Iglooconf- 2017/Azure-Functions-NuGet-Superpowers One answer to reusing code within Azure Functions (and within other systems too). Another answer is to reuse ’services’ – like Azure Functions
Postman Just a tool, but a popular/handy one https://www.getpostman.com/ Useful for testing HTTP actions, including API calls Free Slack channel – https://postmancommunity.slack.com/ @postman
RequestBin Just a tool, but a popular/handy one https://requestb.in/ Useful for inspecting HTTP webhook payloads and workflow steps Free @requestbin - https://twitter.com/requestbin
{JSON:Schema} https://jsonschema.net/#/editor @JSONSchema
Scheduler https://cronwtf.github.io/ https://crontab.guru/#0_*/5_*_*_*
Duration – per ISO 8601 https://en.wikipedia.org/wiki/ISO_8601#Durations PT5M PT2D PT36H PT36H vs. P1DT12H
Logic Apps Workflow Definition Language
Only Scratching the Surface! Potential follow-up topics: Azure API Apps DevOps Experience Monitoring (and. so. many. more.) https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-create-api-app#webhook-triggers
Find this slide deck here Questions? See you at Boston Azure bostonazure.org Find this slide deck here Bill Wilder @codingoutloud codingoutloud@gmail.com blog.codingoutloud.com linkedin.com/in/billwilder
Subliminal … 0.25