A problem-solution approach to delivering Microservice-based design using .NET and RabbitMQ, based on real-world examples. The focus highlights key design decisions, custom problems encountered, lessons learned, and general advice. This is technical presentation, for the most part, also briefly touching on softer elements.
2. Overview
Microservice design based on real-world examples
Focus on, but not restricted to .NET and RabbitMQ
Design Patterns
Decoupled Middleware
Circuit Breaker
Flyball Governor
Implementation Problems
Consistent Message Delivery
Load balancing a RabbitMQ Cluster
Selling to the Business
9. Flyball Governor
Load never drops to 0% capacity
Load never rises to 100% capacity
Balance is achieved through polling
Requires detailed tuning to establish optimal setting
End result is Autoscaling through natural equilibrium
27. Business Drawbacks
One-way communication
Customer is in control
Website is idle when user is idle
Limited window of opportunity to interact
Reduced scope for ancillary revenue
28. Technical Drawbacks
Results in dependencies
Failure affects everything
Change is slow
Scale is expensive (minor features require unilateral scale)
Steep learning curve
Technology stack is limited to specific skillsets
Introduces legal pitfalls (PCI DSS, Compliance)
Duplicated components due to lack of explicit boundaries
Rigid – likely to break under pressure
31. Microservice Flow #3
Car Hire
Hotel
Flight
Taxi
User Profile
Fare Finder
Flights
Taxis
Cars
Other
32. Microservice Flow #4
Car Hire
Hotel
Flight
Taxi
User Profile
Fare Finder
Flights
Taxis
Cars
Hotels
Other
33. Enhanced Flow Step #5
Car Hire
Hotel
Flight
Taxi
User Profile
Fare Finder
Flights
Taxis
Cars
Fares
Hotels
Other
34. Business Benefits
Two-way communication
We’re in control (think Google)
APIs are always working
Unlimited opportunities to interact
Broader scope for ancillary revenue
35. Technical Benefits
Eliminates dependencies
Failure is isolated
React to change quicker
Scale is less expensive (APIs scale individually)
More intuitive learning curve
Technology stack is not limited to specific skillsets
Shielded from legal pitfalls
Reusable components
Flexible – will bend rather than break under pressure
36. General Advice
Log everything
Log everything
Log some more
If a framework exists, use it
Try to avoid the technical swamp