<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Rudraksh.tech]]></title><description><![CDATA[Rudraksh.tech]]></description><link>https://hashnode.rudrakshladdha.xyz</link><generator>RSS for Node</generator><lastBuildDate>Fri, 05 Jun 2026 18:42:50 GMT</lastBuildDate><atom:link href="https://hashnode.rudrakshladdha.xyz/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Core Building Blocks — 12 Fundamental Concepts (Part 5)]]></title><description><![CDATA[The 12 Concept are :

Requirements Clarification (Part 1)

Back-of-Envelope Estimation (Part 1)

Databases — SQL vs NoSQL (Part 2)

Caching (Part 2)

Load Balancing (Part 3)

API Design (Part 3)

Mess]]></description><link>https://hashnode.rudrakshladdha.xyz/core-building-blocks-12-fundamental-concepts-part-5</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/core-building-blocks-12-fundamental-concepts-part-5</guid><category><![CDATA[Software Engineering]]></category><category><![CDATA[software development]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Wed, 03 Jun 2026 05:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/64bd65f345c3fbe2b6debbdf/a8e49b77-2bda-4f7d-a4e7-1d30365c329f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The 12 Concept are :</p>
<ol>
<li><p>Requirements Clarification (Part 1)</p>
</li>
<li><p>Back-of-Envelope Estimation (Part 1)</p>
</li>
<li><p>Databases — SQL vs NoSQL (Part 2)</p>
</li>
<li><p>Caching (Part 2)</p>
</li>
<li><p>Load Balancing (Part 3)</p>
</li>
<li><p>API Design (Part 3)</p>
</li>
<li><p>Message Queues + Event-Driven Systems (Part 4)</p>
</li>
<li><p>Consistency vs Availability (CAP Theorem) (Part 4)</p>
</li>
<li><p>Scaling Strategies</p>
</li>
<li><p>Fault Tolerance + Reliability</p>
</li>
<li><p>.CDN (Content Delivery Network)</p>
</li>
<li><p>Data Partitioning (Sharding)</p>
</li>
</ol>
<p>But in this article we cover only two concept</p>
<h1>9. Scaling Strategies</h1>
<p><strong>What it is:</strong> How you add capacity to your system as demand grows.</p>
<p><strong>Vertical Scaling (Scale Up):</strong></p>
<ul>
<li><p>Add more CPU/RAM to one machine</p>
</li>
<li><p>Simple, no code changes</p>
</li>
<li><p>Hard limit: biggest machine available</p>
</li>
<li><p>Single point of failure remains</p>
</li>
</ul>
<p><strong>Horizontal Scaling (Scale Out):</strong></p>
<ul>
<li><p>Add more machines, distribute load</p>
</li>
<li><p>Theoretically unlimited scale</p>
</li>
<li><p>Requires stateless services, shared storage</p>
</li>
<li><p>More complex operationally</p>
</li>
</ul>
<p><strong>When to go vertical first:</strong> Small teams, early stage, simple systems. Vertical is simpler.</p>
<p><strong>When to go horizontal:</strong> When vertical limit is hit, or when you need fault tolerance.</p>
<p><strong>Stateless vs Stateful services:</strong></p>
<ul>
<li><p>Stateless: Any server can handle any request. Easy to scale horizontally.</p>
</li>
<li><p>Stateful: Server holds session/state. Sticky sessions needed. Hard to scale.</p>
</li>
</ul>
<p><strong>Rule:</strong> Design services to be stateless. Put state in a shared layer (DB, cache, blob store).</p>
<hr />
<h1>10. Fault Tolerance + Reliability</h1>
<p><strong>What it is:</strong> System's ability to continue functioning when parts fail.</p>
<p><strong>WHY it exists:</strong> Everything fails. Disks fail, networks fail, data centers fail. Design assumes failure.</p>
<p><strong>Key patterns:</strong></p>
<table>
<thead>
<tr>
<th>Pattern</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td>Redundancy</td>
<td>Duplicate critical components</td>
</tr>
<tr>
<td>Replication</td>
<td>Copy data across multiple nodes</td>
</tr>
<tr>
<td>Failover</td>
<td>Automatically switch to backup</td>
</tr>
<tr>
<td>Circuit Breaker</td>
<td>Stop calling a failing service to prevent cascade</td>
</tr>
<tr>
<td>Retry with backoff</td>
<td>Retry failed requests with increasing delays</td>
</tr>
<tr>
<td>Bulkhead</td>
<td>Isolate failures so they don't spread</td>
</tr>
</tbody></table>
<p><strong>Availability math:</strong></p>
<ul>
<li><p>99% uptime = 87.6 hours downtime/year</p>
</li>
<li><p>99.9% = 8.7 hours/year</p>
</li>
<li><p>99.99% = 52 minutes/year</p>
</li>
<li><p>99.999% (five nines) = 5 minutes/year</p>
</li>
</ul>
<p><strong>Replication types:</strong></p>
<ul>
<li><p>Synchronous: Primary waits for replica to confirm. No data loss, slower.</p>
</li>
<li><p>Asynchronous: Primary doesn't wait. Faster, but replica may lag.</p>
</li>
</ul>
<p><strong>Beginner mistake:</strong> Designing only the happy path. Always ask: 'What happens when the database goes down? When the cache is empty? When the queue is full?'</p>
]]></content:encoded></item><item><title><![CDATA[Core Building Blocks — 12 Fundamental Concepts (Part 4)]]></title><description><![CDATA[The 12 Concept are :

Requirements Clarification (Part 1)

Back-of-Envelope Estimation (Part 1)

Databases — SQL vs NoSQL (Part 2)

Caching (Part 2)

Load Balancing (Part 3)

API Design (Part 3)

Mess]]></description><link>https://hashnode.rudrakshladdha.xyz/core-building-blocks-12-fundamental-concepts-part-4</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/core-building-blocks-12-fundamental-concepts-part-4</guid><category><![CDATA[TechwithRudraksh]]></category><category><![CDATA[software development]]></category><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[Software Engineering]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Tue, 02 Jun 2026 05:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/64bd65f345c3fbe2b6debbdf/71cc8f50-5c2c-44e0-9f1d-4e6427a5d242.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The 12 Concept are :</p>
<ol>
<li><p>Requirements Clarification (Part 1)</p>
</li>
<li><p>Back-of-Envelope Estimation (Part 1)</p>
</li>
<li><p>Databases — SQL vs NoSQL (Part 2)</p>
</li>
<li><p>Caching (Part 2)</p>
</li>
<li><p>Load Balancing (Part 3)</p>
</li>
<li><p>API Design (Part 3)</p>
</li>
<li><p>Message Queues + Event-Driven Systems</p>
</li>
<li><p>Consistency vs Availability (CAP Theorem)</p>
</li>
<li><p>Scaling Strategies</p>
</li>
<li><p>Fault Tolerance + Reliability</p>
</li>
<li><p>.CDN (Content Delivery Network)</p>
</li>
<li><p>Data Partitioning (Sharding)</p>
</li>
</ol>
<p>But in this article we cover only two concept</p>
<h1>7. Message Queues + Event-Driven Systems</h1>
<p><strong>What it is:</strong> A buffer between producers (who create work) and consumers (who process work). Producers and consumers are decoupled.</p>
<p><strong>WHY it exists:</strong> Synchronous systems are brittle. If Service B is slow, Service A blocks. Queues break this dependency.</p>
<p><strong>Use cases:</strong></p>
<ul>
<li><p>Email/notification sending (don't make user wait for email to send)</p>
</li>
<li><p>Image processing after upload</p>
</li>
<li><p>Order processing pipeline</p>
</li>
<li><p>Log aggregation</p>
</li>
<li><p>Decoupling microservices</p>
</li>
</ul>
<p><strong>When NOT to use:</strong></p>
<ul>
<li><p>When you need immediate response (synchronous use case)</p>
</li>
<li><p>Simple request-response APIs</p>
</li>
<li><p>When message ordering is critical and hard to guarantee</p>
</li>
</ul>
<p><strong>Key concepts:</strong></p>
<table>
<thead>
<tr>
<th>Concept</th>
<th>Meaning</th>
</tr>
</thead>
<tbody><tr>
<td>Producer</td>
<td>Service that creates messages</td>
</tr>
<tr>
<td>Consumer</td>
<td>Service that processes messages</td>
</tr>
<tr>
<td>Topic/Queue</td>
<td>Named channel for messages</td>
</tr>
<tr>
<td>At-least-once delivery</td>
<td>Message may be delivered multiple times (consumer must be idempotent)</td>
</tr>
<tr>
<td>At-most-once delivery</td>
<td>Message delivered max once (may be lost)</td>
</tr>
<tr>
<td>Exactly-once</td>
<td>Hardest, most expensive guarantee</td>
</tr>
</tbody></table>
<p><strong>Diagram:</strong></p>
<pre><code class="language-plaintext">User uploads photo
    ↓
[Upload Service] → publishes to [Queue: photo-process]
                                        ↓
                         [Resize Worker] consumes + resizes
                                        ↓
                              [Storage Service] saves thumbnails
</code></pre>
<p><strong>Beginner mistake:</strong> Using synchronous HTTP calls between microservices for everything. When Service B goes down, Service A fails too.</p>
<hr />
<h1>8. Consistency vs Availability (CAP Theorem)</h1>
<p><strong>What it is:</strong> In a distributed system, during a network partition you can only guarantee either Consistency OR Availability — not both.</p>
<p><strong>WHY it exists:</strong> Networks fail. When two nodes can't communicate, you must choose: return stale data (available) or return an error (consistent).</p>
<p><strong>CAP Explained:</strong></p>
<ul>
<li><p><strong>C (Consistency):</strong> Every read returns the most recent write</p>
</li>
<li><p><strong>A (Availability):</strong> Every request gets a response (may be stale)</p>
</li>
<li><p><strong>P (Partition Tolerance):</strong> System works despite network partitions</p>
</li>
</ul>
<p><em>Note: P is mandatory in distributed systems (networks WILL fail). So the real choice is C vs A.</em></p>
<p><strong>Strong Consistency:</strong> All nodes see the same data at the same time. Requires coordination (slower).</p>
<p><strong>Eventual Consistency:</strong> Nodes will agree eventually, but may briefly disagree. Faster, more available.</p>
<p><strong>Decision guide:</strong></p>
<pre><code class="language-plaintext">Is stale data acceptable? → YES → Eventual Consistency (higher availability)
    ↓ NO
Can we tolerate errors instead of stale data? → YES → Strong Consistency
    ↓ NO (e.g., banking)
Use strong consistency + synchronous replication + accept availability cost
</code></pre>
<p><strong>Real examples:</strong></p>
<ul>
<li><p>DNS: Eventual consistency (changes propagate over hours, but always available)</p>
</li>
<li><p>Bank transfer: Strong consistency (you CANNOT show wrong balance)</p>
</li>
<li><p>Social media likes: Eventual (1,234 vs 1,235 likes for a second is fine)</p>
</li>
</ul>
<p><strong>Beginner mistake:</strong> Always defaulting to strong consistency. Eventual consistency enables massive scale. Use it where staleness is acceptable.</p>
]]></content:encoded></item><item><title><![CDATA[Core Building Blocks — 12 Fundamental Concepts (Part 3)]]></title><description><![CDATA[Each concept below follows the same structure: What it is → Why it exists → When to use → When NOT to use → Trade-offs → Real examples → Diagram → Beginner mistakes.

The 12 Concept are :

Requirement]]></description><link>https://hashnode.rudrakshladdha.xyz/core-building-blocks-12-fundamental-concepts-part-3</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/core-building-blocks-12-fundamental-concepts-part-3</guid><category><![CDATA[TechwithRudraksh]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[development]]></category><category><![CDATA[architecture]]></category><category><![CDATA[Architecture Design]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[Developer]]></category><category><![CDATA[software]]></category><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Wed, 27 May 2026 05:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/64bd65f345c3fbe2b6debbdf/a908dd4f-3211-4044-bd1a-3758ecaeef99.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p>Each concept below follows the same structure: What it is → Why it exists → When to use → When NOT to use → Trade-offs → Real examples → Diagram → Beginner mistakes.</p>
</blockquote>
<p>The 12 Concept are :</p>
<ol>
<li><p>Requirements Clarification (Part 1)</p>
</li>
<li><p>Back-of-Envelope Estimation (Part 1)</p>
</li>
<li><p>Databases — SQL vs NoSQL (Part 2)</p>
</li>
<li><p>Caching (Part 2)</p>
</li>
<li><p>Load Balancing</p>
</li>
<li><p>API Design</p>
</li>
<li><p>Message Queues + Event-Driven Systems</p>
</li>
<li><p>Consistency vs Availability (CAP Theorem)</p>
</li>
<li><p>Scaling Strategies</p>
</li>
<li><p>Fault Tolerance + Reliability</p>
</li>
<li><p>.CDN (Content Delivery Network)</p>
</li>
<li><p>Data Partitioning (Sharding)</p>
</li>
</ol>
<p>But in this article we cover only two concept</p>
<h1>5. Load Balancing</h1>
<p><strong>What it is:</strong> Distributes incoming requests across multiple servers so no single server is overwhelmed.</p>
<p><strong>WHY it exists:</strong> One server has finite CPU/memory. Load balancers let you add more servers and distribute work.</p>
<p><strong>Algorithms:</strong></p>
<table>
<thead>
<tr>
<th>Algorithm</th>
<th>How it works</th>
<th>Best for</th>
</tr>
</thead>
<tbody><tr>
<td>Round Robin</td>
<td>Request 1 → Server 1, Request 2 → Server 2...</td>
<td>Uniform workload</td>
</tr>
<tr>
<td>Least Connections</td>
<td>Route to server with fewest active connections</td>
<td>Variable request duration</td>
</tr>
<tr>
<td>IP Hash</td>
<td>Hash client IP to always route to same server</td>
<td>Sticky sessions</td>
</tr>
<tr>
<td>Weighted Round Robin</td>
<td>Powerful servers get more requests</td>
<td>Heterogeneous fleet</td>
</tr>
</tbody></table>
<p><strong>Layer 4 vs Layer 7:</strong></p>
<ul>
<li><p>L4 (Transport): Routes by IP/TCP. Faster, dumber.</p>
</li>
<li><p>L7 (Application): Routes by URL, headers, cookies. Slower, smarter (can route /api to API servers, /static to CDN).</p>
</li>
</ul>
<p><strong>Health checks:</strong> Load balancers ping servers. If a server fails health check, traffic is rerouted. This is how you get zero-downtime deployments.</p>
<p><strong>Beginner mistake:</strong> Assuming load balancer = solved scaling. LB is just traffic distribution. Your DB can still be the bottleneck.</p>
<hr />
<h1>6. API Design</h1>
<p><strong>What it is:</strong> The contract between your system and its clients (or between internal services).</p>
<p><strong>WHY it exists:</strong> Systems need to communicate. APIs define HOW they communicate.</p>
<p><strong>REST vs GraphQL vs gRPC:</strong></p>
<table>
<thead>
<tr>
<th></th>
<th>REST</th>
<th>GraphQL</th>
<th>gRPC</th>
</tr>
</thead>
<tbody><tr>
<td>Best for</td>
<td>Public APIs, CRUD</td>
<td>Flexible client queries</td>
<td>Internal microservices</td>
</tr>
<tr>
<td>Protocol</td>
<td>HTTP/JSON</td>
<td>HTTP/JSON</td>
<td>HTTP/2 + Protobuf</td>
</tr>
<tr>
<td>Performance</td>
<td>Medium</td>
<td>Medium</td>
<td>High</td>
</tr>
<tr>
<td>Flexibility</td>
<td>Low</td>
<td>High</td>
<td>Low</td>
</tr>
</tbody></table>
<p><strong>Good API design rules:</strong></p>
<ul>
<li><p>Stateless: Each request contains all info needed (no server-side session state)</p>
</li>
<li><p>Versioned: <code>/api/v1/users</code> not <code>/api/users</code> (allows evolution)</p>
</li>
<li><p>Rate limited: Protect from abuse and runaway clients</p>
</li>
<li><p>Idempotent: POST creates, PUT updates (calling PUT twice has same result as once)</p>
</li>
</ul>
<p><strong>Beginner mistake:</strong> Designing APIs that return more data than needed. This wastes bandwidth and slows clients.</p>
]]></content:encoded></item><item><title><![CDATA[Core Building Blocks — 12 Fundamental Concepts (Part 2)]]></title><description><![CDATA[Each concept below follows the same structure: What it is → Why it exists → When to use → When NOT to use → Trade-offs → Real examples → Diagram → Beginner mistakes.


The 12 Concept are :

Requiremen]]></description><link>https://hashnode.rudrakshladdha.xyz/core-building-blocks-12-fundamental-concepts-part-2</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/core-building-blocks-12-fundamental-concepts-part-2</guid><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[systemdesign]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[software]]></category><category><![CDATA[Developer]]></category><category><![CDATA[development]]></category><category><![CDATA[developer productivity]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Tue, 26 May 2026 05:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/64bd65f345c3fbe2b6debbdf/e6e5762d-d7fc-4fef-8fca-ab0c456f9f2d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p>Each concept below follows the same structure: What it is → Why it exists → When to use → When NOT to use → Trade-offs → Real examples → Diagram → Beginner mistakes.</p>
</blockquote>
<hr />
<p>The 12 Concept are :</p>
<ol>
<li><p>Requirements Clarification (Part 1)</p>
</li>
<li><p>Back-of-Envelope Estimation (Part 2)</p>
</li>
<li><p>Databases — SQL vs NoSQL</p>
</li>
<li><p>Caching</p>
</li>
<li><p>Load Balancing</p>
</li>
<li><p>API Design</p>
</li>
<li><p>Message Queues + Event-Driven Systems</p>
</li>
<li><p>Consistency vs Availability (CAP Theorem)</p>
</li>
<li><p>Scaling Strategies</p>
</li>
<li><p>Fault Tolerance + Reliability</p>
</li>
<li><p>.CDN (Content Delivery Network)</p>
</li>
<li><p>Data Partitioning (Sharding)</p>
</li>
</ol>
<p>But in this article we cover only two concept</p>
<h1>3. Databases — SQL vs NoSQL</h1>
<p><strong>What it is:</strong> The persistence layer of your system. Where data lives permanently.</p>
<p><strong>WHY it exists:</strong> Applications need to store and retrieve state.</p>
<p><strong>SQL (Relational):</strong></p>
<ul>
<li><p>Structured schema, ACID transactions, joins</p>
</li>
<li><p>Examples: PostgreSQL, MySQL</p>
</li>
<li><p>Best for: financial systems, e-commerce orders, anything needing transactions</p>
</li>
</ul>
<p><strong>NoSQL:</strong></p>
<ul>
<li><p>Schema-flexible, horizontally scalable, trades ACID for speed</p>
</li>
<li><p>Examples: MongoDB (document), Cassandra (wide-column), Redis (key-value), Neo4j (graph)</p>
</li>
<li><p>Best for: user profiles, social feeds, time-series, unstructured data</p>
</li>
</ul>
<p><strong>Decision Tree:</strong></p>
<pre><code class="language-plaintext">Do you need ACID transactions? → YES → SQL
    ↓ NO
