Skip to main content

Command Palette

Search for a command to run...

Chapter 3 — Core Concepts (CAP, Consistency — No BS)

Updated
View as Markdown
Chapter 3 — Core Concepts (CAP, Consistency — No BS)
R
I'm Rudraksh Laddha — a DevOps engineer and emerging full-stack developer, passionate about building scalable, reliable systems that solve real-world problems. With a solid foundation in cloud infrastructure automation using tools like Kubernetes, Docker, Terraform, and AWS, I thrive in environments where efficiency, resilience, and automation are key. But my journey doesn't stop at infrastructure. I'm actively expanding into full-stack development, building dynamic applications using React, Node.js, and MongoDB. Whether it's designing cloud-native CI/CD pipelines or developing intuitive user interfaces, I enjoy creating end-to-end solutions — from server to screen. Right now, I'm: 🧩 Building full-stack applications that merge DevOps reliability with engaging frontend experiences 🛠️ Contributing to open-source projects, learning through collaboration and real-world scenarios 🚀 Growing Virendana Ui, my own UI library focused on expressive, clean design systems 🚀 Growing Learn Virendana, where I share my personalized learning journey — from beginner to experienced 🎮 Developing side projects like 2048 Rush, blending product thinking with scalable infrastructure My long-term goal? To bridge DevOps and development — building products that are not just functional and fast, but also resilient, beautiful, and ready for scale.

Concept 3: CAP Theorem

The most misunderstood concept in system design. Let's fix that.

The WhatsApp Group Analogy

Imagine a WhatsApp group with 3 people: Rahul, Priya, Deepak.

All 3 store a copy of the group messages on their phone.

Now Rahul sends a message. Network is bad. Priya gets it. Deepak doesn't.

Now what do you do?

Option 1 (Choose Consistency):

"Nobody sees the message until ALL 3 have received it."

✔️ Everyone sees the same data

❌ Priya has to wait even though she received it

Option 2 (Choose Availability):

"Priya sees the message immediately. Deepak gets it later when network recovers."

✔️ Everyone can keep using the app

❌ Deepak temporarily sees stale/old data

You can't have both. That's CAP.

The 3 Letters Explained

C = Consistency
    Every read returns the most recent write.
    "All copies of data are identical at all times."
    
A = Availability
    Every request gets a response (even if data might be slightly old).
    "The system is always up and responding."
    
P = Partition Tolerance
    System works even if network connection between servers breaks.
    "Handle network failures gracefully."

⚠️ In real distributed systems, P is ALWAYS required. Networks always fail sometimes.

So you only really choose between C and A.

Pick C+P Pick A+P
Bank transfers Your Twitter/Instagram feed
Stock trades DNS (domain name lookups)
Inventory: "Is item in stock?" Shopping cart (slight staleness okay)
Supabase (PostgreSQL) Cassandra, DynamoDB

💡 apt-tutor context: User scores and leaderboard can be A+P (slightly stale is okay). But payment transactions must be C+P (exact consistency).


📱 Concept 4: Availability — The 9s

You'll hear engineers say "we need five nines of availability." What does that mean?

Availability Downtime per year Real meaning
99% 3.65 days Unacceptable for production
99.9% (3 nines) 8.76 hours Okay for small apps
99.99% (4 nines) 52.6 minutes Good
99.999% (5 nines) 5.26 minutes Used by banks, airlines

How do you achieve high availability?

  • Redundancy: Run 2 copies of everything. If one dies, other takes over.

  • Health checks: Constantly ping servers. If dead, route traffic away.

  • Multi-region: Deploy in Mumbai AND Singapore. One DC burns down, other serves traffic.


🔄 Concept 5: Consistency Models

Not all consistency is the same. There's a spectrum:

Strong Consistency

"What you write, you immediately read."

Example: Bank balance. You transfer ₹500. Next second, both you and the receiver see the updated balance.

Cost: Slow. Need to wait for all replicas to agree.

Eventual Consistency

"Data will become consistent... eventually. Just not immediately."

Example: You post on Instagram. Your friend in another city might see it 2 seconds later.

Cost: Users might temporarily see stale data. But the system is fast and always available.

Read-Your-Writes Consistency

"After YOU write something, YOU always see your own write. Others might not see it yet."

Example: You edit your Twitter bio. You immediately see the new bio. Your followers might see the old one for a few seconds.


🧠 Mental Model Summary

Building a system? Ask yourself:

1. If two servers have different data right now, is that okay?
   YES → Eventual consistency, A+P (fast, scalable)
   NO  → Strong consistency, C+P (slower, safer)

2. What's worse: being slow or showing wrong data?
   Slow is worse → Choose Availability
   Wrong data is worse → Choose Consistency