|
1 | 1 | # Serverless Microservices reference architecture |
2 | 2 |
|
3 | | -View the [documentation](./documentation) |
4 | | - |
5 | | -## Contents |
6 | | - |
7 | | -- [Docs](./Docs): Contains project information such as architecture design documents, diagrams, and source images |
8 | | -- [documentation](./documentation): Contains the documentation that will be released with the solution, and included within Azure docs |
9 | | -- [Introduction](./documentation/introduction.md): Macro architecture, data storage, source code and monitoring |
10 | | -- [pipelines](./pipelines): Azure DevOps build and release pipeline definition files for running CI/CD operations on the static web app and all Azure Function Apps |
11 | | -- [Setup guide](./documentation/setup.md): Step-by-step instructions for provisioning Azure resources and deploying the solution |
12 | | -- [dotnet](./dotnet): Visual Studio 2017 solution and related projects (Function Apps, seeder, common libraries, etc.) |
13 | | -- [nodejs](./nodejs/serverless-microservices-functionapp-triparchiver): Node.js-based Function App for archiving trip data |
14 | | -- [web](./web/serverless-microservices-web): Static web app written in Vue.js |
| 3 | +## The reference architecture |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +This reference architecture walks you through the decision-making process involved in designing, developing, and delivering the Rideshare by Relecloud application. You will be given hands-on instructions for configuring and deploying all of the architecture's components, with helpful information about each component along the way. The goal is to provide you with practical hands-on experience in working with several integral Azure services and the technologies that effectively use them in a cohesive and unified way to build a serverless-based microservices architecture. We hope you will leave with a newfound appreciation for how serverless can be leveraged for both large-scale and small solutions, and the confidence to apply what you learned in your own projects. |
| 8 | + |
| 9 | +## Customer scenario |
| 10 | + |
| 11 | +Relecloud is a new kind of company, not unlike many cloud services-focused organizations popping up around the world today. Born of the modern digital age that is focused on capitalizing on the fast-paced growth of the booming cloud industry, Relecloud has a track record of building lean startups with little operational overhead, owing to its distributed and remote workforce. Their latest endeavor is a ride share application that seeks to carve its place in the popular industry with competitive rates and improved communication between passengers and drivers. |
| 12 | + |
| 13 | +The company's technical leadership thrives on keeping tabs on the rapidly growing technology industry and new innovations built on top of fully-managed services provided by cloud providers. They are not interested in maintaining infrastructure, as they feel as though their company's time is best spent on their core strength: rapidly developing new and innovative applications that can scale to meet global demand. Like many other technical leaders, they are keen on learning new buzzwords and leaving it up to their developers to do something useful with them. The hottest trend these days seems to be serverless. The promise of consumption-based pricing, where you only pay for what you use and nothing more, is enticing. Furthermore, they have heard many good things about how serverless platforms help you prototype and develop faster by reducing the amount of code and configuration required by more traditional web platforms. The cherry on top is the fact that serverless platforms also tend to manage scaling resources to meet demand automatically, giving them dreams of releasing a wildly popular new ride share app and enjoying near-instantaneous customer growth. |
| 14 | + |
| 15 | +During their initial research phase consisting of comparing serverless offerings and creating rapid prototypes, Relecloud's team has decided to build their ride share application on Azure's serverless components, given the breadth of options and unique capabilities for orchestrating serverless activities, such as [Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-overview). They also want to investigate using the [microservices](https://aka.ms/azure-microservices) pattern in their solution design, as it seems like a good fit alongside [Azure functions](https://docs.microsoft.com/azure/azure-functions/functions-overview), [API Management](https://docs.microsoft.com/azure/api-management/api-management-key-concepts), [Event Grid](https://docs.microsoft.com/azure/event-grid/overview), and other key components and services. Being able to monitor the solution as a whole is an important capability they want to put in place from the start, especially since they are relying on so many components. Finally, they wish to simplify the lifecycle management of all these pieces of the puzzle by applying [DevOps](https://docs.microsoft.com/azure/devops/learn/what-is-devops) practices to automate continuous integration and deployment, end-to-end. |
| 16 | + |
| 17 | +## Explore Relecloud's solution using serverless and microservices |
| 18 | + |
| 19 | +[Read about Relecloud's solution](./introduction.md) and overall architecture design and decisions. The article will briefly explain the concepts around both serverless and microservices, and how they can be used together to build solutions with little to no infrastructure overhead. It will then walk you through the sample solution you will deploy in the lab, broken down into its architectural components. |
| 20 | + |
| 21 | +## Deploy Relecloud's solution today with a hands-on lab |
| 22 | + |
| 23 | +After learning about Relecloud's [serverless microservices architecture](./introduction.md), deploy the companion solution by following the step-by-step [hands-on lab](./setup.md), or take the shortcut and deploy with a few clicks [using our templates](). |
| 24 | + |
| 25 | +Each section of the lab will briefly explain what you are trying to accomplish and why. It will also link you to the relative portion of the [architecture document](./introduction.md). |
| 26 | + |
| 27 | +## Detailed documentation |
| 28 | + |
| 29 | +Use the table of contents below for detailed documentation for each component of the reference architecture. |
| 30 | + |
| 31 | +- [Introduction to serverless microservices](documentation/introduction.md) |
| 32 | + - [What are microservices?](documentation/intro.md#what-are-microservices) |
| 33 | + - [What is serverless?](documentation/intro.md#what-is-serverless) |
| 34 | +- [Architecture overview](documentation/architecture-overview.md) |
| 35 | + - [Macro architecture](documentation/architecture-overview.md#macro-architecture) |
| 36 | + - [Data flow](documentation/architecture-overview.md#data-flow) |
| 37 | +- [Initial setup](documentation/setup.md) |
| 38 | +- [API endpoints using Azure Functions](documentation/api-endpoints.md) |
| 39 | + - [RideShare APIs](documentation/api-endpoints.md#rideshare-apis) |
| 40 | + - [Durable Orchestrators](documentation/api-endpoints.md#durable-orchestrators) |
| 41 | +- [Services intercommunication using Event Grid](documentation/services-intercommunication.md) |
| 42 | + - [Logic App handler](documentation/services-intercommunication.md#logic-app-handler) |
| 43 | + - [SignalR handler](documentation/services-intercommunication.md#signalr-handler) |
| 44 | + - [DOTNET SignalR client](documentation/services-intercommunication.md#dotnet-signalr-client) |
| 45 | + - [JavaScript SignalR client](documentation/services-intercommunication.md#javascript-signalr-client) |
| 46 | + - [Power BI handler](documentation/services-intercommunication.md#power-bi-handler) |
| 47 | + - [Trip Archiver handler](documentation/services-intercommunication.md#trip-archiver-handler) |
| 48 | +- [Gateway with API Management](documentation/api-management.md) |
| 49 | +- [Data storage](documentation/data-storage.md) |
| 50 | +- [Client application](documentation/client-application.md) |
| 51 | + - [Passengers page](documentation/client-application.md#passengers-page) |
| 52 | + - [Drivers page](documentation/client-application.md#drivers-page) |
| 53 | + - [Authentication](documentation/client-application.md#authentication) |
| 54 | + - [Wrapping HTTP calls with authentication token](documentation/client-application.md#wrapping-http-calls-with-authentication-token) |
| 55 | +- [Monitoring and testing](documentation/monitoring-testing.md) |
| 56 | + - [Integration testing](documentation/monitoring-testing.md#integration-testing) |
| 57 | + - [Monitoring](documentation/monitoring-testing.md#monitoring) |
| 58 | + - [Telemetry correlation](documentation/monitoring-testing.md#telemetry-correlation) |
| 59 | + - [Monitoring for different audiences](documentation/monitoring-testing.md#monitoring-for-different-audiences) |
| 60 | +- [Source code structure](documentation/source-code-structure.md) |
| 61 | + - [.NET](documentation/source-code-structure.md#net) |
| 62 | + - [Node.js](documentation/source-code-structure.md#nodejs) |
| 63 | + - [Web](documentation/source-code-structure.md#web) |
0 commit comments