Do you need complex queries/joins? → YES → SQL
    ↓ NO
Do you need massive horizontal scale? → YES → NoSQL
    ↓ NO
Is your schema unpredictable/variable? → YES → NoSQL
    ↓ NO
Default → SQL (simpler, proven, consistent)
</code></pre>
<p><strong>Trade-offs:</strong></p>
<table>
<thead>
<tr>
<th></th>
<th>SQL</th>
<th>NoSQL</th>
</tr>
</thead>
<tbody><tr>
<td>Consistency</td>
<td>Strong (ACID)</td>
<td>Eventual (usually)</td>
</tr>
<tr>
<td>Schema</td>
<td>Rigid (migrations)</td>
<td>Flexible</td>
</tr>
<tr>
<td>Scale</td>
<td>Vertical (mostly)</td>
<td>Horizontal</td>
</tr>
<tr>
<td>Query power</td>
<td>High (joins, aggregations)</td>
<td>Limited</td>
</tr>
<tr>
<td>Operational cost</td>
<td>Lower</td>
<td>Higher (ops complexity)</td>
</tr>
</tbody></table>
<p><strong>Indexing:</strong> Without an index, every query is O(n). An index is a sorted data structure (B-Tree) on a column that makes lookups O(log n). Trade-off: faster reads, slower writes, more storage.</p>
<p><strong>Sharding:</strong> Splitting data across multiple DB nodes by a shard key. Trade-off: enables massive scale, but cross-shard queries become hard or impossible.</p>
<p><strong>Beginner mistake:</strong> Choosing NoSQL because it 'scales better'. NoSQL is HARDER to operate. Only choose it when you have a specific reason.</p>
<hr />
<h1>4. Caching</h1>
<p><strong>What it is:</strong> A fast, temporary storage layer that holds frequently accessed data so you don't hit the database every time.</p>
<p><strong>WHY it exists:</strong> Databases are slow (disk I/O). Cache lives in memory (RAM). Memory is 100-1000x faster.</p>
<p><strong>When to use:</strong></p>
<ul>
<li><p>Read-heavy workloads (social feed, product catalog)</p>
</li>
<li><p>Expensive computations (recommendation results)</p>
</li>
<li><p>Session data</p>
</li>
<li><p>Rate limiting counters</p>
</li>
</ul>
<p><strong>When NOT to use:</strong></p>
<ul>
<li><p>Write-heavy workloads (data changes too fast, cache always stale)</p>
</li>
<li><p>Unique queries (low hit rate, wasted memory)</p>
</li>
<li><p>Data that MUST be consistent (banking balances, inventory counts)</p>
</li>
</ul>
<p><strong>Cache placement:</strong></p>
<pre><code class="language-plaintext">Client → [CDN Cache] → [App Cache / Redis] → [DB]
</code></pre>
<ul>
<li><p>CDN: Static assets (images, JS, CSS)</p>
</li>
<li><p>App-level cache (Redis): Dynamic data (user sessions, feed results)</p>
</li>
<li><p>DB query cache: Rarely used, usually turned off</p>
</li>
</ul>
<p><strong>Eviction Strategies:</strong></p>
<table>
<thead>
<tr>
<th>Strategy</th>
<th>Logic</th>
<th>Use When</th>
</tr>
</thead>
<tbody><tr>
<td>LRU (Least Recently Used)</td>
<td>Evict what hasn't been accessed longest</td>
<td>General purpose</td>
</tr>
<tr>
<td>LFU (Least Frequently Used)</td>
<td>Evict what's accessed least often</td>
<td>When recency matters less than frequency</td>
</tr>
<tr>
<td>TTL (Time-to-Live)</td>
<td>Evict after X seconds</td>
<td>Time-sensitive data</td>
</tr>
<tr>
<td>FIFO</td>
<td>Evict oldest inserted</td>
<td>Simple queues</td>
</tr>
</tbody></table>
<p><strong>Cache invalidation problem:</strong> When source data changes, how do you know the cache is stale?</p>
<ul>
<li><p>Write-through: Write to cache AND DB simultaneously. Consistent but slower writes.</p>
</li>
<li><p>Write-back: Write to cache only, sync to DB asynchronously. Faster writes but risk of data loss.</p>
</li>
<li><p>Cache-aside: App checks cache first. On miss, reads DB and populates cache. Most common.</p>
</li>
</ul>
<p><strong>Beginner mistake:</strong> Adding cache without thinking about invalidation. A stale cache is worse than no cache in some systems.</p>
]]></content:encoded></item><item><title><![CDATA[Core Building Blocks — 12 Fundamental Concepts (Part 1)]]></title><description><![CDATA[Each concept below follows the same structure: What it is → Why it exists → When to use → When NOT to use → Trade-offs → Real examples → Diagram → Beginner mistakes.


The 12 Concept are :

Requiremen]]></description><link>https://hashnode.rudrakshladdha.xyz/core-building-blocks-12-fundamental-concepts-part-1</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/core-building-blocks-12-fundamental-concepts-part-1</guid><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[systemdesign]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[software]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Wed, 20 May 2026 05:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/64bd65f345c3fbe2b6debbdf/e0e9c5fa-f748-4ca6-babf-4e0b3f82f855.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p>Each concept below follows the same structure: What it is → Why it exists → When to use → When NOT to use → Trade-offs → Real examples → Diagram → Beginner mistakes.</p>
</blockquote>
<hr />
<p>The 12 Concept are :</p>
<ol>
<li><p>Requirements Clarification</p>
</li>
<li><p>Back-of-Envelope Estimation</p>
</li>
<li><p>Databases — SQL vs NoSQL</p>
</li>
<li><p>Caching</p>
</li>
<li><p>Load Balancing</p>
</li>
<li><p>API Design</p>
</li>
<li><p>Message Queues + Event-Driven Systems</p>
</li>
<li><p>Consistency vs Availability (CAP Theorem)</p>
</li>
<li><p>Scaling Strategies</p>
</li>
<li><p>Fault Tolerance + Reliability</p>
</li>
<li><p>.CDN (Content Delivery Network)</p>
</li>
<li><p>Data Partitioning (Sharding)</p>
</li>
</ol>
<p>But in this article we cover only two concept</p>
<h1>1. Requirements Clarification</h1>
<p><strong>What it is:</strong> The process of translating an ambiguous problem into a precise, bounded spec.</p>
<p><strong>WHY it exists:</strong> Ambiguity is the enemy of design. 'Design Twitter' could mean 1,000 different systems depending on scope.</p>
<p><strong>When to use:</strong> Always. First. Before any component.</p>
<p><strong>When NOT to skip:</strong> Never skip this. Even 5 minutes of clarification saves hours of rework.</p>
<p><strong>Trade-offs:</strong> More time clarifying = less time building. But building the wrong thing is worse.</p>
<p><strong>Real example:</strong> Google Maps v1 wasn't Google Maps today. It was turn-by-turn directions for a browser. Scope was tight.</p>
<p><strong>Beginner mistake:</strong> Assuming you know what the problem means. Ask. Always ask.</p>
<hr />
<h1>2. Back-of-Envelope Estimation</h1>
<p><strong>What it is:</strong> Quick math to determine system scale before designing anything.</p>
<p><strong>WHY it exists:</strong> Scale determines architecture. 1,000 users needs a single server. 100M users needs sharding, caching, CDNs.</p>
<p><strong>Key numbers to memorize:</strong></p>
<table>
<thead>
<tr>
<th>Unit</th>
<th>Value</th>
</tr>
</thead>
<tbody><tr>
<td>1 day in seconds</td>
<td>86,400</td>
</tr>
<tr>
<td>1 month in seconds</td>
<td>2.5M</td>
</tr>
<tr>
<td>1 KB</td>
<td>1,000 bytes</td>
</tr>
<tr>
<td>1 MB</td>
<td>1M bytes</td>
</tr>
<tr>
<td>Average tweet size</td>
<td>~280 bytes</td>
</tr>
<tr>
<td>Average photo</td>
<td>~300 KB</td>
</tr>
<tr>
<td>Average video (1 min HD)</td>
<td>~150 MB</td>
</tr>
</tbody></table>
<p><strong>The estimation flowchart:</strong></p>
<pre><code class="language-plaintext">DAU → actions/day → QPS
QPS × record_size → bandwidth
QPS × record_size × 86400 → storage/day
</code></pre>
<p><strong>Thresholds that change your design:</strong></p>
<ul>
<li><p>QPS &gt; 1,000 → consider load balancer</p>
</li>
<li><p>QPS &gt; 10,000 → definitely need cache</p>
</li>
<li><p>Storage &gt; 1TB → think about sharding</p>
</li>
<li><p>Storage &gt; 10TB → definitely need distributed storage</p>
</li>
</ul>
<p><strong>Beginner mistake:</strong> Skipping this and going straight to components. Your cache size, shard count, and server count all come from estimation.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[System Design Thinking Framework — 7-Step Engine]]></title><description><![CDATA[Purpose: This is your universal problem-solving engine. Apply these 7 steps to EVERY system design question, in this exact order. Never skip steps. Never reorder them.


The 7-Step Framework
Step 1 — ]]></description><link>https://hashnode.rudrakshladdha.xyz/system-design-thinking-framework-7-step-engine</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/system-design-thinking-framework-7-step-engine</guid><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[Developer]]></category><category><![CDATA[development]]></category><category><![CDATA[Design]]></category><category><![CDATA[design principles]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[software]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Tue, 19 May 2026 05:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/64bd65f345c3fbe2b6debbdf/fac75e4c-3593-40dc-a6d9-4fa487c0b5aa.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p><strong>Purpose:</strong> This is your universal problem-solving engine. Apply these 7 steps to EVERY system design question, in this exact order. Never skip steps. Never reorder them.</p>
</blockquote>
<hr />
<h1>The 7-Step Framework</h1>
<h2>Step 1 — Clarify Requirements (5–10 min)</h2>
<p><strong>What you do:</strong> Ask questions before drawing anything. you give your self ambiguous problems on purpose like my app own how much latency of response . and your job is to scope it</p>
<p><strong>Questions to always ask:</strong></p>
<ul>
<li><p>What is the PRIMARY use case? (e.g., read-heavy or write-heavy?)</p>
</li>
<li><p>Who are the users? (consumers, businesses, internal?)</p>
</li>
<li><p>What scale are we targeting? (1K users? 100M users?)</p>
</li>
<li><p>What's the SLA? (latency requirements, uptime?)</p>
</li>
<li><p>Do we need real-time updates or is eventual consistency okay?</p>
</li>
<li><p>What are the most critical features for v1?</p>
</li>
<li><p>Any geographic constraints? (global vs. single region)</p>
</li>
<li><p>Any compliance/security requirements?</p>
</li>
</ul>
<p><strong>Functional Requirements</strong> = What the system DOES</p>
<p><strong>Non-Functional Requirements</strong> = How WELL it does it (latency, availability, consistency, durability)</p>
<ul>
<li><p>Example — URL Shortener Requirements</p>
<p>Functional:</p>
<ul>
<li><p>User can submit a long URL and get a short URL back</p>
</li>
<li><p>User visits short URL and gets redirected to long URL</p>
</li>
<li><p>(Optional) Custom aliases, expiry dates, analytics</p>
</li>
</ul>
<p>Non-Functional:</p>
<ul>
<li><p>Reads &gt;&gt; Writes (100:1 ratio typical)</p>
</li>
<li><p>Sub-100ms redirection latency</p>
</li>
<li><p>99.99% availability</p>
</li>
<li><p>URLs should not be predictable/enumerable</p>
</li>
</ul>
</li>
</ul>
<hr />
<h2>Step 2 — Define Constraints + Assumptions (5 min)</h2>
<p><strong>What you do:</strong> Lock in the numbers and boundaries. This stops scope creep and makes your design focused.</p>
<p><strong>Questions to ask:</strong></p>
<ul>
<li><p>How many daily active users (DAU)?</p>
</li>
<li><p>Read/write ratio?</p>
</li>
<li><p>How long should data be retained?</p>
</li>
<li><p>Budget constraints? (do we optimize for cost or performance?)</p>
</li>
<li><p>Team size constraints? (affects complexity you can build)</p>
</li>
</ul>
<p><strong>Output:</strong> A written constraint list. Example: <em>"We assume 100M DAU, 10:1 read/write, data retained 5 years, 99.9% uptime required."</em></p>
<hr />
<h2>Step 3 — Do Rough Estimation (5–10 min)</h2>
<p><strong>What you do:</strong> Back-of-envelope math to understand the scale of the problem. This determines WHICH components you'll need.</p>
<p><strong>Estimation Template:</strong></p>
<table>
<thead>
<tr>
<th>Metric</th>
<th>Formula</th>
<th>Example (URL Shortener)</th>
</tr>
</thead>
<tbody><tr>
<td>QPS (writes)</td>
<td>DAU × write_actions / 86400</td>
<td>100M × 1 / 86400 ≈ 1,200 QPS</td>
</tr>
<tr>
<td>QPS (reads)</td>
<td>write_QPS × read_ratio</td>
<td>1,200 × 100 = 120,000 QPS</td>
</tr>
<tr>
<td>Storage / day</td>
<td>QPS × record_size × 86400</td>
<td>1,200 × 500B × 86400 ≈ 50 GB/day</td>
</tr>
<tr>
<td>Storage / year</td>
<td>daily × 365</td>
<td>50GB × 365 ≈ 18 TB/year</td>
</tr>
<tr>
<td>Bandwidth (in)</td>
<td>write_QPS × record_size</td>
<td>1,200 × 500B = 600 KB/s</td>
</tr>
<tr>
<td>Bandwidth (out)</td>
<td>read_QPS × record_size</td>
<td>120K × 500B = 60 MB/s</td>
</tr>
</tbody></table>
<p><strong>Key insight from estimation:</strong> If reads &gt;&gt; writes → you need caching. If storage &gt; 10TB → you need sharding. If QPS &gt; 10K → you need load balancing.</p>
<hr />
<h2>Step 4 — High-Level Design (10–15 min)</h2>
<p><strong>What you do:</strong> Draw the major components and how data flows between them. Think in boxes and arrows.</p>
<p><strong>Standard HLD Components to consider:</strong></p>
<ul>
<li><p>Client (mobile/web)</p>
</li>
<li><p>Load Balancer</p>
</li>
<li><p>API Gateway</p>
</li>
<li><p>Application Servers</p>
</li>
<li><p>Database (primary/replica)</p>
</li>
<li><p>Cache layer</p>
</li>
<li><p>CDN (for static content)</p>
</li>
<li><p>Message Queue (for async work)</p>
</li>
<li><p>Storage (blob/object store)</p>
</li>
</ul>
<p><strong>The 3 questions for every component you add:</strong></p>
<ol>
<li><p>Why does this component exist here?</p>
</li>
<li><p>What happens if it fails?</p>
</li>
<li><p>What's the data flow through it?</p>
</li>
</ol>
<hr />
<h2>Step 5 — Deep Dive Into Components (10–15 min)</h2>
<p><strong>What you do:</strong> Pick 2–3 components the problem cares most about. Go deep on those.</p>
<p><strong>What 'deep dive' means:</strong></p>
<ul>
<li><p>Database schema design (not just 'use a database')</p>
</li>
<li><p>Specific indexing strategy</p>
</li>
<li><p>Cache key design and eviction policy</p>
</li>
<li><p>API endpoint contracts</p>
</li>
<li><p>Data model for the core entity</p>
</li>
<li><p>Sharding key choice and why</p>
</li>
</ul>
<p><strong>Anti-pattern:</strong> Trying to go deep on everything. You'll run out of time and show you can't prioritize.</p>
<hr />
<h2>Step 6 — Identify Bottlenecks (5 min)</h2>
<p><strong>What you do:</strong> Stress-test your own design. Ask: where does this break?</p>
<p><strong>Bottleneck checklist:</strong></p>
<ul>
<li><p>[ ] Single point of failure? (anything without redundancy)</p>
</li>
<li><p>[ ] Hot spots in the database? (popular URLs, viral posts)</p>
</li>
<li><p>[ ] Network bottleneck? (large payloads, many hops)</p>
</li>
<li><p>[ ] Write bottleneck? (high write QPS to single DB)</p>
</li>
<li><p>[ ] Read bottleneck? (cache miss storms)</p>
</li>
<li><p>[ ] Latency cliff? (synchronous chains that add up)</p>
</li>
</ul>
<hr />
<h2>Step 7 — Optimize + Scale (5–10 min)</h2>
<p><strong>What you do:</strong> Address the bottlenecks you found. Propose solutions with explicit trade-offs.</p>
<p><strong>Optimization toolkit:</strong></p>
<ul>
<li><p>Horizontal scaling (add more servers)</p>
</li>
<li><p>Database sharding (split data by key)</p>
</li>
<li><p>Read replicas (scale reads separately)</p>
</li>
<li><p>Caching layer (reduce DB load)</p>
</li>
<li><p>Async processing via queues (decouple slow work)</p>
</li>
<li><p>CDN (move static content closer to users)</p>
</li>
<li><p>Rate limiting (protect from abuse)</p>
</li>
</ul>
<p><strong>For each optimization say:</strong> <em>"I'm adding X to solve Y bottleneck. The trade-off is Z (complexity/cost/consistency)."</em></p>
<hr />
<h1>💻 Framework in Practice — Mental Model</h1>
<pre><code class="language-plaintext">PROBLEM ARRIVES
    ↓
Step 1: What are we building? (scope)
    ↓
Step 2: What are our constraints? (lock numbers)
    ↓
Step 3: What scale demands does this create? (math)
    ↓
Step 4: What boxes + arrows satisfy the requirements? (HLD)
    ↓
Step 5: How does the hardest part actually work? (LLD)
    ↓
