✓ See you in 2021!
✓ See you in 2021!
09:00 - 17:00
A "zero to hero" workshop about building serverless systems consisting of functions and containers, inter-connecting them using messages and events, monitoring your system, provisioning, and deploying.
Content & Process
The workshop revolves around an imaginary problem – a news agency is receiving a lot of news reports that someone needs to categorize by hand based on the content.
What we’ll be doing is design, and build a serverless system around a third-party solution that categorizes videos and images based on their content to automate the task fo the news agency.
As we go over all the services that we’ll be using, we’ll also dive deeper into their pros and cons.
We’ll start by using containers, and a regular ASP.NET Core API. Naturally, we’ll run the instances on a Kubernetes service provided by Azure, and try out the serverless scaling options, test the scaling and the latency, etc.
The next step is to start building Functions, where we’ll relatively quickly see how much manual labor would it take to have Functions with their state saved somewhere to send them to sleep so that we don’t get charged while waiting for something else to finish.
That’s where Durable Functions come in to save the day. Naturally, it wouldn’t be fun skip covering something opposite to serverless – hosting Functions on-prem, and the benefits of it, as well as options for hybrid deployments.
The second step involves connecting all those containers and Functions, to have a system that does something. We’ll first cover Service Bus, and start using both Topics and Queues.
But, it wouldn’t be a proper serverless system without using Event Grid, which we won’t just apply for "usual" purposes, but we’ll cover some "cool hacks" that can ease your life as well.
The third part will start with API Management – a cool service that we want and need in front of our APIs. We’ll cover exposing API endpoints, creating subscriptions with different APIs, throttling the number of parallel connections based on the subscription type, mocking APIs, etc.
At that point we’ll have a pretty much functional system, but without any monitoring, so that will be our next step – implement monitoring into every segment of our system, so that not only can we see what’s wrong in it, but so that we can also track how much does the whole thing cost to run.
Once that we’ve set up the whole thing, the only natural next step is to make the system more resilient, and what better way is there to do it than to deploy it to multiple data centers/regions.
The first step in this direction is to learn how to provision all those services programmatically, instead of spending the whole day clicking through the Azure Portal. Next step would be to deploy our code base to those newly provisioned services from Azure DevOps.
To make everything flawless, we’ll have to cover sharing, and deploying secrets, and connection strings both in a more conventional way and by using KeyVault.
Now that we’ve covered all of that, we’ll go through each deployed service, figure out how can we make it redundant, how to tackle failed requests in another region, and also how to route traffic to various regions.
And now, now you’re ready to start building your systems.
Audience & Requirements
Participants should be developers/IT Pros with a more or less
clear idea of how do distributed systems work in general, and why aren’t
we building a monolith.
If they want to replicate the whole workshop, they should be comfortable with C# development, but
everything will be understandable to everyone.
To participate in the hands-on parts, instead of just following, participants should have:
- An Azure subscription
- A Windows machine with the latest Visual Studio 2017 (Community edition is fine)
- Visual Studio 2017 should have the latest versions of:
- Azure Functions and Web Jobs Tools (https://marketplace.visualstudio.com/items?itemName=VisualStudioWebandAzureTools.AzureFunctionsandWebJobsTools)
- Visual Studio Tools for Kubernetes (https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vs-tools-for-kubernetes)
- Docker Desktop (Windows) installed https://hub.docker.com/editions/community/docker-ce-desktop-windows
Azure free trials are available, and the credit card needed for verification won’t be charged without explicit consent after the trial/free credits expire.
It’s easy to use an Azure VM for this workshop instead of installing everything on your machine.
To install Docker Desktop, you’re going to need a free Docker account.