<?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: Krishnadev R</title>
    <description>The latest articles on Forem by Krishnadev R (@krishdev).</description>
    <link>https://forem.com/krishdev</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%2F3762643%2F032fd203-7f3c-43d7-92d9-2318b71d05de.jpeg</url>
      <title>Forem: Krishnadev R</title>
      <link>https://forem.com/krishdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/krishdev"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Krishnadev R</dc:creator>
      <pubDate>Tue, 10 Feb 2026 02:58:47 +0000</pubDate>
      <link>https://forem.com/krishdev/-3i55</link>
      <guid>https://forem.com/krishdev/-3i55</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/krishdev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3762643%2F032fd203-7f3c-43d7-92d9-2318b71d05de.jpeg" alt="krishdev"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/krishdev/building-a-production-grade-infra-for-my-project-with-zero-users-5hl7" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Building a production grade infra for my project with Zero users.&lt;/h2&gt;
      &lt;h3&gt;Krishnadev R ・ Feb 9&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#docker&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#backenddevelopment&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>devops</category>
      <category>aws</category>
      <category>docker</category>
      <category>backenddevelopment</category>
    </item>
    <item>
      <title>Building a production grade infra for my project with Zero users.</title>
      <dc:creator>Krishnadev R</dc:creator>
      <pubDate>Mon, 09 Feb 2026 19:13:35 +0000</pubDate>
      <link>https://forem.com/krishdev/building-a-production-grade-infra-for-my-project-with-zero-users-5hl7</link>
      <guid>https://forem.com/krishdev/building-a-production-grade-infra-for-my-project-with-zero-users-5hl7</guid>
      <description>&lt;p&gt;So I had just finished building my fitness/progress tracker app's backend, basically a node app with Postgresql. It was already deployed on a ec2 machine which I go ssh into, take a pull and create the new image and run it.But at that time I thought this setup is boring. let's complicate it and make it production level, like how big apps do, so I did take refference of one production app I'm working on for the setup, read a few blogs, did gpt, understood one of the most common/stable setups in the industry. idk if that is even right. please do correct me if I'm not.&lt;/p&gt;

&lt;p&gt;So after the research my data flow was ready. planned the entire infra setup for the application. below is an image I created in erasor:&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%2F1xyg1zenz17owjbk8lr6.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%2F1xyg1zenz17owjbk8lr6.png" alt=" " width="800" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so I'll give a walkthrough of the flow of a request,when a user makes a request, it hits our 'alb' - i.e is a layer 7 load balancer sitting in the public subnet and has its own security group which allows only http/https.&lt;/p&gt;

&lt;p&gt;The alb then forwards the request to a target group, which maintains a list of healthy ec2 instances. The Target Group constantly health-checks our instances by hitting the &lt;code&gt;/health&lt;/code&gt; endpoint every 30 seconds. If an instance fails two consecutive checks, it's marked unhealthy and traffic stops flowing to it.&lt;/p&gt;

&lt;p&gt;These ec2 instances are managed by an auto scaling group, which ensures we always have a minimum of 2 instances running and can scale up to 10 based on CPU load. The instances sit in private subnets with no public IPs — they're protected by a security group, which only accepts traffic from the ALB.&lt;/p&gt;

&lt;p&gt;ok so atlast it reaches our ec2 machine. there I've setup nginx, there wasn't any need but i just wanted to experiment, so nginx acting as a reverse proxy inside the ec2 machine proxies our request to our dockerized containers. so if we have multiple containers running we can proxy requests to those multiple containers. even tho I haven't set that up. will do it some upcoming day tho ig.&lt;/p&gt;

&lt;p&gt;the app processes the request and if it needs data, it talks to our postgresql database on rds. the database sits in its own private subnet with a security group that only lets our ec2 instances connect to it&lt;/p&gt;

&lt;p&gt;once the app finishes processing, the response travels back through the same path: docker container → nginx → alb → user. this might look like a long journey, long journey it feels now that I'm writing it down.so this would be the req flow.&lt;/p&gt;

&lt;p&gt;and behind the scene we have promtail, an agent that ships logs to our monitoring server. where we have grafana+loki setup. which helps us monitor the load and logs of our zero user app.&lt;/p&gt;

&lt;p&gt;and let me just wrap this up with the ci/cd part. whenever i push or merge to the main branch, a github actions workflow kicks off. it builds a docker image of the latest code, pushes it to ecr (amazon's container registry), then connects to each ec2 instance via ssm and does a rolling deployment — pulls the new image, stops the old container, starts the new one, runs a health check. waits 45 seconds between instances so there's always at least one server handling traffic. zero downtime deployments.&lt;/p&gt;

&lt;p&gt;so guys any thoughts on how this could be better or any mistakes i made? idk any feedback would be appreciated&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>docker</category>
      <category>backenddevelopment</category>
    </item>
  </channel>
</rss>
