<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Technology on Akshay Deshpande</title>
    <link>https://akshayd-dev.pages.dev/tags/technology/</link>
    <description>Recent content in Technology on Akshay Deshpande</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 30 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://akshayd-dev.pages.dev/tags/technology/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Metrics Types - When to use what ?</title>
      <link>https://akshayd-dev.pages.dev/posts/metrics-types-when-to-use-what/</link>
      <pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://akshayd-dev.pages.dev/posts/metrics-types-when-to-use-what/</guid>
      <description>&lt;p&gt;This writeup talks about different metric type that an application can emit as telemetry. It intends to cover the case of when to use which metric types and the usecase for them.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://akshayd-dev.pages.dev/posts/metrics-types-when-to-use-what/images/image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Metrics is one of the oldest forms of telemetry. There are many APM solutions, whose billing model runs on the number of metrics you send to them. But it is often not clear to app devs on what kind of metrics to emit from applications. Infact, the types of metrics can be confusing sometimes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prometheus: Static/Dynamic scraping on EKS</title>
      <link>https://akshayd-dev.pages.dev/posts/prometheus-static-dynamic-scraping-on-eks/</link>
      <pubDate>Thu, 20 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://akshayd-dev.pages.dev/posts/prometheus-static-dynamic-scraping-on-eks/</guid>
      <description>&lt;p&gt;This note is a mental model for &lt;strong&gt;how Prometheus discovers and scrapes metrics in Kubernetes&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The lens I want to keep throughout is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Where will the scrape config file sit?&lt;/strong&gt;&lt;br&gt;
(Prometheus repo vs application repo)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;In which namespace will the serviceMonitor sit?&lt;/strong&gt;&lt;br&gt;
(and how Prometheus finds it)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At a high level there are two ways to tell Prometheus about a &lt;code&gt;/metrics&lt;/code&gt; endpoint:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Static via&lt;/strong&gt; in the Prometheus config file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dynamic via&lt;/strong&gt; (CRD from Prometheus Operator) with label‑based discovery.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leader/Follower relationship with Primary/Replicas</title>
      <link>https://akshayd-dev.pages.dev/posts/leader-follower-relationship-with-primary-replicas/</link>
      <pubDate>Mon, 10 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://akshayd-dev.pages.dev/posts/leader-follower-relationship-with-primary-replicas/</guid>
      <description>&lt;p&gt;In most of distributed datastore systems, there are a lot of techical terms to describe the behavior of the system. While these terms, like, &amp;ldquo;Leader&amp;rdquo;, &amp;ldquo;Follower&amp;rdquo;, &amp;ldquo;Replication&amp;rdquo;, &amp;ldquo;Consistency&amp;rdquo;, etc., are widely used and helpful, what I feel missing are the details about internal relationship between these terms.&lt;br&gt;
Analogically, while the map of the field is great, it is also important to understand how the soil, water, and sunlight interact to help the plants grow.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Encoding: From the POV of Dataflow paths</title>
      <link>https://akshayd-dev.pages.dev/posts/encoding-from-the-pov-of-dataflow-paths/</link>
      <pubDate>Wed, 22 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://akshayd-dev.pages.dev/posts/encoding-from-the-pov-of-dataflow-paths/</guid>
      <description>&lt;p&gt;When studying Chapter 4 of &lt;em&gt;&lt;strong&gt;Designing Data-Intensive Applications&lt;/strong&gt;&lt;/em&gt; (Encoding and Evolution), I quickly encounters a level of granularity that seems &lt;em&gt;mechanical&lt;/em&gt;: binary formats, schema evolution, and serialization techniques. Yet behind this technical scaffolding lies something conceptually deeper. Encoding is not merely a process of serialization; it is the very grammar through which distributed systems express and interpret meaning. It is the act that allows a system’s internal thoughts — the data in memory — to be externalized into a communicable form. Without it, a database, an API, or a Kafka stream would be nothing but incomprehensible noise.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Design Philosophy: Observability</title>
      <link>https://akshayd-dev.pages.dev/posts/philosophy-of-design-observability/</link>
      <pubDate>Sun, 14 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://akshayd-dev.pages.dev/posts/philosophy-of-design-observability/</guid>
      <description>&lt;p&gt;I enjoy philosophy. Stoic philosophy in particular.&lt;br&gt;
Philosophy, I think, helps us revalidate our purpose. It acts as a yard stick and makes sure that we are not moving away from our First-Principles.&lt;/p&gt;
&lt;p&gt;Applying the same to Software Engineering, in my opinion, every team should have a &amp;ldquo;Design Philosophy&amp;rdquo;. What is that one yard stick which teams can use for making better decisions.&lt;br&gt;
Infact, it is done in some forms in a few cases. Some call it Guiding-Principles. Some call it MVPs. I call it &amp;ldquo;&lt;code&gt;Design Philosophy&lt;/code&gt;&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>When to Emit What O11y Signal?</title>
      <link>https://akshayd-dev.pages.dev/posts/when-to-emit-what-o11y-signal/</link>
      <pubDate>Thu, 04 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://akshayd-dev.pages.dev/posts/when-to-emit-what-o11y-signal/</guid>
      <description>&lt;p&gt;The intention of this page is to put together the &lt;em&gt;Observability Signal Guidelines&lt;/em&gt; which will provide the required visibility into the systems without hurting the cost aspect of the solution.&lt;/p&gt;
