<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hamid</title>
    <description>The latest articles on DEV Community by Hamid (@hamidlabs).</description>
    <link>https://dev.to/hamidlabs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3855908%2Ff4523321-27ad-4911-b392-201d88907a74.jpg</url>
      <title>DEV Community: Hamid</title>
      <link>https://dev.to/hamidlabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hamidlabs"/>
    <language>en</language>
    <item>
      <title>I Built a Distributed Systems Simulator So You Don't Need Cloud to Learn Infrastructure</title>
      <dc:creator>Hamid</dc:creator>
      <pubDate>Thu, 02 Apr 2026 14:17:05 +0000</pubDate>
      <link>https://dev.to/hamidlabs/i-built-a-distributed-systems-simulator-so-you-dont-need-cloud-to-learn-infrastructure-3n2f</link>
      <guid>https://dev.to/hamidlabs/i-built-a-distributed-systems-simulator-so-you-dont-need-cloud-to-learn-infrastructure-3n2f</guid>
      <description>&lt;h2&gt;
  
  
  🚀 I Built a Distributed Systems Simulator So You Don't Need Cloud to Learn Infrastructure
&lt;/h2&gt;

&lt;p&gt;Every tech company runs the same 6 layers:&lt;/p&gt;

&lt;p&gt;🌐 Traffic Entry → Nginx, HAProxy, API Gateway&lt;br&gt;
⚙️ Orchestration → Kubernetes, Nomad&lt;br&gt;
🧩 Service Mesh → Envoy, Istio&lt;br&gt;
🗄️ Data → PostgreSQL, Redis, MongoDB, Cassandra&lt;br&gt;
📨 Messaging → Kafka, RabbitMQ, NATS&lt;br&gt;
📊 Observability → Prometheus, Grafana, Jaeger&lt;/p&gt;

&lt;p&gt;But learning these requires infrastructure. Multiple machines. Cloud accounts. Money.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;DistSim&lt;/strong&gt; to remove that barrier.&lt;/p&gt;
&lt;h2&gt;
  
  
  🧠 What It Does
&lt;/h2&gt;

&lt;p&gt;DistSim runs on your laptop. Each "machine" is a real Ubuntu container. You get:&lt;/p&gt;

&lt;p&gt;🖥️ Visual canvas to create and connect machines&lt;br&gt;
💻 Real terminals, SSH into any machine from your browser&lt;br&gt;
📦 22 installable services from Nginx to Vault&lt;br&gt;
🧑‍💻 Built in code editor for Go, Node.js, Python&lt;br&gt;
💥 Chaos engineering to inject failures and watch degradation&lt;br&gt;
🧪 API tester to send requests and run load tests&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfxr7wfp3bsprcg8vbqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfxr7wfp3bsprcg8vbqz.png" alt="DistSim workspace" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🏗️ Example: Build a Load Balanced System
&lt;/h2&gt;

&lt;p&gt;1️⃣ Create a lab with the "Medium Company" template&lt;br&gt;
2️⃣ You get 1 load balancer, 3 app servers, database, Redis, 3 Kafka brokers&lt;br&gt;
3️⃣ Install Nginx on the LB and configure upstream round robin&lt;br&gt;
4️⃣ Write a Node.js API on each app server&lt;br&gt;
5️⃣ Set up PostgreSQL replication&lt;br&gt;
6️⃣ Send 1000 requests through the load balancer and watch distribution&lt;br&gt;
7️⃣ Kill one app server and Nginx routes around it&lt;br&gt;
8️⃣ Add 500ms delay to database and watch response times spike&lt;br&gt;
9️⃣ Add Redis caching and watch response times drop&lt;/p&gt;

&lt;p&gt;All of this happens on &lt;code&gt;localhost&lt;/code&gt;. No cloud. No cost.&lt;/p&gt;
&lt;h2&gt;
  
  
  ⚡ Install
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/hamidlabs/distsim.git
&lt;span class="nb"&gt;cd &lt;/span&gt;distsim &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bash install.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Auto starts. Open &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Manage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;distsim stop
distsim start
distsim status
distsim logs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🧱 Tech Stack
&lt;/h2&gt;

&lt;p&gt;🟦 Backend → Go, chi router, Docker Engine API&lt;br&gt;
🟪 Frontend → Next.js, React Flow, xterm.js, Monaco Editor&lt;br&gt;
🟨 Containers → Docker, each machine is Ubuntu container&lt;br&gt;
🟩 State → Zustand frontend, in memory backend&lt;/p&gt;

&lt;h2&gt;
  
  
  🔮 What's Next
&lt;/h2&gt;

&lt;p&gt;💾 Persistent sessions that survive restart&lt;br&gt;
🎯 Guided challenges like payment service failure recovery&lt;br&gt;
☸️ Kubernetes simulation mode&lt;br&gt;
👥 Collaborative labs with teammates&lt;/p&gt;

&lt;p&gt;⭐ GitHub: &lt;a href="https://github.com/hamidlabs/distsim" rel="noopener noreferrer"&gt;https://github.com/hamidlabs/distsim&lt;/a&gt; 🚀&lt;/p&gt;

&lt;p&gt;If you are learning distributed systems, preparing for system design interviews, or teaching infrastructure, give it a try.&lt;br&gt;
Stars and feedback welcome 🙌&lt;/p&gt;

</description>
      <category>distributedsystems</category>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
