---
title: "The Two Abstractions of System Design: Hide or Reduce"
url: https://daily.dev/posts/the-two-abstractions-of-system-design-hide-or-reduce-nrvfw7szp
source_url: https://muratbuffalo.blogspot.com/2026/05/the-two-abstractions-of-system-design.html
type: article
source: "Metadata"
published: 2026-05-08T23:30:35.471Z
updated: 2026-05-08T23:31:09.246Z
tags: ["career", "distributed-systems"]
reading_time: 4
upvotes: 1
comments: 0
language: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# The Two Abstractions of System Design: Hide or Reduce

**[Metadata](https://daily.dev/sources/muratbuffalo)** · 4 min read · 1 upvotes · 0 comments

## Summary

There are two fundamentally different kinds of abstraction in computer science that are often conflated under the same term. Modularity abstraction (ADTs, APIs, layered design) hides internals behind interfaces and encapsulates complexity. Modeling abstraction, used in formal methods and distributed systems, does the opposite — it reduces a system to its minimal behavioral skeleton, exposing concurrency and fine-grained orderings to reason about correctness. Examples of modeling abstraction include Lamport clocks, linearizability, consensus protocols like Paxos, and the log-as-database idea. Understanding this distinction is key to mastering system modeling and TLA+.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://muratbuffalo.blogspot.com/2026/05/the-two-abstractions-of-system-design.html>

---

Tags: [#career](https://daily.dev/tags/career), [#distributed-systems](https://daily.dev/tags/distributed-systems)

[View this post on daily.dev](https://daily.dev/posts/the-two-abstractions-of-system-design-hide-or-reduce-nrvfw7szp)