Step 6: Where does this break under load? (stress test)
    ↓
Step 7: How do we fix those breaks? (optimize + scale)
</code></pre>
<hr />
<h1>⚠️ Common Framework Mistakes</h1>
<table>
<thead>
<tr>
<th>Mistake</th>
<th>Why It's Wrong</th>
<th>Fix</th>
</tr>
</thead>
<tbody><tr>
<td>Jumping to components immediately</td>
<td>You'll design the wrong thing</td>
<td>Always do Step 1–2 first</td>
</tr>
<tr>
<td>Skipping estimation</td>
<td>You won't know if you need cache/sharding</td>
<td>Always do the math</td>
</tr>
<tr>
<td>Going too deep on one component</td>
<td>Misses the full picture</td>
<td>Time-box each step</td>
</tr>
<tr>
<td>Never mentioning trade-offs</td>
<td>Shows shallow thinking</td>
<td>Force yourself: after every decision say 'the trade-off is...'</td>
</tr>
<tr>
<td>Designing only the happy path</td>
<td>Real systems fail</td>
<td>Always ask 'what happens when X fails?'</td>
</tr>
</tbody></table>
]]></content:encoded></item><item><title><![CDATA[You Come to See DevOps in the Wrong Way. I did too.]]></title><description><![CDATA[You come on YouTube.You see Docker.You see Kubernetes.You see CI/CD.You see people saying:
“I am DevOps engineer.”
And suddenly DevOps looks like a tool collection.
Learn Docker → DevOpsLearn Kubernetes → DevOpsLearn CI/CD → DevOpsLearn IaC → DevOps
...]]></description><link>https://hashnode.rudrakshladdha.xyz/you-come-to-see-devops-in-the-wrong-way-i-did-too</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/you-come-to-see-devops-in-the-wrong-way-i-did-too</guid><category><![CDATA[Devops]]></category><category><![CDATA[Developer]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[development]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Kubernetes]]></category><category><![CDATA[Data Science]]></category><category><![CDATA[Docker]]></category><category><![CDATA[Ethereum]]></category><category><![CDATA[education]]></category><category><![CDATA[technology]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Fri, 30 Jan 2026 18:30:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1766597704806/41881feb-f579-4cd3-bc7e-29fa615836f9.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You come on YouTube.<br />You see Docker.<br />You see Kubernetes.<br />You see CI/CD.<br />You see people saying:</p>
<p>“I am DevOps engineer.”</p>
<p>And suddenly DevOps looks like a <strong>tool collection</strong>.</p>
<p>Learn Docker → DevOps<br />Learn Kubernetes → DevOps<br />Learn CI/CD → DevOps<br />Learn IaC → DevOps</p>
<p>Too much rubbish. Sorry, but it is.</p>
<hr />
<p>I get really confused when I hear freshers say:</p>
<p>“I don’t like coding, so I chose DevOps.”</p>
<p>This sentence itself tells the problem.</p>
<p>DevOps is not an escape from coding.<br />DevOps is not shortcut engineering.<br />DevOps is not memorizing commands.</p>
<p>If you think like this, you will get stuck.<br />100%.</p>
<hr />
<p>DevOps is not about mastering some specific tools.</p>
<p>Tools change.<br />Versions change.<br />Cloud changes.</p>
<p>But <strong>systems don’t change</strong>.</p>
<p>And most people completely skip that part.</p>
<hr />
<p><a target="_blank" href="https://www.learnvirendana.xyz/"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1766597529197/104d3e25-f6b1-433f-86d6-ffa7269ac614.png" alt class="image--center mx-auto" /></a></p>
<p>Before touching Docker or Kubernetes, you need to understand:</p>
<p>What is the project?<br />How is it structured?<br />How does request flow?<br />Where does data go?<br />What are the dependencies?<br />What breaks first?</p>
<p>Nobody asks these questions in tutorials.</p>
<p>That’s why people feel lost in real jobs.</p>
<hr />
<p>I was also confused.</p>
<p>Too many buzzwords.<br />Too many roadmaps.<br />Too many “DevOps in 90 days” videos.</p>
<p>Everyone was saying different things.</p>
<p>So I stopped listening and started observing.</p>
<hr />
<p>I noticed something very simple.</p>
<p>People who are <strong>good at DevOps</strong> are not tool lovers.</p>
<p>They understand:</p>
<ul>
<li><p>how applications are built</p>
</li>
<li><p>how environments are separated</p>
</li>
<li><p>how failures happen</p>
</li>
<li><p>how systems behave under load</p>
</li>
</ul>
<p>They don’t panic when something breaks.</p>
<p>They reason.</p>
<hr />
<p>Then I realized my mistake.</p>
<p>I was trying to <strong>maintain systems</strong><br />without knowing <strong>how systems are created</strong>.</p>
<p>That’s a big gap.</p>
<hr />
<p>So instead of going deeper into tools,<br />I went backward.</p>
<p>I started learning <strong>basic coding</strong>.</p>
<p>Not to become backend expert.<br />Not to crack interviews.</p>
<p>Just enough to understand:<br />how folders are structured<br />how configs are read<br />how APIs are wired<br />how environments differ</p>
<p>That’s it.</p>
<hr />
<p>Then I started learning <strong>system design</strong>, but in my own way.</p>
<p>Not big diagrams.<br />Not fancy words.</p>
<p>Just simple thinking.</p>
<p>User comes → request goes → service talks → DB responds → response goes back.</p>
<p>That’s all.</p>
<p>Once you understand this flow,<br />everything becomes easier.</p>
<hr />
<p>Now when I see Docker, I don’t see commands.</p>
<p>I see:<br />“Oh, this is just packaging the app.”</p>
<p>When I see CI/CD, I don’t see YAML fear.</p>
<p>I see:<br />“Oh, this is automating steps we already do manually.”</p>
<p>When I see Kubernetes, I don’t panic.</p>
<p>I see:<br />“Oh, this is managing containers at scale.”</p>
<p>Nothing magical.</p>
<hr />
<p>Most people struggle in DevOps because they jump directly into <strong>complexity</strong>.</p>
<p>They skip foundation.</p>
<p>They deploy apps they don’t understand.<br />They scale systems they never designed.<br />They automate things they can’t explain.</p>
<p>So obviously, they feel stuck.</p>
<hr />
<p>DevOps becomes easy when <strong>structure is clear</strong>.</p>
<p>Not easy like “no effort”.<br />Easy like “logical”.</p>
<p>You know why something exists.<br />You know what will break.<br />You know where to look.</p>
<p>That’s real DevOps.</p>
<hr />
<p>DevOps is about <strong>maintainability</strong>.</p>
<p>Making systems calm.<br />Predictable.<br />Recoverable.</p>
<p>And you can’t do that<br />if you don’t understand how the system is built.</p>
<hr />
<p>So if you’re a beginner and feeling stuck, listen carefully.</p>
<p>Don’t say:<br />“I don’t like coding, so DevOps.”</p>
<p>Say:<br />“I want to understand systems deeply.”</p>
<p>Learn some coding.<br />Learn system flow.<br />Then enter DevOps.</p>
<p>You’ll realize something funny.</p>
<p>DevOps was never that hard.<br />You were just missing the base.</p>
<hr />
<p>I’m still learning.<br />Still confused sometimes.</p>
<p>But now, at least,<br />my confusion has direction.</p>
<p>And that’s enough to move forward.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[I don’t know what is the Y2K problem — I recently heard it from an Instagram reel]]></title><description><![CDATA[(sharing is learning, so let’s break down the Y2K problem together)
I’ll be honest. I didn’t study the Y2K problem in college. I didn’t read it in some thick computer science book either.
I recently heard about it from an Instagram reel.
The reel sai...]]></description><link>https://hashnode.rudrakshladdha.xyz/i-dont-know-what-is-the-y2k-problem-i-recently-heard-it-from-an-instagram-reel</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/i-dont-know-what-is-the-y2k-problem-i-recently-heard-it-from-an-instagram-reel</guid><category><![CDATA[Devops]]></category><category><![CDATA[Developer]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[technology]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Mon, 05 Jan 2026 14:30:57 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1766767108003/7816dd15-6be9-45a7-864d-4b82eb651c54.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>(sharing is learning, so let’s break down the Y2K problem together)</em></p>
<p>I’ll be honest. I didn’t study the <strong>Y2K problem</strong> in college. I didn’t read it in some thick computer science book either.</p>
<p>I recently heard about it from an <strong>Instagram reel</strong>.</p>
<p>The reel said something like: “Once upon a time, the whole world was scared that computers would fail on 1 January 2000.”</p>
<p>That line got me curious.</p>
<p><img src="https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExaWt3Y29iZWlodzN2eGE2azZkZ2lxb3ZwajhhMnE4ZzJweDZka2ozaCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/BgBf6pW9qOgQU/giphy.gif" alt /></p>
<p>So I did what most of us do today — I searched, I read, I asked ChatGPT, and now I’m writing this article.</p>
<p>Not as an expert. Not as a pro coder. Just as someone who believes <strong>sharing is learning</strong>.</p>
<p>So let’s calmly break down the Y2K problem, in simple language.</p>
<hr />
<h3 id="heading-first-what-exactly-was-the-y2k-problem"><strong>First, what exactly was the Y2K problem?</strong></h3>
<p>Y2K stands for <strong>Year 2000</strong>.</p>
<p>The Y2K problem was a <strong>computer bug</strong>, not a virus, not hacking, not AI.</p>
<p>Back in the old days (1960s–1980s), computers were <strong>very expensive</strong>. Memory and storage were costly, so programmers tried to save every byte.</p>
<p>To save space, they stored the <strong>year using only two digits</strong>.</p>
<p>Instead of:</p>
<ul>
<li>1975 → 1975</li>
</ul>
<p>They stored:</p>
<ul>
<li><p>1975 → 75</p>
</li>
<li><p>1988 → 88</p>
</li>
<li><p>1999 → 99</p>
</li>
</ul>
<p>This worked fine… <strong>until the year 2000 came</strong>.</p>
<p>Because:</p>
<ul>
<li>2000 → 00</li>
</ul>
<p>Now think like a computer.</p>
<p>If you see:</p>
<ul>
<li>99 → 00</li>
</ul>
<p>The system might think:</p>
<ul>
<li>Year went from <strong>1999 to 1900</strong></li>
</ul>
<p>And that small confusion had the power to break <strong>huge systems</strong>.</p>
<hr />
<h3 id="heading-why-was-this-a-big-deal"><strong>Why was this a big deal?</strong></h3>
<p>Computers don’t “understand” time like humans.</p>
<p>They <strong>calculate dates</strong>.</p>
<p>Example:</p>
<ul>
<li><p>Bank interest</p>
</li>
<li><p>Loan maturity</p>
</li>
<li><p>Age calculation</p>
</li>
<li><p>Expiry dates</p>
</li>
<li><p>Airline schedules</p>
</li>
<li><p>Power grid systems</p>
</li>
<li><p>Hospital machines</p>
</li>
</ul>
<p>If a system thought:</p>
<ul>
<li><p>Today = 01/01/1900 instead of</p>
</li>
<li><p>Today = 01/01/2000</p>
</li>
</ul>
<p>Then logic would fail.</p>
<p>A person born in 1995 could suddenly become <strong>-95 years old</strong> 🤯 A loan could appear <strong>already expired</strong> A power system could shut down due to “invalid date”</p>
<p>This wasn’t theory. These systems were <strong>already running the world</strong>.</p>
<p><strong>Maximize image</strong></p>
<p><strong>Edit image</strong></p>
<p><strong>Delete image</strong></p>
<hr />
<p><a target="_blank" href="https://www.learnvirendana.xyz/"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1766766947061/bd7ba11d-b061-4063-919a-be0f54d89425.png" alt class="image--center mx-auto" /></a></p>
<h3 id="heading-what-were-people-afraid-of"><strong>What were people afraid of?</strong></h3>
<p>Before 2000, people genuinely feared that:</p>
<ul>
<li><p>Banks might lose customer data</p>
</li>
<li><p>ATMs might stop working</p>
</li>
<li><p>Planes might fail mid-air</p>
</li>
<li><p>Power grids could collapse</p>
</li>
<li><p>Hospitals might lose patient records</p>
</li>
<li><p>Stock markets might crash</p>
</li>
</ul>
<p>Some people even stocked food and water 😅</p>
<p>Media amplified the fear, but honestly, the risk was <strong>real</strong>.</p>
<p>Because millions of lines of code were written assuming:</p>
<blockquote>
<p>“Year will always start with 19”</p>
</blockquote>
<hr />
<h3 id="heading-why-didnt-programmers-think-about-this-earlier"><strong>Why didn’t programmers think about this earlier?</strong></h3>
<p>Good question.</p>
<p>Two reasons:</p>
<h3 id="heading-1-short-term-thinking"><strong>1. Short-term thinking</strong></h3>
<p>When someone wrote code in 1970, they didn’t expect:</p>
<ul>
<li><p>That same code would still run in 2000</p>
</li>
<li><p>Systems would live for 30–40 years</p>
</li>
</ul>
<p>“If it works now, it works.”</p>
<p>Classic human mindset.</p>
<h3 id="heading-2-technology-limits"><strong>2. Technology limits</strong></h3>
<p>Saving two digits instead of four:</p>
<ul>
<li><p>Saved memory</p>
</li>
<li><p>Reduced cost</p>
</li>
<li><p>Improved performance (at that time)</p>
</li>
</ul>
<p>Nobody imagined how <strong>big and connected</strong> software would become.</p>
<hr />
<h3 id="heading-so-what-actually-happened-on-1-january-2000"><strong>So… what actually happened on 1 January 2000?</strong></h3>
<p>Here’s the interesting part.</p>
<p><strong>Nothing catastrophic happened.</strong></p>
<p>Not because the problem was fake. But because <strong>engineers worked like crazy before 2000</strong>.</p>
<p>Governments, banks, airlines, tech companies:</p>
<ul>
<li><p>Audited old code</p>
</li>
<li><p>Updated date formats</p>
</li>
<li><p>Tested systems</p>
</li>
<li><p>Spent billions of dollars fixing it</p>
</li>
</ul>
<p>This is important:</p>
<blockquote>
<p>Y2K didn’t fail — engineers succeeded.</p>
</blockquote>
<p>Some <strong>small issues</strong> did occur:</p>
<ul>
<li><p>Incorrect dates on reports</p>
</li>
<li><p>Minor billing problems</p>
</li>
<li><p>A few system glitches</p>
</li>
</ul>
<p>But no global collapse.</p>
<hr />
<h3 id="heading-what-y2k-teaches-us-as-developers-and-humans"><strong>What Y2K teaches us as developers (and humans)</strong></h3>
<p>This is the part I personally love.</p>
<h3 id="heading-1-small-decisions-can-have-massive-future-impact"><strong>1. Small decisions can have massive future impact</strong></h3>
<p>Saving two digits looked harmless. But decades later, it almost broke the world.</p>
<p>In our code today:</p>
<ul>
<li><p>Hardcoded values</p>
</li>
<li><p>Quick hacks</p>
</li>
<li><p>“We’ll fix later” logic</p>
</li>
</ul>
<p>All of this can become tomorrow’s Y2K.</p>
<hr />
<h3 id="heading-2-legacy-code-is-powerful-and-dangerous"><strong>2. Legacy code is powerful (and dangerous)</strong></h3>
<p>Old code:</p>
<ul>
<li><p>Runs banks</p>
</li>
<li><p>Runs governments</p>
</li>
<li><p>Runs infrastructure</p>
</li>
</ul>
<p>Even today, many systems still run on <strong>very old logic</strong>.</p>
<p>Respect legacy systems.</p>
<hr />
<h3 id="heading-3-engineering-is-often-invisible"><strong>3. Engineering is often invisible</strong></h3>
<p>When things go wrong → everyone notices When things go right → nobody talks about it</p>
<p>Y2K is proof that <strong>silent engineering saves the world</strong>.</p>
<hr />
<h3 id="heading-why-im-sharing-this-even-though-im-not-an-expert"><strong>Why I’m sharing this even though I’m not an expert</strong></h3>
<p>Because learning is not about:</p>
<ul>
<li><p>Being perfect</p>
</li>
<li><p>Knowing everything</p>
</li>
<li><p>Acting like a senior</p>
</li>
</ul>
<p>Learning is about:</p>
<ul>
<li><p>Curiosity</p>
</li>
<li><p>Asking questions</p>
</li>
<li><p>Sharing what you understand</p>
</li>
</ul>
<p>I heard about Y2K from a reel. I learned from reading. I wrote this with help of ChatGPT.</p>
<p>And now you know it too.</p>
<p>That’s how knowledge moves forward.</p>
<hr />
<h3 id="heading-final-thought"><strong>Final thought</strong></h3>
<p>The Y2K problem is not just a “computer bug story”.</p>
<p>It’s a reminder that:</p>
<ul>
<li><p>Technology lives longer than we expect</p>
</li>
<li><p>Decisions today affect decades later</p>
</li>
<li><p>And good engineers prevent disasters quietly</p>
</li>
</ul>
<p>If you enjoyed this breakdown, share it.</p>
<p>Because <strong>sharing is learning</strong>.</p>
]]></content:encoded></item><item><title><![CDATA[How AWS ECS and ECR Play a Vital Role When It’s Time to Scale With HPA and VPA]]></title><description><![CDATA[When people talk about scaling, they immediately jump to fancy words like HPA (Horizontal Pod Autoscaling) and VPA (Vertical Pod Autoscaling).But scaling is not just maths and thresholds.Scaling is about how quickly and reliably your system can react...]]></description><link>https://hashnode.rudrakshladdha.xyz/how-aws-ecs-and-ecr-play-a-vital-role-when-its-time-to-scale-with-hpa-and-vpa</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/how-aws-ecs-and-ecr-play-a-vital-role-when-its-time-to-scale-with-hpa-and-vpa</guid><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[startup]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Developer]]></category><category><![CDATA[Data Science]]></category><category><![CDATA[Docker]]></category><category><![CDATA[AWS]]></category><category><![CDATA[AWS Certified Solutions Architect Associate]]></category><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[technology]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Tue, 16 Dec 2025 18:30:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1764402015805/6a24630a-9a01-4f0f-8439-d2c9e6c43f89.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When people talk about scaling, they immediately jump to fancy words like HPA (Horizontal Pod Autoscaling) and VPA (Vertical Pod Autoscaling).<br />But scaling is not just maths and thresholds.<br />Scaling is about <em>how quickly and reliably your system can react when traffic comes like a tsunami</em>.</p>
<p>And this is exactly where <strong>AWS ECS and ECR</strong> quietly become the heroes.</p>
<p>Most developers think scaling happens at the cluster level, CPU level, or metrics level.<br />But the truth is:<br /><strong>your scaling is only as fast as your container availability and orchestration speed</strong>.</p>
<p>Let me break this down in the pure Rudraksh way — simple, true, practical.</p>
<hr />
<h2 id="heading-the-real-story-scaling-is-not-just-add-more-pods"><strong>The Real Story — Scaling Is Not Just “Add More Pods”</strong></h2>
<p>When you scale horizontally (HPA), your system needs more containers.<br />When you scale vertically (VPA), your existing containers need more resources.</p>
<p>But the question nobody asks is:</p>
<p><strong>“Where are these containers coming from?”</strong><br />and<br /><strong>“Who is orchestrating the lifecycle of these containers?”</strong></p>
<p>This is where ECS and ECR show why they matter.</p>
<hr />
<h2 id="heading-ecr-the-kitchen-where-your-containers-are-stored"><strong>ECR — The Kitchen Where Your Containers Are Stored</strong></h2>
<p>Everyone talks about Docker images, builds, CI/CD, GitHub Actions, blah blah.<br />But scaling doesn’t care how you built the image.<br />Scaling only cares about how fast you can pull that image when traffic suddenly grows.</p>
<p>ECR (Elastic Container Registry) becomes that reliable kitchen where your dish (image) is always ready.</p>
<p>If your image pull is slow → your HPA scaling becomes slow.<br />If your image is stored remotely → network latency kills scaling.<br />If ECR is misconfigured → instances will wait forever to pull images.</p>
<p>So essentially:</p>
<p><strong>Fast scaling = Fast image pull<br />Fast image pull = Stored in-region ECR</strong></p>
<p>That’s why serious production setups use ECR instead of random registries.<br />During traffic spikes, milliseconds matter.</p>
<hr />
<h2 id="heading-ecs-the-manager-that-starts-stops-scales-distributes"><strong>ECS — The Manager That Starts, Stops, Scales, Distributes</strong></h2>
<p>Now imagine your image is ready in ECR.<br />What next?</p>
<p><img src="https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExdXVhdTlrZWV4NWxobnZsd2p2ZDMyazk2eXh1azQwOWUwMmV6endodyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/Y1GK5MEiRa3OSVsxHK/giphy.gif" alt /></p>
<p>Who handles:</p>
<ul>
<li><p>starting new containers</p>
</li>
<li><p>deciding where they run</p>
</li>
<li><p>giving them CPU/memory</p>
</li>
<li><p>attaching env vars</p>
</li>
<li><p>connecting them to load balancer</p>
</li>
<li><p>stopping old ones</p>
</li>
<li><p>checking health</p>
</li>
<li><p>replacing bad tasks</p>
</li>
<li><p>ensuring service stays stable</p>
</li>
</ul>
<p>That’s the brain of scaling — <strong>ECS (Elastic Container Service)</strong>.</p>
<p>Think of ECS as a hotel manager.<br />More guests coming?<br />He opens more rooms.<br />Fewer guests?<br />He closes unnecessary rooms.<br />Room dirty?<br />He replaces it instantly.</p>
<p>ECS does this with containers.</p>
<p><a target="_blank" href="https://www.learnvirendana.xyz/"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764402036911/3f5f3ead-9e45-41b7-bba5-771b38a508d9.png" alt class="image--center mx-auto" /></a></p>
<hr />
<h2 id="heading-where-hpa-and-vpa-fit-into-the-ecs-ecr-story"><strong>Where HPA and VPA Fit Into the ECS + ECR Story</strong></h2>
<p>People think HPA and VPA magically do everything.<br />But no.<br />HPA and VPA just <em>decide</em> what needs to happen.</p>
<p>The execution — the real action — happens inside ECS and ECR.</p>
<p>Let me put it in your tone:</p>
<p><strong>HPA is like saying “We need more workers.”<br />ECR says “I have workers ready in the back room.”<br />ECS says “Okay, I’ll bring them to the factory floor right now.”</strong></p>
<p>This is the actual coordination.</p>
<p>HPA → triggers scaling<br />ECR → stores images<br />ECS → launches containers<br />Load balancer → routes new traffic<br />Target groups → attach/detach instances<br />CloudWatch → measures metrics<br />IAM → handles permissions</p>
<p>Scaling is teamwork.<br />Not magic.</p>
<hr />
<h2 id="heading-why-ecs-and-ecr-matter-the-most-at-scaling-time"><strong>Why ECS and ECR Matter the Most at Scaling Time</strong></h2>
<p>Because when traffic spikes:</p>
<ul>
<li><p>HPA will scream “ADD MORE TASKS NOW!”</p>
</li>
<li><p>ECS must react instantly</p>
</li>
<li><p>ECS must know exactly where the image is</p>
</li>
<li><p>ECR must serve the image without delay</p>
</li>
<li><p>ECS must create tasks faster than traffic hits</p>
</li>
<li><p>Health checks must pass quickly</p>
</li>
<li><p>Load balancer must attach new tasks instantly</p>
</li>
</ul>
<p>If any one of these steps is slow → users feel lag, errors, 502s, timeouts.</p>
<p>Scaling is like a chain reaction.<br />Break one link → chain collapses.</p>
<p>ECS and ECR are the strongest links.</p>
<hr />
<h2 id="heading-the-hidden-advantage-zero-downtime-rolling-scaling"><strong>The Hidden Advantage — Zero Downtime Rolling Scaling</strong></h2>
<p>People think scaling is only “add more.”<br />But scaling also includes:</p>
<ul>
<li><p>replacing unhealthy tasks</p>
</li>
<li><p>updating tasks</p>
</li>
<li><p>deploying new versions</p>
</li>
<li><p>rolling restarts</p>
</li>
<li><p>rolling upgrades</p>
</li>
</ul>
<p>ECS ensures that scaling does not cause downtime.<br />It drains old tasks, starts new tasks, waits for health, then replaces gracefully.</p>
<p>This is where ECS shines more than raw Kubernetes for many teams — because AWS handles the heavy lifting for you.</p>
<hr />
<h2 id="heading-vertical-scaling-vpa-and-ecs-the-reality-most-developers-dont-know"><strong>Vertical Scaling (VPA) and ECS — The Reality Most Developers Don’t Know</strong></h2>
<p>When you increase CPU/memory for containers (VPA style), ECS literally:</p>
<ul>
<li><p>stops unhealthy tasks</p>
</li>
<li><p>relaunches them with new resource definitions</p>
</li>
<li><p>redistributes tasks on cluster</p>
</li>
<li><p>ensures no task over-commits the node</p>
</li>
<li><p>balances memory and CPU evenly</p>
</li>
</ul>
<p>So VPA is not just “increase memory.”<br />It is actually a full container lifecycle update.</p>
<p>Without ECS controlling the orchestration, VPA would be chaos.</p>
<hr />
<h2 id="heading-horizontal-scaling-hpa-and-ecs-where-speed-matters-most"><strong>Horizontal Scaling (HPA) and ECS — Where Speed Matters Most</strong></h2>
<p>When HPA fires scaling triggers based on:</p>
<ul>
<li><p>CPU</p>
</li>
<li><p>Memory</p>
</li>
<li><p>Request count</p>
</li>
<li><p>Queue length</p>
</li>
<li><p>Custom business metrics</p>
</li>
</ul>
<p>ECS instantly pulls new containers from ECR, schedules tasks, registers them with load balancer, and ensures that each task is fully healthy before routing traffic.</p>
<p>This instant reaction is what keeps your system alive during:</p>
<ul>
<li><p>Diwali offer</p>
</li>
<li><p>IPL peak time</p>
</li>
<li><p>Black Friday</p>
</li>
<li><p>Unexpected viral traffic</p>
</li>
<li><p>News spike</p>
</li>
<li><p>Heavy cron jobs</p>
</li>
<li><p>Batch workflows</p>
</li>
</ul>
<p>HPA without ECS is just a message.<br />ECS makes it real.</p>
<hr />
<h2 id="heading-the-real-lesson-scaling-is-not-about-metrics-its-about-readiness"><strong>The Real Lesson — Scaling Is Not About Metrics; It’s About Readiness</strong></h2>
<p>Let me say this bluntly:</p>
<p><strong>Scaling works only when your containers are ready, your registry is fast, and your orchestrator is reliable.</strong></p>
<p>This is exactly why ECS + ECR is such a powerful combo.</p>
<p>Because when it’s time to scale:</p>
<ul>
<li><p>ECR delivers the artifact quickly</p>
</li>
<li><p>ECS launches tasks instantly</p>
</li>
<li><p>ECS respects HPA decisions without delay</p>
</li>
<li><p>ECS ensures health checks don’t break user experience</p>
</li>
<li><p>ECS balances tasks across nodes</p>
</li>
<li><p>ECS gracefully rolls updates</p>
</li>
<li><p>ECS keeps the service stable even under chaos</p>
</li>
</ul>
<p>This is what real cloud-native scaling feels like.</p>
<hr />
<h2 id="heading-final-thought-in-pure-rudraksh-style"><strong>Final Thought — In Pure Rudraksh Style</strong></h2>
<p>Scaling is not a CPU fight.<br />Scaling is an architecture mindset.</p>
<p>Everyone talks about HPA and VPA like they are magic.<br />But the real unsung heroes are ECS and ECR.</p>
<p>Because:</p>
<p><strong>When HPA decides,<br />ECR supplies,<br />ECS executes,<br />and your system survives.</strong></p>
<p>That’s the complete truth.</p>
<p>If your registry is slow → scaling dies.<br />If your orchestrator is weak → scaling fails.<br />If your containers aren’t managed properly → users suffer.</p>
<p>So the next time you design an auto-scaling system, remember:</p>
<p>HPA is brain.<br />VPA is planning.<br />But ECS and ECR are the backbone.</p>
<p>Without them, scaling is just theory.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[Chaos Monkey — The Netflix Technique That Breaks Your System to Save Your System]]></title><description><![CDATA[When you hear “Chaos Monkey,” you probably imagine a monkey jumping around and breaking things.
But no.I’m not talking about an actual monkey.I’m talking about one of the smartest engineering strategies ever created — by Netflix.
A technique so power...]]></description><link>https://hashnode.rudrakshladdha.xyz/chaos-monkey-the-netflix-technique-that-breaks-your-system-to-save-your-system</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/chaos-monkey-the-netflix-technique-that-breaks-your-system-to-save-your-system</guid><category><![CDATA[software development]]></category><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[Security]]></category><category><![CDATA[startup]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Developer]]></category><category><![CDATA[Data Science]]></category><category><![CDATA[Docker]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Fri, 12 Dec 2025 18:30:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1764400404047/1fb5b2ae-ae88-4fca-b866-53a5a52d829b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When you hear “Chaos Monkey,” you probably imagine a monkey jumping around and breaking things.</p>
<p>But no.<br />I’m not talking about an actual monkey.<br />I’m talking about one of the smartest engineering strategies ever created — by Netflix.</p>
<p>A technique so powerful that it still scares beginners and impresses senior engineers.</p>
<p>Chaos Monkey does one thing:</p>
<blockquote>
<p><strong>It intentionally breaks your system so you can see how strong it really is.</strong></p>
</blockquote>
<p>Sounds crazy?<br />Good.<br />Because real engineering is not about perfection — it’s about preparation.</p>
<p>Let’s break it down in the simplest and smartest way possible.</p>
<p><img src="https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExcGJjZG8wb2F6aDBuMncwdHY1cWtvdXU5dzEweTVveTl0eGt2YWdvMiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/4AwFO4f2VLo2fIFFA2/giphy.gif" alt /></p>
<hr />
<h1 id="heading-the-real-story-why-netflix-invented-chaos-monkey"><strong>The Real Story — Why Netflix Invented Chaos Monkey</strong></h1>
<p>Netflix runs on thousands of servers across the world.<br />Users stream movies every second.<br />Traffic spikes at night.<br />Half of the world is watching something 24/7.</p>
<p>Now imagine just <strong>one server dies</strong>.<br />Or one region goes down.<br />Or one microservice crashes.</p>
<p>If Netflix goes down for even 1–2 minutes → millions of users get angry.<br />And Netflix loses trust + revenue.</p>
<p>So Netflix engineers asked a bold question:</p>
<blockquote>
<p><strong>“What if we break our own system on purpose so we know what will happen when something really fails?”</strong></p>
</blockquote>
<p>This question gave birth to <strong>Chaos Monkey</strong>.</p>
<p><a target="_blank" href="https://www.learnvirendana.xyz/"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764399906085/be061419-f0a1-4b39-b473-3f86a030acac.png" alt class="image--center mx-auto" /></a></p>
<hr />
<h1 id="heading-what-chaos-monkey-actually-does-super-simple-explanation"><strong>What Chaos Monkey Actually Does (Super Simple Explanation)</strong></h1>
<p>Chaos Monkey is a tool that:</p>
<ul>
<li><p>randomly shuts down servers</p>
</li>
<li><p>randomly kills microservices</p>
</li>
<li><p>randomly terminates instances</p>
</li>
<li><p>randomly disrupts parts of the system</p>
</li>
</ul>
<p>All while your app is running…</p>
<p>…just to see if your architecture survives.</p>
<p>It’s like training your system in a gym:<br />You add pressure → system becomes stronger.</p>
<p>It’s not destruction.<br />It’s <strong>resilience training</strong>.</p>
<hr />
<h1 id="heading-why-this-technique-is-genius-my-expert-take"><strong>Why This Technique Is Genius (My Expert Take)</strong></h1>
<p>Chaos Monkey exposes one brutal truth:</p>
<blockquote>
<p><strong>If one server dying breaks everything, you never built a real distributed system.</strong></p>
</blockquote>
<p>A properly decoupled system should:</p>
<ul>
<li><p>handle failures</p>
</li>
<li><p>reroute traffic</p>
</li>
<li><p>spin up new instances</p>
</li>
<li><p>degrade gracefully</p>
</li>
<li><p>keep running even if part of it dies</p>
</li>
</ul>
<p>Chaos Monkey checks whether this dream is reality or just your assumption.</p>
<p>This is why I call it a <strong>great decoupling technique</strong>.</p>
<p>If one failing component collapses your whole system →<br />your architecture is not decoupled, not resilient, and definitely not “production ready.”</p>
<hr />
<h1 id="heading-the-netflix-philosophy-assume-failure-will-happen"><strong>The Netflix Philosophy — Assume Failure Will Happen</strong></h1>
<p>Netflix’s mindset is simple:</p>
<ul>
<li><p>Hardware will fail</p>
</li>
<li><p>Services will crash</p>
</li>
<li><p>Networks will break</p>
</li>
<li><p>Regions will go down</p>
</li>
<li><p>Everything fails eventually</p>
</li>
</ul>
<p>So instead of hoping nothing breaks, Netflix trains their system to survive failures.</p>
<p>Chaos Monkey is just one tool from their larger idea:</p>
<p><strong>“Chaos Engineering.”</strong></p>
<hr />
<h1 id="heading-chaos-engineering-the-parent-concept"><strong>Chaos Engineering (The Parent Concept)</strong></h1>
<p>Chaos Monkey is the starting point.<br />But Netflix has a full family of tools:</p>
<ul>
<li><p><strong>Chaos Gorilla</strong> → shuts down entire availability zones</p>
</li>
<li><p><strong>Chaos Kong</strong> → simulates full region failure</p>
</li>
<li><p><strong>Latency Monkey</strong> → injects network delays</p>
</li>
<li><p><strong>Doctor Monkey</strong> → kills unhealthy instances</p>
</li>
<li><p><strong>Conformity Monkey</strong> → removes resources that don’t meet best practices</p>
</li>
</ul>
<p>Together, these tools test the entire ecosystem.</p>
<p>But the baby of the family, the simplest one, is Chaos Monkey.</p>
<hr />
<h1 id="heading-what-happens-when-you-run-chaos-monkey"><strong>What Happens When You Run Chaos Monkey?</strong></h1>
<p>Let’s say you have:</p>
<ul>
<li><p>5 microservices</p>
</li>
<li><p>10 servers</p>
</li>
<li><p>3 databases</p>
</li>
<li><p>1 load balancer</p>
</li>
</ul>
<p>Chaos Monkey randomly kills one.</p>
<p>Results?</p>
<h3 id="heading-1-you-discover-hidden-dependencies"><strong>1. You discover hidden dependencies</strong></h3>
<p>Maybe your “independent” microservice secretly depends on another.<br />Now you know.</p>
<h3 id="heading-2-you-identify-bottlenecks"><strong>2. You identify bottlenecks</strong></h3>
<p>Perhaps one service is doing too much.<br />Time to split it.</p>
<h3 id="heading-3-you-test-your-auto-scaling"><strong>3. You test your auto-scaling</strong></h3>
<p>Do new servers start automatically?<br />Or does everything freeze?</p>
<h3 id="heading-4-you-check-your-monitoring-alerts"><strong>4. You check your monitoring + alerts</strong></h3>
<p>Do you get notified instantly?<br />Or do you find out after users complain?</p>
<h3 id="heading-5-you-see-your-true-architecture-strength"><strong>5. You see your true architecture strength</strong></h3>
<p>Any architecture looks clean on a whiteboard.<br />Chaos Monkey tests it in the real world.</p>
<hr />
<h1 id="heading-why-engineers-should-love-chaos-monkey"><strong>Why Engineers Should Love Chaos Monkey</strong></h1>
<p>Because it forces good architecture decisions.</p>
<h3 id="heading-1-makes-you-design-for-failure"><strong>1. Makes you design for failure</strong></h3>
<p>You stop trusting systems blindly.</p>
<h3 id="heading-2-encourages-decoupling"><strong>2. Encourages decoupling</strong></h3>
<p>If everything depends on everything, Chaos Monkey exposes it.</p>
<h3 id="heading-3-validates-scaling-strategies"><strong>3. Validates scaling strategies</strong></h3>
<p>Auto-scale working? Good.<br />Not working? Fix it.</p>
<h3 id="heading-4-improves-observability"><strong>4. Improves observability</strong></h3>
<p>Logs, metrics, alerts — all become sharper.</p>
<h3 id="heading-5-reduces-risk-in-real-incidents"><strong>5. Reduces risk in real incidents</strong></h3>
<p>If your system survives Chaos Monkey, it will survive real failures.</p>
<hr />
<h1 id="heading-why-companies-fear-chaos-monkey"><strong>Why Companies Fear Chaos Monkey</strong></h1>
<p>Some engineers say:</p>
<blockquote>
<p>“Bro, we can’t run something that kills servers in production!”</p>
</blockquote>
<p>But if you are scared of Chaos Monkey,<br />you should be <strong>more scared</strong> of real failures.</p>
<p>Chaos Monkey doesn’t break anything unexpected.<br />Real world failures do.</p>
<p>Chaos Monkey:</p>
<ul>
<li><p>fails small things</p>
</li>
<li><p>at controlled times</p>
</li>
<li><p>safely</p>
</li>
<li><p>in predictable patterns</p>
</li>
</ul>
<p>If your system is weak, better find out now than during Black Friday traffic.</p>
<hr />
<h1 id="heading-my-personal-view-why-chaos-monkey-is-a-decouple-architecture-making-tool"><strong>My Personal View — Why Chaos Monkey Is a Decouple-Architecture Making Tool</strong></h1>
<p>I love this technique because:</p>
<p>Chaos Monkey <strong>forces</strong> you to write systems where:</p>
<ul>
<li><p>no service is critical</p>
</li>
<li><p>no single point of failure exists</p>
</li>
<li><p>no server is special</p>
</li>
<li><p>redundancy is built-in</p>
</li>
<li><p>scaling is automatic</p>
</li>
<li><p>dependency chains are minimal</p>
</li>
</ul>
<p>It is one of the best tools for teaching:</p>
<p><strong>“If your app can’t survive random failures, it’s not distributed.”</strong></p>
<p>Chaos Monkey pushes developers toward:</p>
<ul>
<li><p>stateless services</p>
</li>
<li><p>load-balanced design</p>
</li>
<li><p>multi-zone architecture</p>
</li>
<li><p>graceful degradation</p>
</li>
<li><p>retry logic</p>
</li>
<li><p>circuit breakers</p>
</li>
<li><p>async architecture</p>
</li>
</ul>
<p>All of which create <strong>real decoupling</strong>.</p>
<hr />
<h1 id="heading-should-you-use-chaos-monkey-my-honest-answer"><strong>Should You Use Chaos Monkey? My Honest Answer</strong></h1>
<p>If your system is:</p>
<ul>
<li><p>monolithic</p>
</li>
<li><p>tightly coupled</p>
</li>
<li><p>without redundancy</p>
</li>
</ul>
<p>Chaos Monkey will destroy it.<br />Don’t run it.</p>
<p>But if your system is:</p>
<ul>
<li><p>microservices</p>
</li>
<li><p>distributed</p>
</li>
<li><p>cloud-native</p>
</li>
<li><p>scalable</p>
</li>
</ul>
<p>Then Chaos Monkey is your best friend.</p>
<p>Start in staging.<br />Then move to production slowly.<br />Monitor heavily.<br />Grow your resilience step by step.</p>
<hr />
<h1 id="heading-final-thoughts-in-pure-rudraksh-style"><strong>Final Thoughts — In Pure Rudraksh Style</strong></h1>
<p>Chaos Monkey is not a tool.<br />It’s a philosophy:</p>
<p><strong>Break things before the world breaks them for you.</strong></p>
<p>Netflix didn’t become Netflix by avoiding failure.<br />They embraced failure.<br />They tested it.<br />They studied it.<br />They mastered it.</p>
<p>Chaos Monkey teaches us one thing:</p>
<blockquote>
<p>“If your architecture falls when one part dies, then your architecture was never strong.”</p>
</blockquote>
<p>So build systems that survive chaos.<br />Because in the real world, chaos is guaranteed.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[Indexing in DynamoDB — The Silent Cost Killer You Don’t Notice Until Your Bill Explodes]]></title><description><![CDATA[If you’ve ever worked with DynamoDB, you know it feels magical:fast, serverless, no maintenance, no tension.
But there’s one trap most developers fall into —Indexing.
Yes, indexing makes queries fast.Yes, indexing feels powerful.But indexing can also...]]></description><link>https://hashnode.rudrakshladdha.xyz/indexing-in-dynamodb-the-silent-cost-killer-you-dont-notice-until-your-bill-explodes</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/indexing-in-dynamodb-the-silent-cost-killer-you-dont-notice-until-your-bill-explodes</guid><category><![CDATA[software development]]></category><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[Developer]]></category><category><![CDATA[Devops]]></category><category><![CDATA[technology]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Tue, 09 Dec 2025 18:30:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1764348747637/56693627-4c5a-4375-9dfa-c16867e275c7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you’ve ever worked with DynamoDB, you know it feels magical:<br />fast, serverless, no maintenance, no tension.</p>
<p>But there’s one trap most developers fall into —<br /><strong>Indexing.</strong></p>
<p>Yes, indexing makes queries fast.<br />Yes, indexing feels powerful.<br />But indexing can also silently <strong>double your bill</strong> without you even noticing.</p>
<p>Let me explain this with a totally “Rudraksh-style” example.</p>
<hr />
<h1 id="heading-the-car-parking-story-stay-with-me-it-makes-sense"><strong>The Car Parking Story (Stay With Me, It Makes Sense 😅)</strong></h1>
<p><img src="https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExano0MTYyMXIydmYwMXlocnIxbDg3YXd4NG56YW8xcXNqZmRtM2t4ciZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/7kJh0hq7T0l8I/giphy.gif" alt /></p>
<p>Imagine you buy a car.<br />You are not a heavy driver.<br />You don’t drive daily.<br />But suddenly you say:</p>
<blockquote>
<p>“Let me book not one… but two parking slots.”</p>
</blockquote>
<p>Logically, everyone will say:</p>
<p>“Bro, why? You don’t need it.”</p>
<p>Now, I know this example sounds illogical —<br />but that’s exactly what most developers do with DynamoDB.</p>
<p>They store data once…<br />and then they create extra indexes that <strong>store the same data again</strong>.</p>
<p>You don’t need double parking.<br />But you take it anyway.</p>
<p>You don’t need double data.<br />But your index takes it anyway.</p>
<p>And AWS will smile and say:<br />“Great. Now pay double.”</p>
<p>This is the starting point of DynamoDB indexing cost.</p>
<hr />
<h1 id="heading-lets-talk-real-dynamodb-now-enough-parking-example"><strong>Let’s Talk Real DynamoDB Now (Enough Parking Example)</strong></h1>
<p>When you add an index in DynamoDB —<br />whether it’s a GSI (Global Secondary Index) or LSI (Local Secondary Index):</p>
<p>👉 <strong>DynamoDB duplicates parts of your data.</strong><br />👉 <strong>That duplicate sits in a new storage area.</strong><br />👉 <strong>You are billed for that extra storage.</strong><br />👉 <strong>And also billed for read/write capacity AGAIN for the index.</strong></p>
<p>That’s the real cost monster developers ignore.</p>
<hr />
<h1 id="heading-why-indexing-increases-your-cost-simple-breakdown"><strong>Why Indexing Increases Your Cost (Simple Breakdown)</strong></h1>
<h3 id="heading-1-dynamodb-doesnt-reference-your-data-it-copies-it"><strong>1️⃣ DynamoDB Doesn’t “reference” your data — it copies it.</strong></h3>
<p>If your main table is <strong>5 GB</strong>,<br />and you create a GSI that copies all projected fields…</p>
<p>Your total storage becomes:</p>
<p><strong>5 GB (main table) + 5 GB (GSI) = 10 GB</strong></p>
<p>You just doubled your bill.<br />No warning. No popup.<br />Just a silent bill increase.</p>
<hr />
<h3 id="heading-2-every-write-happens-twice-or-more"><strong>2️⃣ Every Write Happens Twice (or more)</strong></h3>
<p>When you insert or update data:</p>
<ul>
<li><p>First write → main table</p>
</li>
<li><p>Second write → GSI</p>
</li>
<li><p>Third? If you have multiple GSIs</p>
</li>
</ul>
<p>Each write consumes:</p>
<ul>
<li><p>Write throughput</p>
</li>
<li><p>Write cost</p>
</li>
</ul>
<p>So writing 1000 items can become 2000 or 3000 writes.<br />And DynamoDB charges for each.</p>
<hr />
<h3 id="heading-3-projection-types-decide-how-much-data-is-copied"><strong>3️⃣ Projection Types Decide How Much Data Is COPIED</strong></h3>
<p>GSIs have three projection types:</p>
<ul>
<li><p><strong>Keys only</strong> → cheapest</p>
</li>
<li><p><strong>Include only few attributes</strong> → medium</p>
</li>
<li><p><strong>All attributes</strong> → maximum cost (full duplication)</p>
</li>
</ul>
<p>Most beginners choose <strong>ALL ATTRIBUTES</strong>.<br />This is where they get destroyed by cost.</p>
<hr />
<h3 id="heading-4-read-costs-increase-too"><strong>4️⃣ Read Costs Increase Too</strong></h3>
<p>When you query a GSI:<br />DynamoDB charges for reads separately.</p>
<p>It’s not:</p>
<p>“GSI is free because it’s derived from main table.”</p>
<p>It’s:</p>
<p>“GSI is a second database. Pay money again.”</p>
<hr />
<h1 id="heading-but-why-does-dynamodb-do-this-is-amazon-greedy"><strong>But Why Does DynamoDB Do This? Is Amazon Greedy?</strong></h1>
<p>No — not greedy.<br />This is how DynamoDB becomes lightning fast.</p>
<p>Indexes allow you to query by:</p>
<ul>
<li><p>different attributes</p>
</li>
<li><p>different sorting</p>
</li>
<li><p>different access patterns</p>
</li>
<li><p>different view of the same data</p>
</li>
</ul>
<p>And speed always has a price.</p>
<p>Remember your car example?</p>
<p>Two parking slots = more space, more convenience<br />but also → twice the cost.</p>
<p>Same with DynamoDB:</p>
<p>More indexes = more speed<br />but also → more storage &amp; write cost.</p>
<hr />
<p><a target="_blank" href="learnvirendana.xyz"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764348529615/30f6daa0-168c-4741-9bd9-0ffa80354d1f.png" alt class="image--center mx-auto" /></a></p>
<h1 id="heading-heres-the-mindset-developers-should-use"><strong>Here’s the Mindset Developers Should Use</strong></h1>
<p>Don’t index because it feels good.<br />Index because you <strong>need</strong> it.</p>
<p>Before adding an index, ask these questions:</p>
<h3 id="heading-1-will-this-query-happen-very-frequently"><strong>1 — Will this query happen very frequently?</strong></h3>
<p>If not, use a <strong>Scan + Filter</strong> occasionally instead of a permanent index.</p>
<h3 id="heading-2-can-i-change-my-access-pattern-to-avoid-this-index"><strong>2 — Can I change my access pattern to avoid this index?</strong></h3>
<p>DynamoDB is access-pattern first.<br />Maybe your design is wrong, not your index.</p>
<h3 id="heading-3-can-i-store-only-necessary-attributes-in-a-gsi"><strong>3 — Can I store only necessary attributes in a GSI?</strong></h3>
<p>Never choose <strong>ALL ATTRIBUTES</strong> unless your use-case demands it.</p>
<h3 id="heading-4-can-i-move-some-queries-to-elasticsearch-opensearch-or-analytics-layer"><strong>4 — Can I move some queries to ElasticSearch, OpenSearch, or analytics layer?</strong></h3>
<p>Let DynamoDB do what it’s best at:<br /><em>fast key-value lookups, predictable access patterns.</em></p>
<p>Don’t make DynamoDB a Swiss Army knife.</p>
<hr />
<h1 id="heading-examples-that-hurt-your-pocket-real-situations"><strong>Examples That Hurt Your Pocket (Real Situations)</strong></h1>
<h3 id="heading-example-1-full-gsi-projection"><strong>Example 1 — Full GSI Projection</strong></h3>
<p>Table size → 10 GB<br />GSI projections → all attributes<br />Result → GSI also 10 GB<br />Total → 20 GB storage cost</p>
<h3 id="heading-example-2-heavy-write-loads"><strong>Example 2 — Heavy write loads</strong></h3>
<p>10,000 writes/day<br />With 1 GSI → 20,000 writes/day cost<br />With 2 GSIs → 30,000 writes/day<br />Imagine this running for a month = explosion 💣</p>
<h3 id="heading-example-3-unused-indexes"><strong>Example 3 — Unused indexes</strong></h3>
<p>Many companies create indexes during development and forget them in production.<br />Those unused GSIs cost hundreds per month silently.</p>
<hr />
<h1 id="heading-signs-you-are-overpaying-because-of-indexes"><strong>Signs You Are Overpaying Because of Indexes</strong></h1>
<ul>
<li><p>Your DynamoDB bill doubled without traffic increase</p>
</li>
<li><p>Storage suddenly grew fast</p>
</li>
<li><p>Write capacity usage doubled</p>
</li>
<li><p>Read capacity on GSI is higher than expected</p>
</li>
<li><p>Indexes rarely queried but still expensive</p>
</li>
<li><p>GSIs with “all attributes” projection</p>
</li>
</ul>
<p>If you see these — indexing is the culprit.</p>
<hr />
<h1 id="heading-how-to-reduce-your-dynamodb-cost-practical-and-smart"><strong>How to Reduce Your DynamoDB Cost (Practical and Smart)</strong></h1>
<h3 id="heading-1-delete-unused-gsis"><strong>1. Delete Unused GSIs</strong></h3>
<p>Every unused index is a direct money leak.</p>
<h3 id="heading-2-switch-gsi-projection-keys-only"><strong>2. Switch GSI Projection → Keys Only</strong></h3>
<p>This can save <strong>50–80% storage</strong> instantly.</p>
<h3 id="heading-3-use-sparse-indexing"><strong>3. Use “Sparse Indexing”</strong></h3>
<p>Store index keys only when needed.<br />Reduce unnecessary writes.</p>
<h3 id="heading-4-redesign-access-patterns"><strong>4. Redesign Access Patterns</strong></h3>
<p>Use <strong>single-table design</strong> wisely.<br />Avoid random access patterns.</p>
<h3 id="heading-5-batch-writes"><strong>5. Batch writes</strong></h3>
<p>Merge multiple operations to reduce write amplification.</p>
<h3 id="heading-6-use-dynamodb-streams-carefully"><strong>6. Use DynamoDB Streams Carefully</strong></h3>
<p>They add cost too when triggered by multiple indexes.</p>
<h3 id="heading-7-use-on-demand-instead-of-provisioned-or-vice-versa-depending-on-traffic"><strong>7. Use On-Demand instead of Provisioned (or vice-versa) depending on traffic</strong></h3>
<p>Choose based on predictable vs unpredictable load.</p>
<hr />
<h1 id="heading-final-thought-in-pure-rudraksh-style"><strong>Final Thought — In Pure Rudraksh Style</strong></h1>
<p>DynamoDB is fast.<br />DynamoDB is powerful.<br />DynamoDB is scalable.</p>
<p>But DynamoDB also punishes you the moment you ignore your indexes.</p>
<p>Indexes are like:</p>
<ul>
<li><p>double parking spaces</p>
</li>
<li><p>double storage</p>
</li>
<li><p>double writes</p>
</li>
<li><p>double reads</p>
</li>
</ul>
<p>Perfect when you <strong>need</strong> them.<br />Painful when you <strong>don’t</strong>.</p>
<p>If you want your DynamoDB bill to stay small:</p>
<p><strong>Index less.<br />Index smart.<br />Index with purpose.</strong></p>
<p>Because in DynamoDB world:</p>
<blockquote>
<p><strong>Speed is expensive<br />and indexing is the biggest silent cost killer you’ll ever meet.</strong></p>
</blockquote>
<hr />
]]></content:encoded></item><item><title><![CDATA[Latency—Why Telegram’s CEO Just Brought It Up, and Why It’s a Big Deal 🔥]]></title><description><![CDATA[If you use Telegram regularly, you might have heard its CEO warning about latency. And you might have shrugged.But latency isn’t just a buzzword — it can make or break user experience. Let’s dig in.

What Did Telegram’s CEO Say — and Why It Matters
O...]]></description><link>https://hashnode.rudrakshladdha.xyz/latencywhy-telegrams-ceo-just-brought-it-up-and-why-its-a-big-deal</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/latencywhy-telegrams-ceo-just-brought-it-up-and-why-its-a-big-deal</guid><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Developer]]></category><category><![CDATA[development]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Fri, 05 Dec 2025 18:30:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1764345952025/98a2536d-be01-47eb-bd81-4982eb82ad14.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you use Telegram regularly, you might have heard its CEO warning about latency. And you might have shrugged.<br />But latency isn’t just a buzzword — it can make or break user experience. Let’s dig in.</p>
<hr />
<h2 id="heading-what-did-telegrams-ceo-say-and-why-it-matters"><strong>What Did Telegram’s CEO Say — and Why It Matters</strong></h2>
<p>On a recent podcast, Pavel Durov stressed something many founders ignore: <em>when millions of users open your app a dozen times a day, even 50 ms of extra latency adds up</em>. (<a target="_blank" href="https://www.linkedin.com/posts/sukhad007_lex-freidmans-podcast-with-pavel-durov-activity-7387937125322809344-e8Po?utm_source=chatgpt.com">LinkedIn</a>)<br />He isn’t talking about a feature delay or UI bug — he’s talking about raw responsiveness.<br />For a global messaging app with hundreds of millions of users, that delay turns into frustration. That is not acceptable.</p>
<p>Durov built Telegram on two principles: privacy and real-time communication. (<a target="_blank" href="https://lexfridman.com/pavel-durov-transcript/?utm_source=chatgpt.com">Lex Fridman</a>)<br />If your message, notification, or chat takes noticeable time to reach the other side — the whole purpose collapses.</p>
<p>That’s why, from him, latency is not a “nice-to-have.” It is the <strong>core metric of trust, speed and reliability</strong>.</p>
<hr />
<h2 id="heading-what-is-latency-plain-english-expert-view"><strong>What is Latency — Plain English, Expert View</strong></h2>
<p>In engineering, <strong>latency</strong> simply means the time gap between “you do something” and “the system responds.” (<a target="_blank" href="https://en.wikipedia.org/wiki/Latency_%28engineering%29?utm_source=chatgpt.com">Wikipedia</a>)</p>
<p>In context of chat/messaging apps (or any real-time system):</p>
<ul>
<li><p>It’s the time between you hit “send” and the other side receives the message (or sees the typing indicator, or gets notified). (<a target="_blank" href="https://sceyt.com/blog/what-is-low-latency?utm_source=chatgpt.com">Sceyt</a>)</p>
</li>
<li><p>In networking terms, it includes many small delays:</p>
<ul>
<li><p><strong>Propagation delay</strong> (the physical time for data to travel), (<a target="_blank" href="https://en.wikipedia.org/wiki/Network_delay?utm_source=chatgpt.com">Wikipedia</a>)</p>
</li>
<li><p><strong>Transmission delay</strong> (time to push bits onto the network), (<a target="_blank" href="https://en.wikipedia.org/wiki/Network_delay?utm_source=chatgpt.com">Wikipedia</a>)</p>
</li>
<li><p><strong>Processing delay</strong> (server or router processing), (<a target="_blank" href="https://en.wikipedia.org/wiki/Network_delay?utm_source=chatgpt.com">Wikipedia</a>)</p>
</li>
<li><p><strong>Queueing or congestion delay</strong> (when network is crowded). (<a target="_blank" href="https://en.wikipedia.org/wiki/Network_delay?utm_source=chatgpt.com">Wikipedia</a>)</p>
</li>
</ul>
</li>
</ul>
<p>When you add all these micro-delays, cumulative latency can hurt real-time feels.</p>
<hr />
<p><img src="https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExYmx1cnEzaHNkdjljY3Q1ZDVkcWUzdmk2ZmFwczh3c2R6MW45MWlraSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/P8ef3Dkynk0xLx1h1T/giphy.gif" alt /></p>
<h2 id="heading-what-is-good-latency-how-fast-should-it-be"><strong>What is “Good” Latency — How Fast Should It Be</strong></h2>
<p>From what engineers and real-time communication designers consider:</p>
<ul>
<li><p>For chat or messaging: you want latency to be <strong>very small — ideally so small the user doesn’t notice</strong>. (<a target="_blank" href="https://sceyt.com/blog/what-is-low-latency?utm_source=chatgpt.com">Sceyt</a>)</p>
</li>
<li><p>For voice/video calls or interactive apps: often target <strong>sub-150 ms one-way</strong> for smooth feel. (<a target="_blank" href="https://getstream.io/glossary/low-latency/?utm_source=chatgpt.com">Stream</a>)</p>
</li>
<li><p>Above ~200 ms (or more, depending on network &amp; load): delay becomes noticeable → leads to lag, awkwardness, or poor experience. (<a target="_blank" href="https://obkio.com/blog/what-is-good-latency/?utm_source=chatgpt.com">Obkio</a>)</p>
</li>
</ul>
<p>In short: lower latency → faster, seamless real-time response → better user experience.</p>
<hr />
<h2 id="heading-why-low-latency-is-critical-for-telegram-or-any-real-time-messaging-app"><strong>Why Low Latency Is Critical for Telegram (Or Any Real-Time Messaging App)</strong></h2>
<h3 id="heading-instant-communication-the-promise">✅ <strong>Instant Communication — The Promise</strong></h3>
<p>When you send a message on Telegram: you expect it to reach instantly.<br />No lag. No waiting. No “where did it go?”.</p>
<p>That expectation becomes baseline when users are used to lightning-fast chats, instant replies, real-time notifications. If latency is high — even a fraction — users feel it.</p>
<h3 id="heading-huge-scale-amplifies-delay">✅ <strong>Huge Scale — Amplifies Delay</strong></h3>
<p>Telegram serves <strong>billions of users</strong>. (<a target="_blank" href="https://lexfridman.com/pavel-durov-transcript/?utm_source=chatgpt.com">Lex Fridman</a>)<br />When millions of users open and exchange messages every second — even milliseconds of delay get magnified massively.</p>
<p>Durov knows that when scale is big, the tiniest delay becomes noticeable, annoying, and harmful to user trust.</p>
<h3 id="heading-reliability-under-load">✅ <strong>Reliability Under Load</strong></h3>
<p>At peak time, network congestion, server load, routing delays, distance — all can contribute to latency.<br />If architecture and infrastructure are not optimized for low latency, chats delay. Notifications miss. Real-time features fail.</p>
<p>For a privacy-centric messenger, delays kill user confidence.</p>
<hr />
<h2 id="heading-what-happens-when-latency-is-high-the-risks-amp-real-effects"><strong>What Happens When Latency Is High — The Risks &amp; Real Effects</strong></h2>
<ul>
<li><p><strong>Slow message delivery</strong> — user may see “sent” but the other user receives after delay → “Why didn’t they reply?” confusion.</p>
</li>
<li><p><strong>Broken real-time features</strong> — typing indicator, message read receipts, live voice/video calls all feel laggy or fail.</p>
</li>
<li><p><strong>Poor user experience</strong> — frequent delays make app feel sluggish; users may switch to faster alternatives.</p>
</li>
<li><p><strong>Scalability issues</strong> — as user base grows, delays amplify, system becomes brittle, harder to maintain performance.</p>
</li>
<li><p><strong>Trust &amp; reputation damage</strong> — for an app promising privacy + speed, high latency means broken promise.</p>
</li>
</ul>
<hr />
<p><a target="_blank" href="learnvirendana.xyz"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764345797809/5c096c5a-4885-4e89-b96d-f65b6f065ac8.png" alt class="image--center mx-auto" /></a></p>
<h2 id="heading-what-builders-developers-should-learn-from-this"><strong>What Builders / Developers Should Learn from This</strong></h2>
<p>If you build any real-time system (chat, gaming, live collaboration, notifications):</p>
<ul>
<li><p>Prioritize <strong>low latency architecture</strong>. Do not treat latency as secondary.</p>
</li>
<li><p>Optimize network: choose data-centers closer to users, efficient protocols, minimal hops.</p>
</li>
<li><p>Keep message sizes small; avoid bulky payloads for core real-time messages. (<a target="_blank" href="https://chronicle.software/comparing-approaches-to-durability-in-low-latency-messaging-queues/?utm_source=chatgpt.com">Chronicle Software</a>)</p>
</li>
<li><p>Use scalable backend that handles peak load without queuing — because queueing introduces delay.</p>
</li>
<li><p>Monitor and benchmark <strong>end-to-end latency</strong> (not just server processing) — from user action to delivery.</p>
</li>
</ul>
<hr />
<h2 id="heading-final-word-in-my-style"><strong>Final Word (In My Style)</strong></h2>
<p>Latency — call it delay, lag, or slowdown — is the silent killer of user experience.<br />When you build something real-time, you are not just building features. You’re building <strong>trust, speed, responsiveness</strong>.</p>
<p>That’s why Pavel Durov and Telegram talk about latency.<br />Because when you serve billions — a 50 ms lag is not negligible. It’s a <strong>deal breaker</strong>.</p>
<p>If you build chat apps, gaming apps, real-time dashboards, or anything that demands instant response — don’t treat latency as “nice to have.”<br />Treat it like <strong>core architecture principle</strong>.</p>
<p>Because in real-time, if you delay — you fail.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[MVC Architecture — The Classic Blueprint Every Developer Accidentally Uses]]></title><description><![CDATA[I know I just talked about Clean Architecture and onions,but before that world even existed, developers lived in the kingdom of MVC.
And trust me — you already know MVC.You’ve used it somewhere, somehow, without even noticing.Every framework, every t...]]></description><link>https://hashnode.rudrakshladdha.xyz/mvc-architecture-the-classic-blueprint-every-developer-accidentally-uses</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/mvc-architecture-the-classic-blueprint-every-developer-accidentally-uses</guid><category><![CDATA[software development]]></category><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[TechwithRudraksh]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Developer]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[software architecture]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Tue, 02 Dec 2025 18:30:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1764345321660/7a19f306-850d-40ba-92a3-76bc835aacb8.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I know I just talked about Clean Architecture and onions,<br />but before that world even existed, developers lived in the kingdom of MVC.</p>
<p>And trust me — you already know MVC.<br />You’ve used it somewhere, somehow, without even noticing.<br />Every framework, every tutorial, every “Hello World” almost forces you into it.</p>
<p>Today, let’s break it down in the simplest, most human way possible.</p>
<hr />
<h2 id="heading-so-what-exactly-is-mvc"><strong>So… What Exactly Is MVC?</strong></h2>
<p>MVC stands for:</p>
<ul>
<li><p><strong>Model</strong></p>
</li>
<li><p><strong>View</strong></p>
</li>
<li><p><strong>Controller</strong></p>
</li>
</ul>
<p>Three folders.<br />Three responsibilities.<br />Three straight-forward layers that separate your project like a cleanly arranged desk.</p>
<p>Most people speak fancy definitions.<br />Not here.<br />Let’s keep it real.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764345159418/e7631366-c909-4ae3-b381-cb6d8651561c.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-1-model-the-data-brain-your-database-handler"><strong>1. Model — The Data Brain (Your Database Handler)</strong></h1>
<p>If you ever saw a folder named:</p>
<pre><code class="lang-plaintext">models/
</code></pre>
<p>that’s it.<br />That’s your Model.</p>
<p>It handles one job:</p>
<blockquote>
<p><strong>Talk to the database so the rest of the application doesn’t have to.</strong></p>
</blockquote>
<p>Whether you’re using SQL, MongoDB, Prisma, Sequelize, Mongoose —<br />Model is the place where you define:</p>
<ul>
<li><p>what data looks like</p>
</li>
<li><p>how it should be stored</p>
</li>
<li><p>how it should be fetched</p>
</li>
<li><p>how it should be updated</p>
</li>
</ul>
<p>The model doesn’t care about UI.<br />It doesn’t care about buttons.<br />It doesn’t care about design.</p>
<p>It only cares about <strong>data</strong>.</p>
<p>Think of it like the storage room of a shop —<br />everything lives there quietly, away from the front counter.</p>
<hr />
<h1 id="heading-2-view-the-face-of-your-app-ui-layer"><strong>2. View — The Face of Your App (UI Layer)</strong></h1>
<p>Now comes the View.<br />This is everything you <strong>see</strong> on the screen:</p>
<ul>
<li><p>HTML</p>
</li>
<li><p>CSS</p>
</li>
<li><p>React components</p>
</li>
<li><p>Templates</p>
</li>
<li><p>Screens</p>
</li>
<li><p>Pages</p>
</li>
</ul>
<p>In old-school MVC (like PHP or Ruby on Rails), View literally meant <code>.ejs</code>, <code>.erb</code>, <code>.jade</code>, <code>.html</code> files.</p>
<p>In modern apps, View can be:</p>
<ul>
<li><p>React</p>
</li>
<li><p>Next.js pages</p>
</li>
<li><p>Flutter UI</p>
</li>
<li><p>Even mobile frontends</p>
</li>
</ul>
<p>Anything visual = View.</p>
<p>View has one job:</p>
<blockquote>
<p><strong>Show things to the user. Nicely. Cleanly. Without knowing any database code.</strong></p>
</blockquote>
<p>View never talks to the database directly.<br />That’s the job of the controller.</p>
<hr />
<h1 id="heading-3-controller-the-middle-manager-traffic-police-of-your-app"><strong>3. Controller — The Middle Manager (Traffic Police of Your App)</strong></h1>
<p>This is the part where beginners get confused.</p>
<p>Controller = Routes + Logic.</p>
<p>Whenever a user clicks a button or sends a request, it comes to the controller.</p>
<p>The controller decides:</p>
<ul>
<li><p>What should happen?</p>
</li>
<li><p>Which model to use?</p>
</li>
<li><p>Which data to fetch?</p>
</li>
<li><p>Which view to send back?</p>
</li>
</ul>
<p>If your app was a company:</p>
<ul>
<li><p>View = Reception</p>
</li>
<li><p>Model = Accounts/Storage</p>
</li>
<li><p>Controller = Manager</p>
</li>
</ul>
<p>Controller keeps everything in discipline.</p>
<p>Example:</p>
<pre><code class="lang-plaintext">GET /user
</code></pre>
<p>Request goes to controller → controller fetches user data using model → returns a view or JSON.</p>
<p>Simple.<br />Powerful.<br />Clean.</p>
<hr />
<h1 id="heading-why-mvc-works-and-why-its-still-loved"><strong>Why MVC Works (And Why It’s Still Loved)</strong></h1>
<p>Even though new architectures have arrived, MVC is still everywhere because:</p>
<h3 id="heading-easy-to-understand">✅ Easy to understand</h3>
<p>All roles are clearly separated.</p>
<h3 id="heading-beginner-friendly">✅ Beginner-friendly</h3>
<p>You can teach this to any fresher in 10 minutes.</p>
<h3 id="heading-perfect-for-small-and-medium-projects">✅ Perfect for small and medium projects</h3>
<p>You don’t need a heavy structure.</p>
<h3 id="heading-supported-by-almost-every-framework">✅ Supported by almost every framework</h3>
<p>Express<br />Laravel<br />Django<br />Ruby on Rails<br /><a target="_blank" href="http://ASP.NET">ASP.NET</a><br />Spring<br />All of them were born from MVC.</p>
<h3 id="heading-great-for-rapid-development">✅ Great for rapid development</h3>
<p>You can move fast without breaking everything.</p>
<hr />
<h1 id="heading-a-mini-example-realistic"><strong>A Mini Example (Realistic)</strong></h1>
<p>Let’s say you want to build a simple “User Registration”.</p>
<h3 id="heading-model-usermodeljs"><strong>Model → userModel.js</strong></h3>
<p>Defines fields like <code>name</code>, <code>email</code>, <code>password</code>.</p>
<h3 id="heading-view-registerejs-react-form"><strong>View → register.ejs / React form</strong></h3>
<p>The form user fills.</p>
<h3 id="heading-controller-usercontrollerjs"><strong>Controller → userController.js</strong></h3>
<p>Handles:</p>
<ul>
<li><p>request</p>
</li>
<li><p>validation</p>
</li>
<li><p>calling model</p>
</li>
<li><p>returning success/failure</p>
</li>
</ul>
<p>MVC splits your headache into 3 small headaches —<br />but makes everything more organized.</p>
<hr />
<h1 id="heading-but-heres-the-truth"><strong>But Here’s the Truth…</strong></h1>
<p>MVC is simple.<br />Clean architecture is safer.<br />But both have the same mission:</p>
<blockquote>
<p><strong>Separate responsibilities so your code doesn’t become a plate of noodles.</strong></p>
</blockquote>
<p>MVC is your first step towards clean, decoupled systems.</p>
<p>Clean Architecture is where you go when you want to scale, evolve, and protect business logic.</p>
<p>MVC is not outdated.<br />It’s a classic.<br />Like the Nokia 1100 —<br />strong, reliable, and perfect when you need something that just works.</p>
<hr />
<p><a target="_blank" href="learnvirendana.xyz"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764345092396/23b80c4e-2024-4351-9447-37f44a8488a8.png" alt class="image--center mx-auto" /></a></p>
<h1 id="heading-final-thought"><strong>Final Thought</strong></h1>
<p>If you understand MVC, you understand half of software architecture already.</p>
<ul>
<li><p>Model protects your data.</p>
</li>
<li><p>View presents your UI.</p>
</li>
<li><p>Controller connects the two.</p>
</li>
</ul>
<p>Three layers.<br />One simple idea.<br />And a structure that has helped millions of developers build millions of applications.</p>
<p>Architecture will change.<br />Frameworks will change.<br />Tools will change.</p>
<p>But MVC?<br />It’s not going anywhere.</p>
<p>Not today.<br />Not tomorrow.<br />Not ever.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[Clean Architecture and Its Wonders — The Onion Story You Never Noticed]]></title><description><![CDATA[If you’ve ever cut an onion, you already understand clean architecture — you just didn’t realize it.
We all know how an onion looks: layers on layers on layers.Now think about this:If the outer layer gets fungus or damage, the inner layers are still ...]]></description><link>https://hashnode.rudrakshladdha.xyz/clean-architecture-and-its-wonders-the-onion-story-you-never-noticed</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/clean-architecture-and-its-wonders-the-onion-story-you-never-noticed</guid><category><![CDATA[System Design]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[Devops]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[TechwithRudraksh]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[Developer]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Fri, 28 Nov 2025 15:42:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1764344458072/862a1791-6d77-4aad-b18b-9c04dfa6d2f5.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you’ve ever cut an onion, you already understand clean architecture — you just didn’t realize it.</p>
<p>We all know how an onion looks: <strong>layers on layers on layers</strong>.<br />Now think about this:<br />If the <em>outer</em> layer gets fungus or damage, the inner layers are still safe.<br />But if the <em>inner</em> layer is damaged, the onion becomes useless.</p>
<p>And this is not the story of the onion.<br />This is the story of <strong>Clean Architecture</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764344205606/7d8427fc-f87c-4d37-a6b5-ae7169df7d8c.png" alt /></p>
<hr />
<h2 id="heading-why-am-i-telling-you-this"><strong>Why am I telling you this?</strong></h2>
<p>Because I was one of those people who used to say:</p>
<blockquote>
<p>“Don’t depend on architecture, just break down business logic and build the product.”</p>
</blockquote>
<p>I used to believe architecture is overhyped.<br />But the day I understood the onion, I realized architecture is not a burden —<br /><strong>It’s a shield.</strong></p>
<hr />
<h1 id="heading-what-exactly-is-clean-architecture"><strong>What Exactly Is Clean Architecture?</strong></h1>
<p>Clean Architecture is nothing but an onion.</p>
<p>Not in smell — but in structure.<br />Everything is built in layers:</p>
<ul>
<li><p>The <strong>outer layers</strong> (Frontend, Database, UI, Frameworks) → constantly changing.</p>
</li>
<li><p>The <strong>inner layers</strong> (Use Cases, Business Logic, Core Rules) → stable, protected, untouchable.</p>
</li>
</ul>
<h3 id="heading-if-the-outer-layer-changes-inner-core-stays-safe"><strong>If the outer layer changes → inner core stays safe.</strong></h3>
<p>Switch React to Next.js?<br />MongoDB to PostgreSQL?<br />HTML to Flutter Web?</p>
<p>No problem.<br />The core stays untouched.</p>
<h3 id="heading-but-if-the-inner-layer-breaks-everything-collapses"><strong>But if the inner layer breaks → everything collapses.</strong></h3>
<p>Just like the onion.</p>
<hr />
<h1 id="heading-the-biggest-wonder-dependency-direction"><strong>The Biggest Wonder: Dependency Direction</strong></h1>
<p>Clean Architecture follows one mind-blowing rule:</p>
<p><strong>Outer layers depend on inner layers.<br />Inner layers depend on nothing.</strong></p>
<p>This gives your backend superpowers:</p>
<ul>
<li><p>Fully <strong>decoupled</strong></p>
</li>
<li><p>Highly <strong>testable</strong></p>
</li>
<li><p>Easy to <strong>extend</strong></p>
</li>
<li><p>Zero <strong>tight coupling</strong> with frameworks or databases</p>
</li>
<li><p>Total freedom to replace or upgrade tools</p>
</li>
</ul>
<p>Your backend becomes the heart —<br />and the heart never depends on skin, clothes, or hairstyle.<br />The outer layer depends on the heart.</p>
<hr />
<p><a target="_blank" href="https://www.learnvirendana.xyz/"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764344274377/95d62194-a083-4403-b07a-f6a998470709.png" alt class="image--center mx-auto" /></a></p>
<h1 id="heading-a-simple-example-practical-mindset"><strong>A Simple Example (Practical Mindset)</strong></h1>
<p>Imagine you are building a product.</p>
<h3 id="heading-old-thinking"><strong>Old thinking:</strong></h3>
<p>Backend depends on database.<br />Frontend depends on backend.<br />Everything depends on everything.</p>
<p>A small change = chain reaction = sleepless nights.</p>
<h3 id="heading-clean-architecture-thinking"><strong>Clean architecture thinking:</strong></h3>
<p>Backend business logic → completely unaware of DB<br />Use cases → unaware of controllers<br />Entities → unaware of everything outside</p>
<p>Change DB?<br />Frontend?<br />Auth provider?<br />Cache?<br />Cloud?</p>
<p>Go ahead.<br />Your business logic <strong>doesn’t even know</strong> these things exist.</p>
<p>That’s the wonder.</p>
<hr />
<h1 id="heading-why-this-matters-in-real-life"><strong>Why This Matters (In Real Life)</strong></h1>
<p>In real-world projects:</p>
<ul>
<li><p>Teams change</p>
</li>
<li><p>Frameworks evolve</p>
</li>
<li><p>Databases get outdated</p>
</li>
<li><p>Features get rewritten</p>
</li>
<li><p>UI gets redesigned every 6 months</p>
</li>
<li><p>Business rules stay the same</p>
</li>
</ul>
<p>Clean Architecture protects what matters most —<br /><strong>your logic, your rules, your business brain</strong>.</p>
<p>Everything else is optional.<br />Replaceable.<br />Disposable.</p>
<hr />
<h1 id="heading-my-final-thought"><strong>My Final Thought</strong></h1>
<p>I’m not saying clean architecture is the only way.<br />But if you understand the onion, you understand the magic.</p>
<p>Architecture does not slow you down.<br />Bad architecture slows you down.<br />A good architecture silently protects you, like a shield.</p>
<p>So next time you cut an onion, just remember:</p>
<p><strong>If outer layers are damaged, your core is still safe.<br />But if the core is damaged, nothing can save the onion.<br />And nothing can save your software.</strong></p>
<p>Take care of the inner layer.<br />That’s where your true power lives.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[A Hypothetical Cal.com Clone That Costs Almost Nothing to Run]]></title><description><![CDATA[Hi, I am Rudraksh.This is not a full-blown startup announcement but more of a hypothetical concept of how I can build a calendar scheduling app like Cal.com, but at a much lower price. I am writing this to share my thought process, get feedback, and ...]]></description><link>https://hashnode.rudrakshladdha.xyz/a-hypothetical-calcom-clone-that-costs-almost-nothing-to-run</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/a-hypothetical-calcom-clone-that-costs-almost-nothing-to-run</guid><category><![CDATA[TechwithRudraksh]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Developer]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[Software Testing]]></category><category><![CDATA[development]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[React]]></category><category><![CDATA[Redis]]></category><category><![CDATA[MongoDB]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Sat, 30 Aug 2025 16:27:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1756571130268/1acdd28a-4fe4-4b63-988c-633275c209e8.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi, I am Rudraksh.<br />This is not a full-blown startup announcement but more of a <strong>hypothetical concept</strong> of how I can build a calendar scheduling app like <a target="_blank" href="http://Cal.com">Cal.com</a>, but at a much lower price. I am writing this to share my thought process, get feedback, and maybe inspire others. Of course, there will be <strong>limitations in scalability and performance</strong>, but that’s fine — this is more of a “how I would design it” piece.</p>
<hr />
<h2 id="heading-what-is-calcomhttpcalcom">What is <a target="_blank" href="http://Cal.com">Cal.com</a>?</h2>
<p><a target="_blank" href="http://Cal.com">Cal.com</a> is basically a platform where a client can <strong>schedule a discovery call or one-to-one session</strong> with you. It integrates with multiple calendars like Google or Outlook and helps avoid the back-and-forth of “When are you free?”</p>
<p>Now, instead of reinventing the wheel, I just thought — why not make a <strong>simplified version</strong> for personal/freelance use where infra costs stay super low?</p>
<hr />
<h2 id="heading-my-tech-choices">My Tech Choices</h2>
<p>I will go with <strong>Node.js</strong> for the backend because it’s fast, easy to use, and has a big ecosystem.</p>
<ul>
<li><p><strong>JWT authentication</strong> → for security and user sessions</p>
</li>
<li><p><strong>MongoDB Atlas</strong> → to store user data (easy scaling + free tier works)</p>
</li>
<li><p><strong>Redis</strong> → for caching and faster user experience</p>
</li>
<li><p><strong>WebSockets</strong> → to push notifications (like reminders or updates) in real time</p>
</li>
</ul>
<p>For hosting:</p>
<ul>
<li><p><strong>Backend on Render</strong> (free/cheap tier works well)</p>
</li>
<li><p><strong>Frontend on Vercel</strong> (great for React and Next.js, also free tier friendly)</p>
</li>
</ul>
<p>So infra is cheap, clean, and easy to maintain.</p>
<hr />
<h2 id="heading-how-i-imagine-the-flow">How I Imagine the Flow</h2>
<h3 id="heading-1-first-page-platform-connect">1. First Page → Platform Connect</h3>
<p>When a new user signs up, the first page will ask: <em>Which platform do you want to connect with?</em> (Google, Outlook, or Zoom).<br />This way, they directly sync calendars and conferencing tools.</p>
<h3 id="heading-2-dashboard-profile-setup">2. Dashboard → Profile Setup</h3>
<p>User sets up how their <strong>public profile</strong> should look (like “Book a call with Rudraksh”). They can choose availability, description, links, etc.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756570431006/721a8afa-ba52-473e-97cf-377249b855d5.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-3-backend-data-amp-notes">3. Backend → Data &amp; Notes</h3>
<p>Here comes the twist. Instead of storing only appointments, I also integrate:</p>
<ul>
<li><p><strong>Notion API</strong> or <strong>Google Docs API</strong> → to save client details automatically in bullet format</p>
</li>
<li><p>This can be enhanced with <strong>Gemini (AI premium feature)</strong> to auto-summarize client info for freelancers</p>
</li>
</ul>
<h3 id="heading-4-scheduling-calls-amp-payments">4. Scheduling → Calls &amp; Payments</h3>
<ul>
<li><p>The client picks a date → app checks your calendar → generates a <strong>Google Meet link automatically</strong></p>
</li>
<li><p>Notifications go through <strong>WebSocket</strong> (instant updates instead of email delays)</p>
</li>
<li><p>If it’s a <strong>paid discovery call</strong>, then use <strong>Stripe.js</strong> or <strong>Razorpay</strong> for payment</p>
</li>
</ul>
<hr />
<h2 id="heading-cost-analysis">Cost Analysis</h2>
<p>The main goal: <strong>low infra burn</strong>.<br />For ~1000 active users, cost can be as low as <strong>$0 – $5</strong> (thanks to free tiers):</p>
<ul>
<li><p><strong>MongoDB Atlas free tier</strong></p>
</li>
<li><p><strong>Redis free plan</strong></p>
</li>
<li><p><strong>Render + Vercel free/cheap tier</strong></p>
</li>
</ul>
<p>So basically, the infra is close to <strong>barely anything</strong> compared to scaling <a target="_blank" href="http://Cal.com">Cal.com</a>. If one day usage grows massively, of course, infra costs will rise, but at small scale it’s super affordable.</p>
<hr />
<h2 id="heading-why-i-like-this-idea">Why I Like This Idea</h2>
<ul>
<li><p>Low infra → doesn’t burn money unnecessarily</p>
</li>
<li><p>Useful for <strong>freelancers, creators, or coaches</strong> who just want simple scheduling + payments</p>
</li>
<li><p>Extensible → can add AI summaries, more calendar integrations, or even analytics later</p>
</li>
</ul>
<p>This is just a <strong>raw design thought</strong>. I haven’t built it fully yet, but the concept excites me because it mixes practicality (scheduling, payments) with low infra cost (almost free hosting).</p>
<hr />
<h2 id="heading-closing-thoughts">Closing Thoughts</h2>
<p>This is not about competing with <a target="_blank" href="http://Cal.com">Cal.com</a>, but showing how you can design a <strong>lean version</strong> of the same idea, especially useful if you’re a freelancer or small business who doesn’t want to spend much on infra.</p>
<p>If you have thoughts, improvements, or want to collaborate, I’d love to hear from you. 🚀</p>
<hr />
<h3 id="heading-if-you-were-building-this-which-part-would-you-simplify-or-skip-to-keep-infra-even-cheaper"><strong>If you were building this, which part would you simplify or skip to keep infra even cheaper?</strong></h3>
]]></content:encoded></item><item><title><![CDATA[Why I Feel Unsatisfied in Tech (From My Own Journey)]]></title><description><![CDATA[I’ve been in tech long enough to see both its shine and its shadows. From coding late nights to chasing new frameworks, from working on exciting ideas to feeling… empty. Somewhere along the way, I realized something uncomfortable: tech, for me, isn’t...]]></description><link>https://hashnode.rudrakshladdha.xyz/why-i-feel-unsatisfied-in-tech-from-my-own-journey</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/why-i-feel-unsatisfied-in-tech-from-my-own-journey</guid><category><![CDATA[Rudraksh Laddha]]></category><category><![CDATA[TechwithRudraksh]]></category><category><![CDATA[technology]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Developer]]></category><category><![CDATA[personal development]]></category><category><![CDATA[Experience ]]></category><category><![CDATA[AI]]></category><category><![CDATA[Machine Learning]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Sat, 09 Aug 2025 16:32:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1754738431184/68908847-6d2d-4a31-8cb7-aaeabed93b1d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I’ve been in tech long enough to see both its shine and its shadows. From coding late nights to chasing new frameworks, from working on exciting ideas to feeling… empty. Somewhere along the way, I realized something uncomfortable: <strong>tech, for me, isn’t giving the satisfaction I once expected.</strong></p>
<p>This isn’t a “tech is bad” rant. It’s just my personal experience — the patterns I noticed in myself and maybe you’ll relate.</p>
<hr />
<h3 id="heading-1-the-constant-chase-for-next">1. The Constant Chase for “Next”</h3>
<p>In tech, the pace is insane. A new library drops, a framework updates, AI changes everything — and suddenly what you knew feels outdated.<br />Instead of enjoying what I build, I often find myself thinking, <em>“What’s next? What do I need to learn before I fall behind?”</em><br />It’s like running on a treadmill — moving fast but never reaching anywhere.</p>
<hr />
<h3 id="heading-2-building-vs-impact">2. Building vs. Impact</h3>
<p>When I started, I imagined tech as a tool to solve real problems. And yes, it can be. But often, projects feel like just another product, another feature, another client requirement.<br />I’ve built things that “work” but don’t matter. They don’t change lives, they just ship because the deadline says so. That disconnect between effort and meaning eats away at the excitement.</p>
<hr />
<h3 id="heading-3-money-cant-fill-the-gap">3. Money Can’t Fill the Gap</h3>
<p>I thought maybe good pay or freelancing freedom would make it better. But even after getting paid well for projects, the feeling didn’t stick. You deliver, you get paid, and then you’re back at square one — same screen, same chair, same loop.</p>
<hr />
<h3 id="heading-4-the-creative-burnout">4. The Creative Burnout</h3>
<p>Tech is creative in its own way — problem-solving, design thinking, clean architecture. But over time, the creativity can get buried under tickets, bugs, and endless “small changes.” The joy of crafting something fresh gets replaced by maintaining something stale.</p>
<hr />
<h3 id="heading-5-the-human-element-missing">5. The Human Element Missing</h3>
<p>No matter how much I build, tech work often feels… isolated. You interact with tools more than people. Even in teams, communication is about Jira tickets, not shared emotions or vision. And I’ve realized — I crave that human connection.</p>
<hr />
<h2 id="heading-so-what-now">So, What Now?</h2>
<p>I’m not quitting tech. But I’m also not pretending everything’s perfect. I’m shifting focus:</p>
<ul>
<li><p>Choosing projects I actually believe in</p>
</li>
<li><p>Balancing tech work with non-tech creative outlets</p>
</li>
<li><p>Talking to real users, not just reading analytics</p>
</li>
<li><p>Saying “no” more often to work that drains me</p>
</li>
</ul>
<p>Tech is powerful — but it’s not the whole picture of life. And for me, chasing <em>meaning</em> matters more than chasing the next framework.</p>
<hr />
<div data-node-type="callout">
<div data-node-type="callout-emoji">➡</div>
<div data-node-type="callout-text"><a target="_self" href="http://learnvirendana.xyz/">http://learnvirendana.xyz/</a></div>
</div>

