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

Course: ADSD - 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

Course: ADSD - Coupling

  • 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

Course: ADSD - Intro to SOA

  • 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