- Chris Anderson, Senior Program Manager
- Raman Sharma, Senior Product Marketing Manager
Evolution of Application Platforms
We used to build applications on-premises. Find h/w, find someone to set it up, and then the bits, networking, etc. Counter to productivity.
IaaS meant that a VM could be provisioned faster, but still left with some delays, and still required on-going management. The current wave of SaaS is probably mostly built on IaaS.
Along came PaaS. VMs were abstracted, hiding the on-going management of the VM and guest OS. But we still have the same per-VM paradigm.
Serverless ideally reduces infrastructure to zero. There is really a server, but it’s not yours and there’s no hint of it. The app still has to run on something, but you never acknowledge its existence.
Traits of Serverless
- Abstraction of servers
- Event-driven start-up triggers/instant scale out or in.
- Micro-billing instead of per-hour/month billing.
- Manage apps, not servers. Look after the thing you care about: the app and the code.
- Reduced DevOps: there are no servers to fix/patch. You don’t have to scale out traditional PaaS.
- Faster time to market
Your business can sell a service, consume data, seize an opportunity quicker than ever with serverless.
Serverless Application Platform Components
- Functions: Execute your code based on events you specify.
- Logic Apps: Design workflows and orchestrate processes. It’s the original serverless feature in Azure. Logic Apps tie together different things inside and outside of Azure in workflows made up of different steps.
- Event Grid: A relatively new service in Public Preview. Manages all events that can trigger code or logic. A single interface for all such events. Manage where those events come from, and decide what you will do with those events (start Functions, Logic Apps, etc)
- Database: store the data
- Storage: store data in blob/queue/NoSQL
- Security services
- IoT for massive numbers of devices inputing data
- Analytics to process data realtime
- Intelligence to use AI models to understand/action on data
Demo: Event Grid & Logic Apps (Chris)
He adds an action between the two existing actions in the logic app designer. This will trigger the Function. The Function is passed the body of the JSON. The Function will return a response, and that is used as an input to the Teams action. That input is given a condition. If verbosity = ignore then the Teams action can be bypassed.
Scenarios for Serverless
Short: Anything that is based on events.
- Real-time stream processing, e.g. IoT. You have no idea when data is coming in, and how much will come in.
- Time-based processing. E.g. collect logs and process them once per week. Why dedicate VMs/PaaS for that? Pay for the few seconds of compute that is required for the task.
- Back-ends for mobile/IoT/web. E.g. someone uploads an image to a site, a function stores the image in a storage account, and another function processes the image (thumbnails, metadata, etc) and stores that data somewhere.
- Real-time bot messaging. Use Logic Apps to workflow the processing of a question from a bot in Cortana Analytics and then send the result back to the bot.
The list of services will grow – it’s only been in preview for a month and a half at this point.
It delivers at massive scale:
- Sub-second end-to-end latency in 99th percentile
- 10,000,000 events per second per region.
- 24-hour retry with exponential back off for events not delivered
- A visual design experience without writing any code, no matter how complex it is.
- Multiple connectors to Azure, third-party, or your own services/functions.
- Uses a declarative definition format to work with CI/CD.
There are over 170 (and growing) connectors to orchestrate, e.g. Slack, SalesForce, Twitter, Box, Facebook, GitHub, DropBox, Pintrest, WordPress, etc.
An evolution of WebJobs from PaaS.
- Develop locally using best of class developer tools
- Boost productivity through triggers and bindings.
- Choose from a variety of programming languages
- Integrate with existing DevOps processes.
Lots of triggers: schedule, HTTP (REST or webhook), Blob storage, events, queues, queues and topics, storage tables, SQL tables, NoSQL DB, Push Notifications, Wwilio SMS Text … and one I missed.
What’s New in Functions
- You can develop locally on Linux, MacOS, and Linux
- Monitor serverless applications using Application Insights (now GA)
- Trigger a function on changes in Cosmos DB
- Securely provide access to information in Microsoft Graph through a function.
- Trigger a function from a real-time analytics pipeline in Stream Analytics
Four volunteers go on stage. There are two IoT buttons. When they are pressed, they’ll send a message to Azure IoT, and will trigger Functions. Fastest to answer questions get most points, last gets least points. And then questions on Serverless tech come up. The scores are processed by Serverless compute using Functions. In this case, the functions were actually running on a local host (WS2016).
- Fujifilm: Online service handling 1 TB data per day. Monolithic design where code change was hard. Cosmos DB and Functions reduced latency by 95%. Development time reduced by 75%. Higher reliability. Ability to add new features and release faster and more frequently.
- Quest: Uses serverless for a SaaS application. Able to manage millions of objects. Cut time-to-market by 2/3. No costly on-premises h/w.
- Plexure: Service to help retailers understand “signals” from their stores to optimize sales. Built serverless with functions, even hubs, IoT, machine learning and Cosmos DB. Reduced efforts and scales on demand. Used to build infrastructure for each retailer. Now they just publish APIs.