RSSAmplifier

Blog

The Trojan (Apoorv Tyagi)

The Senior Engineer’s Playbook: Real-World Case Studies in Computer Science and Software Design.

apoorvtyagi.techRSS feed ↗20 posts

Latest posts

How to Size Java Database Connection Pools in Kubernetes

Introduction I was reviewing a PR at work a month ago where a new application was setting up its database service, and I saw the connection pool properties, which made me think about how a small confi

What is Jib? A Complete Guide to Java Containerization Without Dockerfiles

Introduction When I joined PayPay, one of the first things I tried to understand was how our services were containerized. A common exercise when joining a new backend team is to look at the Dockerfile

Kafka Consumer Container Restarts in Kubernetes: A Production Case Study

Background At my current org, I got introduced to a very fun tool, PagerDuty - because who doesn't love being woken up at 3:31 AM? A similar alert flared up for one of our merchant services. While it mercifully avoided the 3 AM slot, the diagnostic w...

How we solved cache invalidation in Kubernetes with a headless service

⬅️ Background At my previous organization, we were building a health platform, and one of the most critical, high-traffic components was our Lab test booking service. One of its core functions is to serve package details like inclusions, prices, and ...

Going Vernacular: Engineering Our Way to Process Multilingual Names

Introduction At our current organization, earlier this year as we were looking at the errors at one of our signup API, we observed that nearly 5% of our requests were getting failed, all due to 400 BAD REQUEST errors, and the root cause was traced ba...

How to Keep Your Package Dependencies Up to Date on Azure DevOps

Introduction As a developer, how often have you seen a repository with packages that are out of date? New package updates generally include new features, performance improvements, and security fixes. But keeping track of all outdated dependencies in ...

Finding a Needle in Haystack: Fixing Mysterious Bad Gateway

Introduction At my current org, we have many applications running behind the API gateway that interacts with the outside world using REST APIs. To track server-side failures we built an alert system that nudges every time we get any 5XX error. As soo...

Building Resilient Systems: Retry Pattern in Microservices

Introduction Any application that communicates with other resources over a network has to be resilient to transient failures. These failures are sometimes self-correcting. For example, a service that is processing thousands of concurrent requests can...

How to Choose The Right Database for Your Application

Introduction Choosing which database to use is one of the most important decisions you can make when starting working on a new app or website. If you realize down the line that you’ve made the wrong choice, migrating to another database is very costl...

SOLID Principles in Java

In software engineering, SOLID is an acronym for 5 design principles intended to make software designs more understandable, flexible, robust, and maintainable. Adopting these practices can contribute to avoiding code smells too. The 5 SOLID principle...

Message Queues and Asynchronous Processing

Introduction In a client-server architecture, the client can request a job to be done from the server by sending messages to the server. Handling this communication can increase in complexity when you begin to manage the rate at which messages are se...

Building Microservices using Spring Boot + HarperDB and Deploying it on AWS

Introduction In this article, you will learn how to use Spring Boot and HarperDB to create a microservice. Later on, you will also look at how to deploy the complete application on AWS Elastic Beanstalk. You will be building an Employee Leave Managem...

Javascript Clean Code Tips & Good Practices

Code should be written in such a way that is self-explanatory, easy to understand, and easy to modify or extend for the new features. Because code is read more than it is written that's why so much emphasis is given to clean code. The more readable o...

NanoID - A URL Friendly Unique Identifier

Introduction In every software system, we need unique Ids to distinguish between several objects from one another. Recently, I wrote about the unique Id generation for a large scale distributed environment. In that article, we touched a little on UU...

JavaScript Tips and Best Practices

In this article, I’ll share 10 of the JavaScript tips, tricks, and best practices that I follow and found useful. 1. Use Numeric Separators This is one of the most used operators when I have to deal with large numbers. When using a separator (with ju...

Five++ cool Python snippets (Part - 2)

Introduction 👋 Python is a beautifully designed high-level interpreted programming language that provides us with many features. This is a gentle guide to some of those Python features that you probably might not be aware of or didn't know about tha...

Why You Can't Name a File 'CON' in Windows?

❓ Did you know you can’t name a file “Con” in Windows If you’re running a Windows machine, try it right now. Go to File Explorer -> create a new folder -> name it "Con" Did it work? Now try with "PRN", "AUX" or "NUL". What did you get? Probably this ...

Metrics to evaluate your Machine Learning algorithm

You made a machine learning or deep learning model. Amazing! 🥳 But how do you check its performance and robustness? Simply building a predictive model is not enough. You have to create a model which gives high accuracy on out-of-sample data. That's ...

Generating unique IDs in a Large scale Distributed environment

Introduction Recently at work, We were looking for a way to generate unique IDs across a distributed system that could also be used as the primary keys in the MySQL tables. We knew in a single MySQL database we can simply use an auto-increment ID as ...

Dunning Kruger Effect and Imposter Syndrome

This article has been in my drafts for a long time but I never clicked that Publish button as I was skeptical whether people would connect with these kinds of topics on my blog or not. But because now this thought is constantly juggling in my head, S...