Things I try to cover in this article

  • What, When, and How to use a UDF.
  • A real-world scenario where we fit in UDF.
  • How to write, register, execute a UDF in Aerospike Context.

What is a UDF?

UDF means User Defined Functions which means the database has to run the user-defined function in its own context at run time and return the response back to the client.

The user-defined function can be written in any language that the database understands. In the case of Aerospike, UDF’s are written in Lua which is a scripting language. …

Photo by Mark Olsen on Unsplash

Out of hundreds of optimizations that a developer thinks of, reducing the docker image size will be given the least priority. So did we.

As a result, our docker image started to weigh around 2.4 GB in size which indirectly resulted in our developer’s productivity. Below are the issues we faced with larger docker image size

-> Delay in running automated Integration Tests

Whenever we raise a merge request to the release branch, we have an automated process that builds a new image out of the raised MR code, spins up a new container out of it, and fire thousands…

If there is one big transition that took place in the past decade or so in terms of application development style and deployment patterns then it has to be migration from Monolithic application development to Microservices.

The latter had provided us with various advantages by splitting the bigger application into various smaller chunks with each chunk being called a microservice.

  • Each chunk can be written in a different programming language and have its own database that suits the scale at which the chunk operates.
  • Each chunk can scale independently based on the amount of processing it does.
  • Build time and…

When you ask a developer, what are the two key things that are required for better performance of an application, the answer will surely be

  • Number of CPU Cores.
  • Application RAM.

When it comes to monolithic architecture, we estimate the total CPU and RAM required for an application and pick one huge machine with a very huge number of CPU Cores as well as hundreds of GB’s of RAM.

The issue with such huge machines is they are pretty costly compared to multiple horizontally scaled lightweight machines as well as they are hard to get one instantaneously unlike lightweight machines…

Working for an E-commerce company with a pretty huge customer base, the primary thing that we always keep in our mind while we code is to keep it performant enough to serve huge traffic.

As a developer, we benchmark the application with lakhs of requests and try to come up with a breakpoint on what’s the max load that the application or database server can handle at any given point of time. We call that as SLA(Service Level Agreement) which states about the max requests the system can handle, 99% response time, uptime, and a few other stats.

No matter…


One primary factor that attracts the end-user is how quickly the application responds back to the user request. Applications perform pretty well when the traffic is low but things start failing once the load increases on the application.

Before taking the application to production, there will be rigorous benchmark testing on what’s the max load that the application server or database server can handle. …

With a rapid transition from Monolithic application development to Microservices based application development, communication between microservices has become a crucial and core component. We need some sort of common language pattern where all dependent microservices should be able to communicate irrespective of programming language.

It all started off with XML and we then moved on to JSON (Javascript Object Notation) which is a key-value pair. JSON worked well with REST and is still the go-to guy when it comes to microservices communication. But just like any other product which has its own ups & downs, there are quite a few…

In continuation of my previous article where I’ve detailed on the limitations of goroutines, in this article, I would like to share how we achieved 70 million sets to Aerospike Database in 30 minutes by leveraging the entire system Cores with the help of Go Worker Pool Pattern.

Usecase Insights

  • Currently, at GoIbibo we had close to 70 million users and we had a set of categories that each user belongs to. The categories describe if the user is new | fraud |regular transacting user | user who didn’t transact in last year etc and so on …
  • User Categories…

When we hear the term goroutines the very first thing that come to our mind is, it’s way faster than threads, pretty much lightweight as compared to threads and is managed by the Go runtime which doesn’t depend much on the Operating System.

Many of those who had freshly started with Go will be in an assumption that any sequence of actions can be parallelizable by spinning multiple go-routines. But that’s true only to a certain extent and increasing more go-routines doesn’t help after that.

So without much lag, let’s get straight on to the point. In this blog post…

If there is one thing without which a backend application become completely non-functional then it has to be the database. Working in an E-Commerce Company our day to day life is more about fetching the data from the database, process it and send it to the caller service(Front End) which uses the data to display some handful of insights to the end-user.

Communication with the database is solely done by the backend services and working at scale one needs to know the underneath of how the communication happens and how connections are created or reused.

In this post, we will…

mourya venkat

I will starve to death if you don’t feed me some code. Quora :

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store