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

  • 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

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