All Projects → ealsur → Serverlessazurefriday

ealsur / Serverlessazurefriday

Licence: mit
Serverless geo-replicated event-based architecture sample for Azure Friday

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Serverlessazurefriday

serverless-recipes
Compendium of Serverless samples with Azure Cosmos DB
Stars: ✭ 30 (+76.47%)
Mutual labels:  azure, azure-functions
faaskit
A lightweight middleware framework for functions as a service
Stars: ✭ 24 (+41.18%)
Mutual labels:  azure, azure-functions
DurableDungeon
A game designed to teach and learn serverless durable functions in C#
Stars: ✭ 55 (+223.53%)
Mutual labels:  azure, azure-functions
Azure Functions Python Worker
Python worker for Azure Functions.
Stars: ✭ 221 (+1200%)
Mutual labels:  azure, azure-functions
Letsencrypt Siteextension
Azure Web App Site Extension for easy installation and configuration of Let's Encrypt issued SSL certifcates for custom domain names.
Stars: ✭ 727 (+4176.47%)
Mutual labels:  azure, azure-functions
Batch Shipyard
Simplify HPC and Batch workloads on Azure
Stars: ✭ 240 (+1311.76%)
Mutual labels:  azure, azure-functions
cortana-intelligence-customer360
This repository contains instructions and code to deploy a customer 360 profile solution on Azure stack using the Cortana Intelligence Suite.
Stars: ✭ 22 (+29.41%)
Mutual labels:  azure, azure-functions
Supersafebank
Sample Event Sourcing implementation with .NET Core
Stars: ✭ 142 (+735.29%)
Mutual labels:  azure, azure-functions
Imgbot
An Azure Function solution to crawl through all of your image files in GitHub and losslessly compress them. This will make the file size go down, but leave the dimensions and quality untouched. Once it's done, ImgBot will open a pull request for you to review and merge. [email protected]
Stars: ✭ 732 (+4205.88%)
Mutual labels:  azure, azure-functions
Appservice Acmebot
Automated ACME issuer for Azure App Service (Web Apps / Functions / Containers)
Stars: ✭ 281 (+1552.94%)
Mutual labels:  azure, azure-functions
Serverless Azure Functions
Serverless Azure Functions Plugin – Add Azure Functions support to the Serverless Framework
Stars: ✭ 213 (+1152.94%)
Mutual labels:  azure, azure-functions
Azure Readiness Checklist
This checklist is your guide to the best practices for deploying secure, scalable, and highly available infrastructure in Azure. Before you go live, go through each item, and make sure you haven't missed anything important!
Stars: ✭ 457 (+2588.24%)
Mutual labels:  azure, azure-functions
Azure Maven Plugins
Maven plugins for Azure
Stars: ✭ 203 (+1094.12%)
Mutual labels:  azure, azure-functions
Jazz
Platform to develop and manage serverless applications at an enterprise scale!
Stars: ✭ 254 (+1394.12%)
Mutual labels:  azure, azure-functions
Covid19radar
Open Source / i18n / iOS Android Cross Platform Contact Tracing App by exposure notification framework Xamarin App and Server Side Code
Stars: ✭ 35 (+105.88%)
Mutual labels:  azure, azure-functions
jlik.me
URL Shortener project.
Stars: ✭ 31 (+82.35%)
Mutual labels:  azure, azure-functions
Saga Orchestration Serverless
An orchestration-based saga implementation reference in a serverless architecture
Stars: ✭ 136 (+700%)
Mutual labels:  azure, azure-functions
Azure Function Express
⚡️Allows Express.js usage with Azure Functions
Stars: ✭ 146 (+758.82%)
Mutual labels:  azure, azure-functions
Azure Functions Python Samples
Azure Functions Python Sample Codes
Stars: ✭ 266 (+1464.71%)
Mutual labels:  azure, azure-functions
25 Days Of Serverless
Repository responsible for 25 days of Serverless challenges
Stars: ✭ 400 (+2252.94%)
Mutual labels:  azure, azure-functions

Serverless geo-distributed event-based architecture with Azure Cosmos DB and Azure Functions

Serverless geo-distributed event-based architecture sample

Video

This repository was part of an Azure Friday episode, you can view it below:

Watch the Azure Friday episode

This repository contains a sample architecture that can be deployed across multiple regions and leverage Azure Cosmos DB's Multi master and Change feed features to achieve:

  • Local writes on all Azure Function regions
  • Real-time notifications provided by the Change feed
  • Real-time data migration across Cosmos containers.

Local writes

Multi Master enables all Azure Cosmos account regions to be read and write enabled. If you deploy an Azure Function App like the one in the DistributedAPI project, you will notice that the HTTP Trigger Functions are using the PreferredLocations and UseMultipleWriteLocations attributes in the Cosmos DB Output and Input bindings. The first one can define a list of comma-separated region names you want the binding to connect to preferably, and the latter tells the binding that we want to take advantage of the Multi Master feature.

You can see that in both bindings, we are using a placeholder as value as PreferredLocations. That means that we can set this value on an environment variable and the code will pick it up automatically, which also enables us to deploy the same code in multiple regions and make it work locally.

Real-time notifications

The repository contains a sample of how to use the Cosmos DB Trigger and the SignalR Output Binding. This mix lets the Azure Function wake up whenever there are new changes happening in the Azure Cosmos container's Change Feed and send them to Azure SignalR, which will use WebSocket connections to push these events to any connected clients.

Real-time data migration

Finally, mixing the Cosmos DB Trigger with the Cosmos DB Output Binding, allows for online data migration between two Azure Cosmos containers; whenever there are new events on one container, they will be copied to another one, which might even have a different partition key. On this case, it is important the use of LeaseCollectionPrefix on the Trigger, which will enable multiple triggers to share the same leases container and work in parallel.

References

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].