&lt;p&gt;Three basic observability signals that any application emits are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Metrics,&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Traces and&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Logs&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The general question is - &lt;em&gt;&lt;strong&gt;When to emit what signal?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The answer lies in the &lt;em&gt;intent&lt;/em&gt; behind the signal being emitted. &lt;em&gt;&lt;strong&gt;What do you intend to measure with the Observability signal that you are emitting?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Networking and Protocols: 101 Notes</title>
      <link>https://akshayd-dev.pages.dev/posts/networking-and-protocols-101-notes/</link>
      <pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://akshayd-dev.pages.dev/posts/networking-and-protocols-101-notes/</guid>
      <description>&lt;p&gt;I recently did a brush up course on Networking/Protocols 101&amp;rsquo;s. Making my notes public.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#networking-basics-protocols&#34;&gt;Networking Basics / Protocols:&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#mental-model-to-think-about-all-protocols&#34;&gt;Mental model to think about all protocols:&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#a-few-notes-about-different-protocols&#34;&gt;A few notes about different Protocols:&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#network-layer-protocol&#34;&gt;Network layer protocol:&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#transport-layer-protocol&#34;&gt;Transport layer protocol:&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#tcp&#34;&gt;TCP:&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#udp&#34;&gt;UDP:&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#other-protocols&#34;&gt;Other Protocols:&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#http&#34;&gt;HTTP:&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#smtp&#34;&gt;SMTP:&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#xmpp&#34;&gt;XMPP:&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#mqtt&#34;&gt;MQTT:&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#aws-networking&#34;&gt;AWS Networking:&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#local-zone&#34;&gt;Local Zone:&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#edge-location&#34;&gt;Edge location:&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#understanding-ipv4-ipv6&#34;&gt;Understanding IPv4, IPv6&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#ipv4&#34;&gt;IPv4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#ipv6&#34;&gt;IPv6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#classes-ipv4&#34;&gt;Classes IPv4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#how-to-read-cidr-noation&#34;&gt;How to read CIDR noation:&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#aws-vpc&#34;&gt;AWS VPC:&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#interacting-with-vpc&#34;&gt;Interacting with VPC:&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#internet-gateway-igw&#34;&gt;Internet Gateway (IGW)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#subnet&#34;&gt;Subnet:&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#route-table&#34;&gt;Route table&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://akshayd.dev/2025/06/19/networking-and-protocols-101-notes/#nacl&#34;&gt;NACL:&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;networking-basics--protocols&#34;&gt;Networking Basics / Protocols:&lt;/h1&gt;
&lt;p&gt;There are 7 layers of communications as defined in OSI (Open systems Interconnection) model&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enhancing Observability with OTel Custom Processors</title>
      <link>https://akshayd-dev.pages.dev/posts/enhancing-observability-with-otel-custom-processors/</link>
      <pubDate>Sun, 27 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://akshayd-dev.pages.dev/posts/enhancing-observability-with-otel-custom-processors/</guid>
      <description>&lt;p&gt;Observability is crucial for modern distributed systems, enabling engineers to monitor, debug, and optimize their applications effectively. OpenTelemetry (Otel) has emerged as a comprehensive, vendor-neutral observability framework for collecting, processing, and exporting telemetry data such as traces, metrics, and logs.&lt;/p&gt;
&lt;p&gt;This blog post will explore how custom processors in OpenTelemetry can significantly enhance your observability strategy, making it highly customizable and powerful.&lt;/p&gt;
&lt;p&gt;The repo link where I have implemented a very simple Otel-Custom-Processor.&lt;br&gt;
&lt;a href=&#34;https://github.com/AkshayD110/otel-custom-processor/tree/master&#34;&gt;https://github.com/AkshayD110/otel-custom-processor/tree/master&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Memory management : Java containers on K8s</title>
      <link>https://akshayd-dev.pages.dev/posts/memory-management-java-containers-on-k8s/</link>
      <pubDate>Sat, 08 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://akshayd-dev.pages.dev/posts/memory-management-java-containers-on-k8s/</guid>
      <description>&lt;p&gt;This page documents a few aspects of memory management on Java containers on K8s clusters.&lt;/p&gt;
&lt;p&gt;For java containers, memory management on K8s have various factors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Xmx and Xms limits managed by java&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Request/limit values for the container&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;HPA policies used for scaling the number of pods&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Misconfigurations / misunderstanding of any of these parameters leads to OOMs of java containers on K8s clusters.&lt;/p&gt;
&lt;h3 id=&#34;memory-management-on-java-containers&#34;&gt;Memory management on java containers:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-XX:+UseContainerSupport&lt;/code&gt; is enabled by default form java 10+&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
