•   Home
  •   Github
  •   LinkedIn
  •   Subscribe

Thinking Out Loud

Thoughts on Software Design & Development
Tags: 
scala, system-design, et al.

Quorums and Consensus: Untangling the Nuances of Agreement in Distributed Systems

Feb 12, 2023 | distributed-systems, system-design

Quorum and Consensus appear frequently in distributed-systems literature – especially in discussions around replication, fault tolerance and distributed databases. They often sound like close cousins – both involve replicas "agreeing" on something, both rely on majorities, and both aim to keep a distributed system from drifting apart. Yet, despite these…

Using Abstractions to Hide Complexity: A Fresh Take on ACID

Oct 22, 2022 | databases, distributed-systems, system-design, storage

Software systems are built on layers of abstractions. Each layer shields developers from the messy realities beneath, allowing them to think in simpler, more reliable terms. One of the most powerful examples of this principle comes from databases called Transactions. Transactions embody the ACID guarantees — Atomicity, Consistency, Isolation, and Durability…

ACID Consistency vs. CAP Consistency: Same Word, Different Worlds

Sep 01, 2022 | distributed-systems, system-design

“Consistency” is one of those overloaded terms in computer science. It shows up in ACID transactions and in the CAP theorem, but it means very different things depending on the context. Let’s unpack the difference. Consistency in ACID In the ACID world, consistency is really about data integrity. It…

Tackling Heterogeneity in Apache Arrow Value Vectors Using Shapeless

Jul 17, 2022 | scala, apache-arrow, shapeless

Shapeless is a type class and dependent type based generic programming library for Scala that helps us in tackling heterogeneity in a collection of objects so as to cut boilerplate in our libraries. In this blog post we will see how can we leverage Shapeless to tackle heterogeneity in Apache…

Discovering Services using Apache Curator in Scala

Jul 08, 2022 | scala, apache-curator, service-discovery, distributed-systems

In any distributed system, services need to discover each other to be able to communicate. This requires a broker of sorts in place to which services could register themselves and be discovered by other services. This mechanism is what is known as Service Discovery and the most famous choice of…

Newer Posts Page 2 of 7 Older Posts
Theme Attila by zutrinken Published with Ghost