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


Security

Logging & Observability

Cache

Event Driven

Streaming (Kappa Architecture)

Batch + Streaming (Lambda Architecture)

Notification Delivery

Observability

Leader Election

Inter-service Communication

Transactions Patterns, Managements and Pitfalls

Consensus Guarantees

Partition (nodes: sync and faults)

Design techniques partition and replicate

Conflict detection and read repair

Fallacies of distributed computing

CAP Theorem

DS - Design Patterns

Algorithms

Reads vs Writes

Books-Blogs

Study Cases

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

https://architecturenotes.co/

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


🌱 Back to Garden