IT bottlenecks and backlog? Scale to prevent them!

Not everything can be immediately scaled. In some cases, the preparation work needs to be done. In this blog, we give an intro on how to design a scalable architecture for applications.

Paweł Kowalski


Paweł Kowalski

Area Manager at HiQ Gdynia

What is a bottleneck in IT and Business?

The bottleneck is a constraint that creates a backlog. Just like Evergreen container ship did create a backlog in Suez Canal. Evergreen in IT could be compared to some long-running process that blocks the execution of other processes.

Operative processes that happen on a daily basis have some limits. Let's take as an example "Sales". If you run a physical shop, your bottleneck would be a checkout. Sure, you can open up another register and hire more cashiers, but you'll reach some limits anyway (just look at Apple stores when the new iPhone is released... queues everywhere).

Then, digitalization happened and e-commerces entered the scene. It seemed like a problem of queues was solved: No waiting. Order online in the comfort of your home, that's it. But... Try ordering something online on a Black Friday morning: Servers are crashing and overloaded, and the user experience slows down. In the world of IT, it will be similar to a DDoS attack.

How do you prevent bottlenecks in business?

Choose the right moment and scale!

You start scaling when you have already reached the brink of your ability to provide an acceptable service level to meet the demand, and have evaluated your process and system capacities.

Not everything can be immediately scaled. In some cases, preparation work needs to be done. For example, if you create a simple powershell script that automates your business process - let's say invoicing. The only way to "scale it" would be to redesign your script and add some load balancing in between this and other servers that need to execute some operations asynchronously. So that you'll know which server (agent) needs to perform an operation, when the other server is busy.

Coming back to the shopping allusion: This process of balancing loads will work the same way as when you shop in a store and choose to wait in the shortest line to a cashier register. The only difference is that an IT system is not self-aware of the shortest line and cannot choose it by itself, so the scalability needs to be "designed" into application architecture for this to be able to happen.

blog image - queueing

Designing a Scalable Architecture

The concept that resolves the limited capacity of IT systems is called auto-scaling and we support this idea in our automation platform Frends by using agent groups.

Every business process can be measured, and we can see its execution time in a simple (or more advanced) reporting. We can also check out the execution time of each part of a process. For example in the example below, the process is scheduled to launch every 5 minutes to refresh some data, and it takes less than 2 minutes to execute.

Frends process scheduled process bottleneck blog

Now, let's imagine that there is an actual bottleneck here, let's say that a server that executes this process is simply overwhelmed (some Evergreen stopped in a middle). What we can do in Frends platform to solve it is to add new "agent-servers" (just like adding an extra cashier register to a shop) automatically or manually so we have the capacity to execute our automations asynchronously, even if mentioned server is completely blocked or even down. As the result of this feature, you get a scalable solution that is able to run business processes and has no downtime and keep the service at an acceptable level at all times. Like a serverless architecture: When one is down, the other steps in.

Eliminating a bottleneck in IT is not as difficult as unlocking Suez Canal. You can even prevent occasional system failures, and it requires some knowledge and some tools that have scalability properties "designed" to do so. What you need is to create alternate routes for your processes to be executed. An easy way to approach it is to use or code by using the tools that already have scalability capabilities. A bad way to approach it is to code from scratch and experience "production drama".

So if you're encountering scalability problems (system failures or bottlenecks) in your business, or in your IT applications, feel free to contact me or our consultants. Together we will figure out some solutions for you!


related articles