Distributed tracing means different things to different people - depends on whom you ask. In this post, we will look at distributed tracing in the context of debugging web application errors using logs in a microservices environment. We will also figure out the way to implement distributed tracing in the least disruptive manner. The aim … Continue reading Distributed Tracing
Tag: scaling
Kafka Is Not A Queue
How many times have you been part of a conversation where someone goes - "Let us use a queue like Kafka." And you are like Kafka is a distributed stream processor. There is a gulf of difference between a queue and a distributed stream processor. Kafka happens to be the most popular distributed stream processor; … Continue reading Kafka Is Not A Queue
Distributed System Fundamentals With An Imaginary Key-Value Store
The CAP theorem says that in the event of a network partition, a distributed system can be either consistent or available, not both. Let us first define some of the terms in the CAP theorem. A distributed system is a group of independent computers coordinating with each other to solve a problem. The group of … Continue reading Distributed System Fundamentals With An Imaginary Key-Value Store
Now You See Me
In the modern software world, where micro-services are de rigueur, observability of systems is paramount. If you do not have a way to observe your application, you are as good as dead. W A T A R I The first step towards embracing observability is figuring out what to track. Broadly, we can categorize software … Continue reading Now You See Me
Poor Man’s Anomaly Detection
You have a feature where if someone signs up on your product, you create a wallet for that person and top it up with complimentary money. Your organization swears by micro-services; hence sign-up logic is in one service and wallet creation and crediting is in another service. Once a user signs up, sign up service … Continue reading Poor Man’s Anomaly Detection
Concurrency Models
We can roughly classify concurrency models into: 1. Thread based concurrency. 2. Event based concurrency. Imagine that you run a store with only one customer service representative. As soon as a customer walks in, the customer service representative greets the customer with a quick hello saying – “If you need any help, give me a … Continue reading Concurrency Models
Ode To Queues
If you have a producer with an uneven rate of production and a consumer that cannot keep pace with the producer at its peak, use a queue. If you have a workload that need not be addressed synchronously, use a queue. If your customer-facing application is riddled with workloads that can be deferred, move these … Continue reading Ode To Queues
SQS versus Kinesis
A lot of people are confused between SQS and Kinesis. In some ways, both act as a queue, but there is a massive difference between the two. SQS is a queue, adheres to FIFO and promises at least once delivery. Kinesis is a distributed stream processor. A simplistic and hand-wavy way to think of Kinesis is like … Continue reading SQS versus Kinesis