Session
[WORKSHOP] Building cloud-ready, resilient systems in .NET
You may think that your application is already cloud-ready, it's deployed in the cloud, isn't it?!
But in truth, if your application is hard to monitor/scale/release/maintain, lacks resiliency, and is poorly structured, then it's not "cloud-ready".
So what does "cloud-ready" actually mean?
A “cloud ready” application is a legacy software application that has been modified to run on cloud computing infrastructure.
Whether you are looking at a modular monolith or a full-blown distributed system, building a cloud-ready, resilient application is a must.
In this workshop, we will look at the requirements for Tacky Tacos. A fictional taco business that's thriving and wishes to expand.
We'll look at all the different requirements that need to be met, starting with a code kata and how we can apply various design patterns to our way of thinking.
We'll then move on to building out a functioning, all-be-it, contrived modular monolith using .NET 8 and C#, learning as we go.
Topics we'll cover:
- Architecture and Methodology
- Modular monolith vs microservices vs SOA
- Distribution and Modularisation
- Common design patterns
- Modelling requirements
- .NET 8 application development recap
- Data
- Synchronous communication
- Asynchronous communication
- .NET Aspire
- And more!
Who is this workshop aimed at
This workshop is aimed at backend developers with some experience writing web applications using C# and .NET.
The workshop will not cover .NET Framework.
Equipment and software
- A computer - either Windows PC or macOS
- Visual Studio 2022 or JetBrains Rider
- VS Code
- .NET 8 or higher
- Docker Desktop
- Postman or similar
- Azurite
======================================
For the organiser:
## Some of the topics we'll cover:
- Architecture and Methodology
- Modular monolith vs microservices vs SOA
- The "12 Factors" and what they are
- Distribution and Modularisation
- Common design patterns
- Modelling requirements
- Practical: Code kata for tacky tacos
## Implementations
### .NET 7 application development recap
- Dependency Injection
- HttpClientFactory
- Good practices
### External Configuration
- What it is and why it is useful
- Practical: implement external configuration with
### Databases
- Why separate DBs may be required
- Eventual Consistency
- DB options - SQL, Document, Table, Blob, Serverless
- Practical: Create two distinct databases - later these will employ "eventual consistency"
### Synchronous communication
- Introduction to synchronous communication and when to use it
- Synchronous options
- Practical: build an HTTP endpoint for a web client
- Practical: implement gRPC to communicate with a non .NET application
- Practical: implement a hub with SignalR to broadcast real-time information
### Asynchronous communication
- Introduction to asynchronous communication and when to use it
- Message brokers
- Implementation considerations
- Error handling
- Choosing a message broker
- Practical: Implement a pub/sub with RabbitMQ
### API gateways and BFF
- Introduction to the use cases and considerations
- When to use BFF
- Practical: API Gateway with YARP
### Load balancing
- What it is and why we need it
- Practical: Add load balancing to YARP
### Service discovery
- What it is and why we need it
- Practical: set up Service Discovery using Steeltoe and Eureka
- Practical: Integrate Service Discovery with YARP API gateway
### Resiliency
- What makes an application resilient?
- policies, circuit breakers, fallbacks and retries
- Practical: implement policies with Polly
### M2M Authentication
- Why it's needed
- Practical: Implement M2M authorization with Auth0
### Monitoring, tracing, observability
- What is it and why do we need it
- What is the OpenTelemetry project
- What tools are available
- Practical: Implement various endpoints and actuators with Steeltoe
### Serverless
- When to use a serverless function and why
- Practical: create an Azure Function service
## Who is this workshop aimed at
This workshop is aimed at backend developers with some experience writing web applications using C# and .NET.
The workshop will not cover .NET Framework.
## Equipment and software
- A computer - either Windows PC or macOS (I have no experience with Linux so if you bring a Linux machine my problem-solving will be limited)
- Visual Studio 2022 or JetBrains Rider or VS Code
- .NET 7
- Docker Desktop
Layla Porter
International speaker, software architect and game studio founder.
Milton Keynes, United Kingdom
Links
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top