Microservice vs. Monolithic Architecture

Download Microservice vs. Monolithic Architecture

Post on 08-Aug-2015

2.586 views

Category:

Software

2 download

Embed Size (px)

TRANSCRIPT

  1. 1. Microservice Architecture Benefits vs. Monolithic Architecture
  2. 2. Monolithic Flow #1 I want to book a flight
  3. 3. Monolithic Flow #2 Here are the available flights
  4. 4. Monolithic Flow #3 I want to book one of those flights
  5. 5. Monolithic Flow #4 Would you like to hire a car?
  6. 6. 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
  7. 7. 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
  8. 8. Microservice Flow #1 Car Hire Hotel Flight Taxi User Profile Fare Finder Flights Other
  9. 9. Microservice Flow #2 Car Hire Hotel Flight Taxi User Profile Fare Finder Flights Taxis Other
  10. 10. Microservice Flow #3 Car Hire Hotel Flight Taxi User Profile Fare Finder Flights Taxis Cars Other
  11. 11. Microservice Flow #4 Car Hire Hotel Flight Taxi User Profile Fare Finder Flights Taxis Cars Hotels Other
  12. 12. Enhanced Flow Step #5 Car Hire Hotel Flight Taxi User Profile Fare Finder Flights Taxis Cars Fares Hotels Other
  13. 13. Business Benefits Two-way communication Were in control (think Google) APIs are always working Unlimited opportunities to interact Broader scope for ancillary revenue
  14. 14. 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
  15. 15. Anatomy of a Microservice Decoupled Middleware design pattern Microservices communicate across a Service Bus (Kafka, RabbitMQ, NATS.io) Service Bus is centralised Microservices are distributed TCP communication is generally favoured Microservices do 1 thing only, and they do it very well Not restricted to a specific technology Facilitates Circuit Breaker, Bulkhead, and Handshaking design patterns Avoids cascading failure
  16. 16. Anatomy of a Microservice Microservice Daemon Message Dispatcher Event Listener Microservice Daemon Event Listener Message Dispatcher Service Bus Queue #1 Queue #2 Message Message Message Message
  17. 17. References http://insidethecpu.com/2015/05/22/microservices-with-c-and-rabbitmq/ http://martinfowler.com/articles/microservices.html http://microservices.io/ http://cdn.oreillystatic.com/en/assets/1/event/79/Stability%20Patterns%20P resentation.pdf
  18. 18. Questions How do we achieve Continuous Integration/Deployment? Monitoring sounds complicated Why now? Is there a reason this hasnt been done up until now? Can we deploy segment-by-segment? Which brokers offer message-durability? How will this affect UI development? How do we manage the extra overhead involved in multiple service calls?

Recommended

View more >