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
Exercise: selling messaging to your organization - discussion (part 1)
Exercise: selling messaging to your organization - discussion (part 2)
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
[ ] Article: "4+1 views of software architecture"

def: Application

def: System

application !-> connectivity

8 fallacies of distributed computing

latency table

backward compatibility is a requirement for CD
unless you have multiple versions & backward compatibility, dont do CD
CD will become Cdowntime

functionally separate vs physically separate
functionally separate vs physically separate
you can deploy monolith what is logically decoupled

Product vs Project
maintenance is a bad metaphor, project is better
maintenance: less skill needed, no big architecture changes

role: Business Analist

role: Architect

role: Project Manager

Estimates
Given a
- well-formed team
(worked together)
- with required skills
(has done such things before)
- of size S

decentralize business logic

3 more fallacies

Coupling

incoming vs outgoing coupling

def: incoming coupling

def: outgoing coupling

clarity: incoming vs outgoing

count coupling
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

hidden coupling

3 aspects of coupling

aspect 1: platform (aka interoperability)

text-based representation on the wire
http, smtp, udp, ...
soap / wsdl / rest
apect 2: time

aspect time: Pub-Sub explicit caching
make explicit in A that caching is happening

aspect time: Pub-Sub constraints

aspect time: Pub-Sub add validity period to data

aspect time: Pub-Sub consitency
if pub sub not OK time-constraint,
then RPC also not OK (can use cache)
-> transaction across A and B needed

aspect space: routing

aspect time: logical owner
logical owner

coupling 5 dimensions tradeoffs
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)

This post was referenced in: