Overview
Syllabus
intro
preamble
agenda
what is a distributed system?
what is complexity?
monolithic architecture
disadvantages
microservices architecture
what do distributed systems give us?
challenges, quality attributes
what are main troubles?
unreliable networks
strategy: timeout
strategy: retry
strategy: idempotency
strategy: circuit breaker
concurrency and lost writes
strategy: snapshot isolation
strategy: compare and set
strategy: lease
dual write problem
strategy: transactional outbox
strategy: log tailing
unreliable clocks
availability and consistency
high availability
failure
consistency types
linearizability
strategy: distributed consensus algorithm, e.g. raft
more complexities
eventual consistency
strategy: read from leader
process pauses
strategy: fencing
observability
strategy: distributed tracing
strategy: orchestration over choreography
evolvability and cybernetics principles
systems thinking
feedback loops
adaptability and learning
goal-oriented design
big ball of mud
hierarchy
fallacy: all microservices are the same
strategy: service types
sre principles
infrastructure as code
chaos engineering and testing: jepsen tests
simplicity and measuring complexity
thank you for attending!
Taught by
Conf42