<div data-node-type="callout">
<div data-node-type="callout-emoji">➡</div>
<div data-node-type="callout-text"><a target="_self" href="http://virendana.xyz/">http://virendana.xyz/</a></div>
</div>]]></content:encoded></item><item><title><![CDATA[Why I’m Shooting Myself: $10,000 in 8 Days or Nothing]]></title><description><![CDATA[Hi, I’m Rudraksh. You probably forgot me on Hashnode, and I don’t blame you — I’ve been MIA for a while. But I’m back, and not just with another article — I’m back with a fire un
under my feet and a bullet aimed at myself. Metaphorically, of course.
...]]></description><link>https://hashnode.rudrakshladdha.xyz/why-im-shooting-myself-10000-in-8-days-or-nothing</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/why-im-shooting-myself-10000-in-8-days-or-nothing</guid><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Sun, 27 Jul 2025 07:52:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1753602627840/4f1b8390-f184-40c1-8e4d-e8e7f90fcc52.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<p>Hi, I’m Rudraksh. You probably forgot me on Hashnode, and I don’t blame you — I’ve been MIA for a while. But I’m back, and not just with another article — I’m back with a fire un</p>
<p>under my feet and a bullet aimed at myself. Metaphorically, of course.</p>
<p>Let me explain.</p>
<h3 id="heading-the-10000-deadline">The $10,000 Deadline</h3>
<p>A month ago, I set myself a crazy challenge:<br /><strong>Earn $10,000 through freelancing or my own products before my birthday.</strong><br />It sounded bold. Audacious. Visionary.<br />But now, there are only <strong>8 days left</strong> — and I’ve earned nothing. I’m still unemployed. No freelance leads. Zero clients. The pressure is <em>real</em>.</p>
<p>And yes, maybe I shot myself with that target. But sometimes pressure is the only way we grow.</p>
<h3 id="heading-who-am-i">Who Am I?</h3>
<p>I’m a DevOps + MERN stack developer from India.<br />I build real things. Not tutorial clones — I mean real projects that solve real problems.</p>
<p>I consult on projects from development to deployment. I’ve worked on CI/CD pipelines, UI libraries, file-sharing apps, payment systems — name it. But that’s not the highlight. Recently, I went all-in on two personal products:</p>
<hr />
<h3 id="heading-virendana-uihttpvirendanaxyz"><a target="_blank" href="http://virendana.xyz/">🚀 <strong>Virendana UI</strong></a></h3>
<p>A beautiful UI component library, built with design precision.<br />Today, it’s a component kit.<br />Tomorrow, it’s your personal <em>developer friend</em> — helping you write better UIs, faster.</p>
<hr />
<h3 id="heading-learn-virendanahttplearnvirendanaxyz"><a target="_blank" href="http://learnvirendana.xyz/">📘 <strong>Learn Virendana</strong></a></h3>
<p>A no-nonsense platform to learn development the practical way.<br />No clickbait. No fluff. Just raw, real-world content — the kind you wish you found when you started.</p>
<hr />
<h3 id="heading-what-went-wrong">What Went Wrong?</h3>
<p>Even after building, writing, and grinding — I broke down.<br />Instead of hunting clients, I overthought.<br />Instead of marketing, I doubted.<br />I let fear waste my time.</p>
<p>But fear won't pay the bills. And now, the countdown is real:</p>
<p>📅 <strong>8 days</strong><br />💸 <strong>$10,000 goal</strong><br />😵‍💫 <strong>0 leads</strong><br />🔥 <strong>Infinite pressure</strong></p>
<p>And weirdly enough, this <em>impossible</em> goal is starting to fuel me.</p>
<hr />
<h3 id="heading-whats-next">What’s Next?</h3>
<p>I’m improving both my products — pushing updates, refining UX, rethinking positioning.<br />But I’m also opening up. I’m no longer hiding behind perfection.<br />I’m here to build <em>and</em> sell.<br />I’m reaching out.<br />If you need:</p>
<ul>
<li><p>A fullstack MVP</p>
</li>
<li><p>DevOps help (Docker, Jenkins, GitHub Actions, CI/CD, infra)</p>
</li>
<li><p>Or even just honest consulting to validate your idea</p>
</li>
</ul>
<p>👉 <strong>I’m available. Right now.</strong></p>
<p>DM me on LinkedIn, reply here, or drop me a mail — I’ll respond.</p>
<hr />
<h3 id="heading-why-im-publishing-this">Why I'm Publishing This</h3>
<p>Not for sympathy. Not for attention.<br />But to <strong>hold myself accountable.</strong><br />To remind myself that if I miss this goal — I missed it because I hid when I should’ve shown up.<br />This is me <strong>showing up.</strong></p>
<p>$10,000 in 8 days?<br />I don’t know if I’ll make it.</p>
<p>But I’d rather die trying than rot in regret.</p>
<hr />
<p><strong>Let’s go. I’m ready.</strong></p>
<hr />
]]></content:encoded></item><item><title><![CDATA[I Know I’m Your Consultant — But Let Me Tell You Why Docker Is a Great Thing to Explore]]></title><description><![CDATA[Yesterday I opened my DevOps notebook after a long time, and today, as your consultant, I'm going to introduce you to Docker.
Yes — Docker. The OG. The king of containers. And trust me, if you’re even a little bit into tech or DevOps, Docker is not s...]]></description><link>https://hashnode.rudrakshladdha.xyz/i-know-im-your-consultant-but-let-me-tell-you-why-docker-is-a-great-thing-to-explore</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/i-know-im-your-consultant-but-let-me-tell-you-why-docker-is-a-great-thing-to-explore</guid><category><![CDATA[Devops]]></category><category><![CDATA[Developer]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[Docker]]></category><category><![CDATA[docker images]]></category><category><![CDATA[Docker compose]]></category><category><![CDATA[development]]></category><category><![CDATA[technology]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Sun, 06 Jul 2025 18:03:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1751825000450/fd17c283-9e87-41aa-89d8-eccd92ae1d42.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Yesterday I opened my DevOps notebook after a long time, and today, as your consultant, I'm going to introduce you to Docker.</strong></p>
<p>Yes — <em>Docker</em>. The OG. The king of containers. And trust me, if you’re even a little bit into tech or DevOps, Docker is not something to skip.</p>
<hr />
<h2 id="heading-so-what-the-hell-is-docker">So What the Hell is Docker?</h2>
<p>Docker is basically a tool that creates <em>containers</em>. And before your brain zones out, let me tell you what a container even means.</p>
<p><strong>A container is like a lightweight box that has your app, your code, all the dependencies, and the entire environment it needs — all inside one portable unit.</strong><br />You run it anywhere: on Linux, on Windows, on Mac, on your grandma’s potato PC — and it still behaves exactly the same.</p>
<p>Before Docker, we had to install dependencies separately for every machine. Backend runs on Node 16? Oh, install that. Some specific Python library? Good luck fighting pip hell. And every OS behaved differently.</p>
<p>But Docker said — <strong>“Wait. What if we make all that portable?”</strong></p>
<p>And just like that — a new DevOps religion was born.</p>
<hr />
<h2 id="heading-docker-came-before-all-other-containers">Docker Came Before All Other Containers</h2>
<p>Yes, Kubernetes and Podman and containerd are famous now. But remember: <strong>Docker started it.</strong><br />In 2013, it literally changed how we think about app deployment. Earlier we were dealing with <strong>VMs (Virtual Machines)</strong> — heavy, slow, memory-hungry monsters. You needed a full OS for every app. Boot time? Minutes. Resource usage? Nightmare.</p>
<p><strong>Docker came and gave us containers — faster, lighter, boot in milliseconds.</strong></p>
<hr />
<h2 id="heading-why-docker-is-a-game-changer-from-a-devs-eye">Why Docker is a Game-Changer (from a Dev's Eye)</h2>
<p>Let me tell you with a simple example — imagine you have a Node.js app. To run it:</p>
<ul>
<li><p>You need Node installed.</p>
</li>
<li><p>You need your packages installed.</p>
</li>
<li><p>You might need MongoDB or Redis as well.</p>
</li>
<li><p>Now repeat this for your dev machine, your colleague’s laptop, your testing server, your production cloud machine.</p>
</li>
</ul>
<p><strong>So many "it works on my machine" issues.</strong><br />But when you use Docker:</p>
<ul>
<li><p>You write a simple <code>Dockerfile</code> (a recipe).</p>
</li>
<li><p>Docker packs everything inside an image.</p>
</li>
<li><p>You ship that image and say “Just run this container.”</p>
</li>
</ul>
<p>Boom. That’s it. No excuses. No dependency fights.<br /><strong>Same behavior, everywhere.</strong></p>
<hr />
<h2 id="heading-why-you-should-learn-docker-even-if-youre-not-doing-devops-full-time">Why You Should Learn Docker (Even If You’re Not Doing DevOps Full-Time)</h2>
<ul>
<li><p>You're a frontend dev? You can run backend APIs in containers.</p>
</li>
<li><p>You're a backend dev? You’ll containerize your services.</p>
</li>
<li><p>You're learning microservices? You <em>need</em> Docker.</p>
</li>
<li><p>You're just trying to host your app on cloud? Docker will make deployment 10x easier.</p>
</li>
</ul>
<hr />
<h2 id="heading-its-not-just-a-tool-its-a-mindset-shift">It’s Not Just a Tool, It’s a Mindset Shift</h2>
<p>Earlier we were building code for <em>the machine</em>.<br />Now, with Docker, we build <em>the machine</em> for the code.</p>
<p>Let that sink in.</p>
<p>You don’t install things anymore — you <strong>define them</strong>.</p>
<hr />
<h2 id="heading-final-thoughts-from-your-consultant-me">Final Thoughts from Your Consultant (Me)</h2>
<p>I’m not here to throw fancy words like “immutable infrastructure” or “CNCF landscape” at you.</p>
<p>I’m just saying — <strong>Docker is a real-world, game-changing thing.</strong><br />It beats VMs. It saves your time. It avoids “it doesn’t work here” bugs. It makes your app portable, shareable, and production-ready in minutes.</p>
<p>Tomorrow, open your DevOps notebook.<br />Install Docker.<br />Run your first container.<br />And then tell me — wasn’t that fun?</p>
<p>— Rudraksh  </p>
<hr />
]]></content:encoded></item><item><title><![CDATA[🧨 What is a Data Wipe? KiranaPro's Story & Why Monitoring is Your Silent Guardian]]></title><description><![CDATA[In early June 2025, KiranaPro, a rising grocery-tech startup, faced a catastrophic event: their EC2 servers were wiped out. Initially assumed to be a cyberattack, it was later discovered that the source was an internal threat — a disgruntled ex-emplo...]]></description><link>https://hashnode.rudrakshladdha.xyz/what-is-a-data-wipe-kiranapros-story-and-why-monitoring-is-your-silent-guardian</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/what-is-a-data-wipe-kiranapros-story-and-why-monitoring-is-your-silent-guardian</guid><category><![CDATA[Devops]]></category><category><![CDATA[Begginers]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[Developer]]></category><category><![CDATA[monitoring]]></category><category><![CDATA[development]]></category><category><![CDATA[engineering]]></category><category><![CDATA[software development]]></category><category><![CDATA[Machine Learning]]></category><category><![CDATA[AWS]]></category><category><![CDATA[AI]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Mon, 09 Jun 2025 17:57:54 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1749491684643/128bf1a1-3d0c-4589-9133-85c9917b019c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In early June 2025, <strong>KiranaPro</strong>, a rising grocery-tech startup, faced a catastrophic event: <strong>their EC2 servers were wiped out</strong>. Initially assumed to be a cyberattack, it was later discovered that the source was an <strong>internal threat — a disgruntled ex-employee</strong>. This shocking incident is more than a headline — it's a <strong>wake-up call</strong> for anyone working in the cloud or DevOps space.</p>
<p>But what does a "data wipe" really mean, and how can you protect yourself from it?</p>
<hr />
<h3 id="heading-what-is-a-data-wipe">⚠️ What Is a Data Wipe?</h3>
<p>A <strong>data wipe</strong> is the complete and often irreversible deletion of data from servers, disks, or databases. In KiranaPro's case, <strong>critical production EC2 instances were deleted</strong>, which may have included configuration, customer data, and operational logic — essentially <strong>bringing down core systems</strong>.</p>
<hr />
<h3 id="heading-the-real-lesson-monitoring-isnt-optional">🔍 The Real Lesson: Monitoring Isn’t Optional</h3>
<p>If you're a beginner in DevOps or cloud architecture, you might think <strong>“Monitoring is just optional.”</strong><br />But <strong>trust me — it’s a game-changer.</strong></p>
<p>Let me share my story.</p>
<hr />
<h3 id="heading-my-story-the-15-mistake">🧾 My Story: The $15 Mistake</h3>
<p>Last year, I spun up an EKS (Elastic Kubernetes Service) cluster for a project and enabled Prometheus monitoring. After my work, I <strong>forgot to tear it down</strong>.</p>
<p>Guess what happened next?</p>
<p>📩 I received an AWS bill for <strong>$15</strong> for unused resources still running in the background. It may not seem like a big amount, but it was a <strong>painful lesson</strong>.</p>
<p>If I had set up <strong>CloudWatch alarms</strong> or basic monitoring alerts, I could’ve shut it down in time — <strong>saving money and peace of mind</strong>.</p>
<hr />
<h3 id="heading-tools-kiranapro-couldve-used-and-so-can-you">🧰 Tools KiranaPro Could’ve Used (And So Can You)</h3>
<p>If KiranaPro was using Kubernetes or modern cloud architecture, they could’ve benefited from:</p>
<ul>
<li><p><strong>Prometheus + Grafana</strong> – For deep resource monitoring and metrics visualization</p>
</li>
<li><p><strong>CloudWatch</strong> – For real-time AWS resource alerts and logs</p>
</li>
<li><p><strong>ELK Stack (Elasticsearch, Logstash, Kibana)</strong> – To track and analyze logs</p>
</li>
<li><p><strong>Security tools like AWS GuardDuty or IAM anomaly detection</strong> – To catch unauthorized or risky activity before it’s too late</p>
</li>
</ul>
<p>Monitoring tools don’t prevent disasters, but they tell you <strong>where your infrastructure is weak</strong> and help you respond <strong>before</strong> it's too late.</p>
<hr />
<h3 id="heading-dont-just-monitor-plan-for-disaster-recovery">🧯 Don’t Just Monitor — Plan for Disaster Recovery</h3>
<p>Monitoring helps detect issues, but you should also <strong>build for recovery</strong>.</p>
<p>Here are two real-world projects I built for backup and disaster recovery:</p>
<ul>
<li><p>📦 <a target="_blank" href="https://github.com/Rudraksh2003/kubernetes-dynamic-storage-mysql"><strong>Kubernetes Dynamic Storage + MySQL Backup</strong></a><br />  A plug-and-play setup to dynamically provision storage volumes in Kubernetes clusters, keeping persistent data safe.</p>
</li>
<li><p>🛡️ <a target="_blank" href="https://github.com/Rudraksh2003/aws-terraform-jenkins-postgres-db-backup.git"><strong>Postgres DB Backup with AWS + Terraform + Jenkins</strong></a><br />  A robust, production-grade solution for automatically backing up Postgres databases using CI/CD pipelines.</p>
</li>
</ul>
<hr />
<h3 id="heading-final-takeaway">💡 Final Takeaway</h3>
<p>The story of KiranaPro is not just about a data breach — it’s about the <strong>importance of foresight</strong>.</p>
<p>Whether you’re a solo developer, a startup founder, or a DevOps engineer:</p>
<blockquote>
<p><strong>Monitoring isn’t a feature. It’s a survival mechanism.</strong></p>
</blockquote>
<p>Start small, monitor everything, automate backups, and plan for failure.</p>
<p>Because one small oversight could cost you more than just money — it could wipe out your entire business.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[Cloud Security Lessons: What I'm Learning as a DevOps Beginner]]></title><description><![CDATA[Introduction
As I've begun my journey into DevOps and cloud technologies, one area that's quickly captured my attention is cloud security. Coming from a development background, I initially focused on finding cost-effective storage solutions for my pr...]]></description><link>https://hashnode.rudrakshladdha.xyz/cloud-security-lessons-what-im-learning-as-a-devops-beginner</link><guid isPermaLink="true">https://hashnode.rudrakshladdha.xyz/cloud-security-lessons-what-im-learning-as-a-devops-beginner</guid><category><![CDATA[Devops]]></category><category><![CDATA[Cloud]]></category><category><![CDATA[Cloud Computing]]></category><category><![CDATA[Developer]]></category><category><![CDATA[Security]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[Docker]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[AWS]]></category><category><![CDATA[General Programming]]></category><category><![CDATA[technology]]></category><category><![CDATA[TechwithRudraksh]]></category><dc:creator><![CDATA[Rudraksh Laddha]]></dc:creator><pubDate>Mon, 28 Apr 2025 18:28:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1745864799433/17253329-1597-41b3-9fe1-cb2562440ffb.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>As I've begun my journey into DevOps and cloud technologies, one area that's quickly captured my attention is cloud security. Coming from a development background, I initially focused on finding cost-effective storage solutions for my projects, but I've since discovered that balancing cost, functionality, and security requires careful consideration.</p>
<h2 id="heading-my-initial-approach">My Initial Approach</h2>
<p>For a recent project requiring media storage for user uploads, my first instinct was to search for the most affordable option. After comparing prices across providers, I found several budget-friendly solutions that seemed perfect from a cost perspective.</p>
<pre><code class="lang-plaintext">// My initial selection criteria was primarily cost-based
const priorities = {
  cost: "High priority",
  features: "Medium priority",
  security: "Not fully considered"
};
</code></pre>
<p>However, as I began implementing the solution, I realized I had overlooked critical security considerations.</p>
<h2 id="heading-the-security-learning-curve">The Security Learning Curve</h2>
<h3 id="heading-understanding-access-controls">Understanding Access Controls</h3>
<p>One of my first discoveries was about access management. In AWS S3, for example, the default configuration doesn't automatically restrict access at the file level:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Basic S3 upload without proper access controls</span>
<span class="hljs-keyword">const</span> AWS = <span class="hljs-built_in">require</span>(<span class="hljs-string">'aws-sdk'</span>);
<span class="hljs-keyword">const</span> s3 = <span class="hljs-keyword">new</span> AWS.S3();

<span class="hljs-keyword">const</span> uploadParams = {
  <span class="hljs-attr">Bucket</span>: <span class="hljs-string">"my-media-bucket"</span>,
  <span class="hljs-attr">Key</span>: <span class="hljs-string">`user-uploads/<span class="hljs-subst">${fileName}</span>`</span>,
  <span class="hljs-attr">Body</span>: fileContent
};

s3.upload(uploadParams, <span class="hljs-function">(<span class="hljs-params">err, data</span>) =&gt;</span> {
  <span class="hljs-keyword">if</span> (err) <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Error"</span>, err);
  <span class="hljs-keyword">if</span> (data) <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Upload Success"</span>, data.Location);
});
</code></pre>
<p>This basic implementation would store the file, but doesn't implement proper access restrictions. Anyone with bucket access could potentially view all user files.</p>
<h3 id="heading-implementing-proper-security">Implementing Proper Security</h3>
<p>Through research and experimentation, I've learned several foundational security practices:</p>
<h4 id="heading-1-signed-urls-for-temporary-access">1. Signed URLs for Temporary Access</h4>
<p>Instead of making files publicly accessible, I've learned to generate time-limited signed URLs:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Generating a signed URL with expiration</span>
<span class="hljs-keyword">const</span> params = {
  <span class="hljs-attr">Bucket</span>: <span class="hljs-string">"my-media-bucket"</span>,
  <span class="hljs-attr">Key</span>: <span class="hljs-string">`user-uploads/<span class="hljs-subst">${userId}</span>/<span class="hljs-subst">${fileName}</span>`</span>,
  <span class="hljs-attr">Expires</span>: <span class="hljs-number">3600</span> <span class="hljs-comment">// URL expires in one hour</span>
};

<span class="hljs-keyword">const</span> signedUrl = s3.getSignedUrl(<span class="hljs-string">'getObject'</span>, params);
</code></pre>
<h4 id="heading-2-folder-structure-for-access-control">2. Folder Structure for Access Control</h4>
<p>Organizing files by user ID creates a foundation for permission-based access:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Organizing by user ID for better access control</span>
<span class="hljs-keyword">const</span> uploadPath = <span class="hljs-string">`user-uploads/<span class="hljs-subst">${userId}</span>/<span class="hljs-subst">${fileName}</span>`</span>;
</code></pre>
<h4 id="heading-3-iam-policies-for-fine-grained-control">3. IAM Policies for Fine-Grained Control</h4>
<p>Creating specific policies to restrict access based on user identity:</p>
<pre><code class="lang-json">{
  <span class="hljs-attr">"Version"</span>: <span class="hljs-string">"2012-10-17"</span>,
  <span class="hljs-attr">"Statement"</span>: [
    {
      <span class="hljs-attr">"Effect"</span>: <span class="hljs-string">"Allow"</span>,
      <span class="hljs-attr">"Action"</span>: <span class="hljs-string">"s3:GetObject"</span>,
      <span class="hljs-attr">"Resource"</span>: <span class="hljs-string">"arn:aws:s3:::my-media-bucket/user-uploads/${cognito-identity.amazonaws.com:sub}/*"</span>
    }
  ]
}
</code></pre>
<h2 id="heading-what-im-still-learning">What I'm Still Learning</h2>
<p>I'm continuing to explore more advanced security concepts:</p>
<ul>
<li><p><strong>Server-side encryption</strong> for data at rest</p>
</li>
<li><p><strong>Client-side encryption</strong> before upload for sensitive data</p>
</li>
<li><p><strong>Multi-factor authentication</strong> for admin access</p>
</li>
<li><p><strong>Monitoring and alerting</strong> for unusual access patterns</p>
</li>
</ul>
<h2 id="heading-my-takeaways-so-far">My Takeaways So Far</h2>
<p>As a beginner in this space, I've realized that:</p>
<ol>
<li><p><strong>Security isn't optional</strong> - it should be considered from the initial architecture phase</p>
</li>
<li><p><strong>Major cloud providers offer robust security tools</strong> - but you need to learn how to implement them correctly</p>
</li>
<li><p><strong>Documentation is your friend</strong> - AWS, Azure, and GCP all provide extensive security best practices</p>
</li>
<li><p><strong>The cheapest solution isn't always the best</strong> - sometimes paying a bit more provides significant security benefits</p>
</li>
</ol>
<h2 id="heading-next-steps-on-my-learning-journey">Next Steps on My Learning Journey</h2>
<p>I'm focusing on:</p>
<ul>
<li><p>Obtaining AWS Security certification</p>
</li>
<li><p>Building projects with security as a primary consideration</p>
</li>
<li><p>Contributing to open-source projects focused on cloud security</p>
</li>
<li><p>Documenting what I learn to help other beginners</p>
</li>
</ul>
<p>I'd love to hear from more experienced professionals about what security considerations I might still be missing. This is just the beginning of my DevOps journey, and I'm excited to continue learning and growing in this field.</p>
<hr />
<p><em>This article represents my current understanding as I learn. I welcome corrections and suggestions from more experienced practitioners.</em></p>
]]></content:encoded></item></channel></rss>