Image for post
Image for post
Animation by Guillaume Kurkdjian

The introduction of serverless computing into the world of software development has brought advantages that are very hard to ignore, not only by engineers but also by business leadership. The reason for this is very simple, the idea that you can utilize computing power only when you need it creates a more efficient allocation of hardware and thus reduces the overall running cost of the software. Furthermore, it incentivizes software developers to engineer smaller services that communicate with well-established boundaries, making the design of such applications more scalable and easily understood.


Image for post
Image for post
Animation by Leanlongo

Co-routines, green threads, fibers, user-space threads and more. These are some of the names you might be familiar with if you work with multi-threaded applications. We utilize multi-threading for many different reasons, one such famous example is parallel computing. However, sometimes parallel computing is just not enough, sometimes we simply want our program to perform blocking operations without waiting around doing nothing. Also, we want to do it in an expressive way without unnecessary thread synchronizations.

Cooperative multitasking has been around almost since the dawn of Operating Systems, but it’s been only in the last decade that we started seeing…


Advertisement is an essential part of our culture. While it certainly has some negative connotations among many people, it serves a fundamental and useful purpose. It spreads information about all kinds of products to people who would not otherwise know about them. The quality of the information that is covered is essential when dealing with a vast consumer base and a very resourceful competition, which is what creates an incentive to build tools that measure and optimize advertisement performance.

Image for post
Image for post

To be successful, these tools must rely on accurate real-time data that can be presented at any time within milliseconds. In our stack, we use several micro-services that retrieve the data from various sources, process and store them into our internal representation and finally aggregate and retrieve them for our automation tools, accounting, and end users.

There are three primary services in our application that take care of this:

  • The core, which serves static data about ads that do not change much (mainly ads configuration), contains an automation tool and acts as a proxy to front-end;
  • Daisy, which stores and…


Increase performance four times and reduce the size of your MongoDB by 83 % with these five suggestions. Go through our optimization experiments and see how we’ve reached these results.

Image for post
Image for post

Relational databases have been around for a long time and they have been the primary way to store data in a consistent way. Therefore, there is a lot of information surrounding them. NoSQL databases, on the other hand, have become increasingly popular in recent years. Working with them is initially easier, but becomes more difficult once the data size starts to grow or the structure gets complicated.

One of the…

Vaclav Dedik

Backend Developer at ROI Hunter.

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