Course: Advanced Distributed System Design - Udi Dahan
April 9th, 2020
Course: Advanced Distributed System Design - Udi Dahan
https://learn.particular.net/courses/adsd-online
Important info about the course
Welcome to the course
Distributed System Design- Slides
Fallacies of Distributed Computing
Introduction: Systems vs. Applications
Fallacy #1: The network is reliable
Fallacy #2: Latency isn’t a problem
Fallacy #3: Bandwidth isn’t a problem
Fallacy #4: The network is secure
Fallacy #5: The network topology won’t change
Fallacy #6: The admin will know what to do
Fallacy #7: Transport cost isn’t a problem
Fallacy #8: The network is homogeneous
Summary: 8 fallacies of distributed computing
Fallacy #9: The system is atomic
Fallacy #10 : The system is finished
Fallacy #10: Towards a better development process
Fallacy #11 : The business logic can and should be centralized
Coupling in applications: afferent and efferent
Coupling in systems: platform, temporal and spatial
Coupling solutions: platform
Coupling solutions: temporal and spatial
Coupling: summary and Q&A
Intro to messaging
Why messaging?
One-way, fire & forget
Performance: messaging vs RPC
Service interfaces vs strongly-typed messages
Fault tolerance
Auditing
Web Services invocation
Exercise: selling messaging to your organization
Exercise: selling messaging to your organization - overview
Exercise: selling messaging to your organization - discussion (part 1)
Exercise: selling messaging to your organization - discussion (part 2)
Exercise: selling messaging to your organization - summary
Messaging patterns
Dealing with out of order messages
Request-response
Publish-subscribe
Publish-subscribe: topics
Exercise: dealing with out of order messages - overview
Exercise: dealing with out of order messages - solutions
Visualization
Messaging patterns: summary
Architectural styles: Bus and Broker
Intro to architectural styles
Architectural styles: Broker
Architectural styles: Bus
Architectural styles: Bus vs Broker
SOA tenets
Service example
Q&A
Services modelling: Workflows, boundaries and business capabilities
UI composition and Branding service
IT/Ops service
Exercise: services modelling
Exercise: services modelling (hotel) - overview
Exercise: services modelling (hotel) - solutions
SOA modelling process and approach
Domain analysis: Hotel
Domain analysis: Hotel - payment
Domain analysis: Hotel - booking
Domain analysis: Hotel - check-in
Advanced SOA
Business components
Autonomous components
Autonomous components: deployment
Service boundaries
Reporting
Referential integrity
Team structure
CQRS
Intro to CQRS
Non-collaborative domains
Collaborative domains
CQRS theory
CQRS in action
CQRS: summary
Q&A: event sourcing
Q&A: search, reporting, and requirements vs user wishes
Engine pattern
Q&A: engine pattern
SOA: operational aspects
Deployment
Monitoring
Scaling
Fault-tolerance, backups, disaster recovery
Versioning
Sagas/Long-running business processes modelling
Sagas: long-running processes
Sagas: request-response
Sagas: event-driven
Sagas: time component
Exercise: saga design
Exercise: saga design - overview
Exercise: saga design - solutions
SOA: modelling
Domain models
Testing domain models
Domain models deployment
Concurrency models
Realistic concurrency
Domain models: sagas
Organizational transition to SOA
The rewrite tax
Phase 1: Good programming practices
Phase 2: Pub/sub
Phase 3: carve out pieces
Phase 4: attack the database
Web Services and User Interfaces
Caching
Content Delivery Networks
Personalization