<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Cloud Computing on Nalar</title>
    <link>https://nalar.dev/cloud-computing/</link>
    <description>Recent content in Cloud Computing on Nalar</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 01 Sep 2026 00:00:00 +0700</lastBuildDate>
    <atom:link href="https://nalar.dev/cloud-computing/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Blue-Green Deployments for Safer Zero-Downtime Releases</title>
      <link>https://nalar.dev/blue-green-deployments-zero-downtime/</link>
      <pubDate>Tue, 01 Sep 2026 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/blue-green-deployments-zero-downtime/</guid>
      <description>&lt;p&gt;A blue-green deployment keeps two production-capable application environments. One serves live traffic while the other receives the new release. After validation, traffic is switched to the candidate environment.&lt;/p&gt;&#xA;&lt;p&gt;The pattern can make rollback fast, but it does not automatically make a release safe. Database changes, background jobs, caches, and external side effects can still make an old version incompatible with the new state.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-basic-release-sequence&#34;&gt;The basic release sequence&lt;/h2&gt;&#xA;&lt;p&gt;Assume &lt;strong&gt;blue&lt;/strong&gt; is currently live and &lt;strong&gt;green&lt;/strong&gt; will run the new version.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Designing Stateless Web Services for Horizontal Scaling</title>
      <link>https://nalar.dev/stateless-services-horizontal-scaling/</link>
      <pubDate>Tue, 01 Sep 2026 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/stateless-services-horizontal-scaling/</guid>
      <description>&lt;p&gt;Horizontal scaling adds application replicas instead of making one machine larger. The load balancer can send each request to any healthy instance, which only works reliably when instances do not depend on unique local state.&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;Stateless&amp;rdquo; does not mean the application has no state. It means durable or shared state lives outside an individual process so any replica can continue serving the workload.&lt;/p&gt;&#xA;&lt;h2 id=&#34;identify-hidden-local-state&#34;&gt;Identify hidden local state&lt;/h2&gt;&#xA;&lt;p&gt;A service may appear stateless while depending on:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Idempotent Event Consumers for At-Least-Once Delivery</title>
      <link>https://nalar.dev/idempotent-event-consumers-at-least-once-delivery/</link>
      <pubDate>Tue, 01 Sep 2026 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/idempotent-event-consumers-at-least-once-delivery/</guid>
      <description>&lt;p&gt;Many queues and event brokers provide at-least-once delivery: a message that has been accepted can be delivered again when acknowledgements are lost, consumers crash, visibility timeouts expire, or the broker retries after uncertain outcomes.&lt;/p&gt;&#xA;&lt;p&gt;Duplicates are therefore not exceptional. A robust consumer should assume that the same logical event can arrive more than once.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-duplicates-happen&#34;&gt;Why duplicates happen&lt;/h2&gt;&#xA;&lt;p&gt;Consider this sequence:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;a consumer receives an event;&lt;/li&gt;&#xA;&lt;li&gt;it updates the database successfully;&lt;/li&gt;&#xA;&lt;li&gt;the process crashes before acknowledging the message;&lt;/li&gt;&#xA;&lt;li&gt;the broker makes the message visible again;&lt;/li&gt;&#xA;&lt;li&gt;another consumer receives it.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The broker cannot know that the database update happened. Redelivery is the safer choice.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reverse Proxy with Nginx and Go for Microservices</title>
      <link>https://nalar.dev/reverse-proxy-with-nginx-and-go-for-microservices/</link>
      <pubDate>Sat, 06 Sep 2025 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/reverse-proxy-with-nginx-and-go-for-microservices/</guid>
      <description>&lt;p&gt;As an application grows, splitting it into smaller services can make independent deployment and scaling easier. For example:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Product service&lt;/strong&gt; on port 8080&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Blog service&lt;/strong&gt; on port 8081&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Users should not need to know those internal ports. An &lt;strong&gt;Nginx reverse proxy&lt;/strong&gt; can expose both services under one domain and route requests by URL path.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-configure-the-nginx-reverse-proxy&#34;&gt;1. Configure the Nginx Reverse Proxy&lt;/h2&gt;&#xA;&lt;p&gt;Create a site configuration:&lt;/p&gt;&#xA;&lt;div &#xA;    x-data=&#34;{&#xA;        code: $el.querySelector(&#39;code&#39;).innerText&#xA;    }&#34;&#xA;    class=&#34;relative my-4 rounded-lg group&#34;&#xA;&gt;&#xA;    &lt;button&#xA;        @click=&#34;navigator.clipboard.writeText(code); $el.innerText = &#39;Copied!&#39;; setTimeout(() =&gt; $el.innerText = &#39;Copy&#39;, 2000)&#34;&#xA;        class=&#34;absolute top-2 right-2 bg-neutral-700 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity&#34;&#xA;    &gt;&#xA;        Copy&#xA;    &lt;/button&gt;&#xA;    &#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /etc/nginx/sites-available/yourdomain.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Add:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Nginx as a Reverse Proxy for a Go Application</title>
      <link>https://nalar.dev/using-nginx-as-a-reverse-proxy-for-a-go-application/</link>
      <pubDate>Sat, 24 Aug 2024 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/using-nginx-as-a-reverse-proxy-for-a-go-application/</guid>
      <description>&lt;p&gt;A Go web application often listens directly on an application port such as &lt;code&gt;:8080&lt;/code&gt;. If you want users to access it through a normal domain on port &lt;code&gt;80&lt;/code&gt; or &lt;code&gt;443&lt;/code&gt;, you can place &lt;strong&gt;Nginx&lt;/strong&gt; in front of it as a &lt;em&gt;reverse proxy&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Using Nginx in front of a Go service provides several benefits:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Client requests reach Nginx before being forwarded to the Go application.&lt;/li&gt;&#xA;&lt;li&gt;TLS termination can be handled at the proxy layer.&lt;/li&gt;&#xA;&lt;li&gt;Multiple application instances can be load balanced.&lt;/li&gt;&#xA;&lt;li&gt;Static assets can be served separately when that architecture makes sense.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This guide shows a basic setup.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
