System Design on Easy Mode
- 2. - Developer relations engineer @ Temporal
- Worked on Temporal’s JavaScript runtime
- Wrote a book on GraphQL
- Consultant & open-source maintainer
2
Loren Sands-Ramshaw
- 3. 04 System design patterns
03 How?
02 New possibilities
01 Durable execution
Today’s Agenda
3
- 9. 9
Normal execution
Functions fail to complete executing when:
- Process crashes
- Process killed by OS
- Machine loses power
- Deploy new code
- Transient failures
- 13. Coding at a higher level of abstraction
13
Durable execution
- 14. Coding at a higher level of abstraction
14
Durable execution
High-level languages
Low-level languages
- 15. Coding at a higher level of abstraction
15
Durable execution
High-level languages
Low-level languages
Durable code
Normal code
- 20. 20
New possibilities
- await sleep('30 days')
- Send RPCs to the function
- Forever functions
- Don’t have to use a database
Durable execution
- 23. 23
- Process independent
- Automatic retries
- Sleep
- RPCs
- Forever functions
- Local variables instead of database
Durable execution
- 24. 24
- Process independent
- Automatic retries
- Sleep
- RPCs
- Forever functions
- Local variables instead of database
Durable execution
… but how?
- 45. CQRS
Distributed cron jobs
Task queues
State machines
45
Design patterns
Circuit breakers
Event-driven architecture
Sagas
Transactional outboxes
Event sourcing
- 46. CQRS
Distributed cron jobs
Task queues
State machines
Circuit breakers
Event-driven architecture
Sagas
Transactional outboxes
Event sourcing
46
Design patterns