#Disributed Systems

 The Log: What every software engineer should know about real-time data's unifying abstraction

One of the most useful things I learned in all this was that many of the things we were building had a very simple concept at their heart: the log. Sometimes called write-ahead logs or commit logs or transaction logs, logs have been around almost as long as computers and are at the heart of many distributed data systems and real-time application architectures.

Disributed Systems Event Sourcing Software Engineering

Jun 8 2024

 A Distributed Systems Reading List

This document contains various resources and quick definition of a lot of background information behind distributed systems. It is not complete, even though it is kinda sorta detailed. I had written it some time in 2019 when coworkers at the time had asked for a list of references, and I put together what I thought was a decent overview of the basics of distributed systems literature and concepts.

Disributed Systems

Apr 25 2024

 Designing Fault-Tolerant Software with Control System Transparency

GN&C Fault Protection Fundamentals by Robert Rasmussen, who works for the Jet Propulsion Laboratory, which is an organization that works closely with NASA on designing spacecraft. GN&C is guidance, navigation, and control. These are the main software systems here. This paper actually distills a ton of experience spent with really thinking through how to build really fault tolerant systems into some core principles.

Architecture Disributed Systems Video

Mar 5 2024

 Granularity & Communication for Microservice Architectures

Architects struggle in modern distributed architectures with two Hard Parts: finding the appropriate service granularity and determining the correct communication styles between services. This talk introduces a new technique for performing tradeoff analysis for microservices architectures around both static and dynamic coupling. Static coupling helps determine the proper granularity by applying integrators and disintegrators. Dynamic coupling helps architects understand the interplay between communication (synchronous versus asynchronous), consistency (atomic versus eventual), and coordination (orchestration versus choreography), along with guidelines on when to choose particular communication styles. In this talk, Neal provides architects with the nomenclature and patterns to understand these difficult aspects of microservices and related architectures.

Architecture Disributed Systems Microservices Video

Oct 5 2023

 How to do distributed locking

As part of the research for my book, I came across an algorithm called Redlock on the Redis website. The algorithm claims to implement fault-tolerant distributed locks (or rather, leases [1]) on top of Redis, and the page asks for feedback from people who are into distributed systems. The algorithm instinctively set off some alarm bells in the back of my mind, so I spent a bit of time thinking about it and writing up these notes.

Design Disributed Systems

Aug 20 2023