things are sometimes together for a reason; a big transaction in one database is much faster and less complex than distributed transaction across multiple services
Computation on a single node is easy, because everything happens in a predictable global total order. Computation on a distributed system is difficult, because there is no global total order.
Getting a million users is infinitely harder than scaling a system to handle a million users. Most systems could run comfortably on a Raspberry Pi
Streaming (Kappa Architecture)
Batch + Streaming (Lambda Architecture)
Transactions Patterns, Managements and Pitfalls
Partition (nodes: sync and faults)
Design techniques partition and replicate
Conflict detection and read repair
Fallacies of distributed computing
TODO book Designing Data-intensive Applications
TODO book Designing Data-Driven Applications
TODO book Microservices patterns
TODO book Software Architecture The Hard Parts
TODO book Thinking in Distributed Systems
Manifesto:
https://www.reactiveprinciples.org/
https://wiki.nikiv.dev/distributed-systems/
https://ferd.ca/a-distributed-systems-reading-list.html
https://microservices.io/patterns/index.html
https://github.com/donnemartin/system-design-primer#system-design-topics-start-here
http://nil.lcs.mit.edu/6.824/2020/schedule.html
https://muratbuffalo.blogspot.com/2023/10/hints-for-distributed-systems-design.html
https://brooker.co.za/blog/2019/04/03/learning.html?ref=blog.pragmaticengineer.com
https://brooker.co.za/blog/2014/05/19/vr.html
https://dancres.github.io/Pages/
https://bytesauna.com/post/microservices