Course: Advanced Distributed System Design - Udi Dahan

April 9th, 2020

 

Course: Advanced Distributed System Design - Udi Dahan

 

Table of Contents

Course Curriculum

Important info about the course

Fallacies of Distributed Computing

Coupling

Intro to messaging

Exercise: selling messaging to your organization

Messaging patterns

Architectural styles: Bus and Broker

Intro to SOA

Exercise: services modelling

Advanced SOA

CQRS

SOA: operational aspects

Sagas/Long-running business processes modelling

Exercise: saga design

SOA: modelling

Organizational transition to SOA

Web Services and User Interfaces

 

fallacy 11

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

[ ] Article: "4+1 views of software architecture"


 

 

no description for image available

 

def: Application

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

def: System

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

application !-> connectivity

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

8 fallacies of distributed computing

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

latency table

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

backward compatibility is a requirement for CD

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

unless you have multiple versions & backward compatibility, dont do CD

 

CD will become Cdowntime


 

 

no description for image available

 

functionally separate vs physically separate

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

functionally separate vs physically separate

 

 

 

you can deploy monolith what is logically decoupled


 

 

no description for image available

 

Product vs Project

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

maintenance is a bad metaphor, project is better

 

 

 

maintenance: less skill needed, no big architecture changes


 

 

no description for image available

 

role: Business Analist

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

role: Architect

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

role: Project Manager

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

Estimates

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

Given a

 

- well-formed team

 

(worked together)

 

- with required skills

 

(has done such things before)

 

- of size S


 

 

no description for image available

 

decentralize business logic

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

3 more fallacies

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

Coupling

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

incoming vs outgoing coupling

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

def: incoming coupling

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

def: outgoing coupling

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

clarity: incoming vs outgoing

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

count coupling

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

X->Y

 

x outboing 1

 

y incoming 1

 

 

 

A->B

 

x outgoing 5 "is this class single responsibility principle"

 

y incoming 1 "how many classes do I have to change"

 

 

 

 

 

static analysis tool


 

 

no description for image available

 

hidden coupling

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

3 aspects of coupling

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

aspect 1: platform (aka interoperability)

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

text-based representation on the wire

http, smtp, udp, ...

 

 

soap / wsdl / rest

 

 

apect 2: time

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

aspect time: Pub-Sub explicit caching

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

make explicit in A that caching is happening


 

 

no description for image available

 

aspect time: Pub-Sub constraints

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

aspect time: Pub-Sub add validity period to data

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

aspect time: Pub-Sub consitency

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

if pub sub not OK time-constraint,

 

then RPC also not OK (can use cache)

 

-> transaction across A and B needed


 

 

no description for image available

 

aspect space: routing

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

 

 

no description for image available

 

aspect time: logical owner

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

logical owner


 

 

no description for image available

 

coupling 5 dimensions tradeoffs

Source URL:https://learn.particular.net/courses/take/adsd-online-free/pdfs/11460613-distributed-system-design-slides

tradeoffs between dimensions

 

per ''layer"

 

keep LOGIC away from all the other

 

"is the coupling reasonable for it's responsibility"

 

eg. fromend webapi, platform low, even if HTTP response which is time high coupling

 

internal component: low temporal at cost of higher platform (pub-sub platform framework)


 

 

no description for image available