<?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>Forem: Salaheddine Hali</title>
    <description>The latest articles on Forem by Salaheddine Hali (@salaheddinee).</description>
    <link>https://forem.com/salaheddinee</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%2F3912167%2F89e67724-ab29-4284-a127-1d6e6cd9b92c.jpg</url>
      <title>Forem: Salaheddine Hali</title>
      <link>https://forem.com/salaheddinee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/salaheddinee"/>
    <language>en</language>
    <item>
      <title>Building a Full Backend Infrastructure with Docker (Nginx, MariaDB, Redis)</title>
      <dc:creator>Salaheddine Hali</dc:creator>
      <pubDate>Mon, 04 May 2026 13:55:41 +0000</pubDate>
      <link>https://forem.com/salaheddinee/building-a-full-backend-infrastructure-with-docker-nginx-mariadb-redis-h61</link>
      <guid>https://forem.com/salaheddinee/building-a-full-backend-infrastructure-with-docker-nginx-mariadb-redis-h61</guid>
      <description>&lt;p&gt;As part of my journey in backend development, I built a complete infrastructure using Docker and Docker Compose. The goal was to simulate a real-world production environment with multiple services working together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This project is composed of several services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nginx&lt;/strong&gt; → Reverse proxy &amp;amp; web server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MariaDB&lt;/strong&gt; → Database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redis&lt;/strong&gt; → Caching system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FTP Server&lt;/strong&gt; → File management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adminer&lt;/strong&gt; → Database interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portainer&lt;/strong&gt; → Container management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each service runs in its own container, ensuring isolation and scalability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Docker?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Docker allows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Isolation between services&lt;/li&gt;
&lt;li&gt;Easy debugging (if one service fails, others stay running)&lt;/li&gt;
&lt;li&gt;Reproducible environments&lt;/li&gt;
&lt;li&gt;Scalability for future improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Challenges I Faced&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuring Nginx to handle multiple services&lt;/li&gt;
&lt;li&gt;Managing environment variables securely&lt;/li&gt;
&lt;li&gt;Connecting containers via Docker networks&lt;/li&gt;
&lt;li&gt;Optimizing performance under load&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I Learned&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How reverse proxies work (Nginx)&lt;/li&gt;
&lt;li&gt;Managing multi-container applications&lt;/li&gt;
&lt;li&gt;Basics of system design&lt;/li&gt;
&lt;li&gt;Debugging distributed systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Testing &amp;amp; Performance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I tested the system by simulating multiple requests and checking how the server behaves under load.&lt;/p&gt;

&lt;p&gt;Key point:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Each worker in Nginx can handle multiple connections, but bad configuration can lead to bottlenecks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This project helped me understand how real backend systems are structured and deployed. It’s a big step toward building scalable and production-ready applications.&lt;/p&gt;

&lt;p&gt;Project Link&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Trojalarick/Inception" rel="noopener noreferrer"&gt;https://github.com/Trojalarick/Inception&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next step: Improving scalability and handling high traffic (10k+ requests)&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%2Fcdy5svv4134qkcxz7s45.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%2Fcdy5svv4134qkcxz7s45.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
