All Workshops

From REST to Async Messaging

Transform your architecture from synchronous REST to powerful async patterns

1 day
Hands-on Workshop
Customizable

Most of our systems have or expose APIs that are consumed by other downstream services.

We call them REST APIs, but we actually put in practice only some of the principles that made REST a powerful architectural pattern. By doing this, we just ended up serving JSON or XML responses over HTTP.

As a consequence, we extensively use HTTP as a protocol throughout our systems, without considering its limitations.

Even though we might leverage syntactic sugar like async/await when we implement communication between our system's components, HTTP protocol has a synchronous nature.

This limits our options when it comes to choosing a communication pattern or introducing very important quality attributes like resiliency, fault tolerance, scalability or temporal decoupling.

We overlook some of these architectural aspects until it's too late, and we learn the hard way that we need them.


What We'll Build 🔗

In this workshop, we will start with a 'traditional' RESTful API and make the necessary changes to introduce asynchronous messaging, all with an eye on non-functional requirements.

This is a hands-on workshop, so be prepared to write code!

By the end of the workshop, you will know how to evolve your architecture from simple to complex, from RESTful to messaging-based, that has all the extra aspects that messaging brings.

Introducing asynchronous messaging in a system is not an easy task. Sometimes, we have to unlearn what it means to do a simple Request/Response using HTTP so we can progress.


Workshop Structure & Contents 🔗

Fundamentals 🔗

  • Why API design matters
  • How we address the NFRs
  • What makes a good API

Messaging Patterns 🔗

  • Pub/Sub
  • Commands
  • Request/Response with messaging
  • Dealing with errors

Reliability 🔗

  • Error Handling
  • Fault tolerance
  • Resilience tactics

Advanced Patterns 🔗

  • Outbox pattern
  • Sagas
  • Routing Slips
  • Observability

Who Should Attend? 🔗

  • .NET Software developers that want to have a more architecture-focused approach
  • C# developers that want to understand communication patterns and best practices for APIs in distributed architectures

What You'll Learn 🔗

By the end of this workshop you will be able to:

  • Understand which APIs are best suited for which scenarios
  • Understand what non-functional requirements are needed for production-ready APIs
  • Evolve a 'traditional' architecture to a more complex one that uses asynchronous messaging
  • Understand what asynchronous messaging brings to the table and where it can benefit distributed systems