How a simpl-ish problem can scale in production environments

Building a 500K req/s IP Geolocation Service: Radix Trees, .NET 10, and the Pursuit of Sub-5ms Latency

Story behind this blog post A couple of months ago, a friend of mine approached me with a challenging problem: building a service that can identify Iranian ISPs from IP addresses at an extreme scale. The requirements were brutal: around 500,000 requests per second with a P99 latency of under 5 milliseconds. As a reference for the data load, Iran has about 10,000,000 (Ten Million) IPs allocated across roughly 50,000 CIDR ranges, and the system was gonna be in the hot path of a very high-load environment. ...

December 30, 2025 · 11 min · Kia Raad

A day at Cafe Ertebat: On Seniority, Architecture, and Quiet Value

A few days ago I attended a small, invite-only tech gathering hosted by Cafe Ertebat. Think of it as a low-key salon: about a couple dozen people, all of them with at least a decade of experience, almost all with shiny titles: CTOs, VPs of Engineering, technical leads, founders. It was the kind of room you’d expect to be intimidating. It wasn’t. And that was the interesting part. Walking into an “Elite” Room I was invited through two friends and colleagues who referred me to the host. That alone set a certain expectation in my head: if this is curated, and everyone is hand-picked, then the conversation is probably going to be sharp, opinionated, and uncomfortably insightful. ...

November 18, 2025 · 7 min · Kia Raad

DDD in Real Life: what it is, what it isn't, and when to reach for it

I was midway through a system-design talk when a familiar question landed: So… is DDD an architecture or a pattern? The room had many .NET folks. Heads tilted. Some smiled the “here we go” smile. Let’s answer it simply, and then go a little deeper; without buzzword gymnastics. A simple definition of DDD Domain-Driven Design (DDD) is a way of designing software by centering everything on the language and rules of the business. It gives you two kinds of tools: ...

October 3, 2025 · 5 min · Kia Raad

Comparing Change Logs and Event Sourcing: Choosing the Right Approach for Your System

Introduction In the ever-evolving landscape of software development, tracking changes to data is a fundamental requirement. Whether for auditing, debugging, compliance, or analytics, maintaining a history of changes enhances transparency and accountability within a system. Two prevalent approaches to capturing these changes are storing a change log and using event sourcing. While they share common goals, they differ significantly in implementation and suitability depending on the system’s needs. This blog post delves into the similarities and differences between change logs and event sourcing, assesses their applicability through practical examples, and provides guidance on choosing the right approach for your system. ...

October 1, 2024 · 7 min · Kia Raad

Becoming a Solutions Architect

The professional path of a Software Solutions Architect I’ve been working in software for more than 12 years now. I’ve been doing help desk stuff, database management, IT work, networking, low-level and high-level programming, hacking and penetration testing and everything in between. All these experiences and upportunities that I have had, helped me becoming me more well-rounded engineer which is a cruitial attribute to have if one wantes to embark on the mission to becoming an architect, specially a Solutions Architect. ...

July 14, 2024 · 7 min · Kia Raad