Get startedGet started for free

Vertically scaling streaming systems

1. Vertically scaling streaming systems

Welcome back! Now that we have an idea of streaming systems and real-time data, let's consider how we can vertically scale our processes.

2. Why scale?

Before discussing specific methods to scale our streaming systems, let's review why we'd want to scale in the first place. There can be several requirements we wish to meet, but some of the most common reasons to scale our system include: processing the same amount of data in less time, processing more data in the same amount of time, or delivering data more quickly (this can also be considered as reducing the latency of transport or delivery). Lastly, we may need to meet certain guaranteed timeframes. In industry terms, this is often referred to as an SLA, or service-level agreement. This means that we have defined service metrics that are agreed to with our clients and may have penalties if the service fails to meet those metrics.

3. Vertical scaling

You may recall that we've discussed the components for vertical scaling previously. Typically vertical scaling means improving the performance of a single system with faster or better components. This usually means faster CPUs, RAM, networking, and so forth. As before, all of these features can affect streaming performance.

4. Faster CPU / GPU performance

While it could be said about improving the speed of most everything in a computing system, faster CPU execution tends to make the system more capable. If more instructions can be executed in the same time, we can process the same data more quickly (or more data in the same time.) In addition to being faster, better execution can have similar effects. As new CPUs are developed and released, they can have improved instruction sets that permit better data processing (such as processing more data at a time, placing software implementations in hardware, etc). We also have the option in some cases of adding a GPU or graphics processing unit to our machines. Originally designed to provide a better experience on video games, GPUs can vastly improve performance on some types of data processing. This includes machine learning, deep learning, image processing, and anything with a large amount of matrix operations. Specific GPU implementations are outside the scope of this course, but it helps to be aware of potential upgrade options to improve data processing.

5. How does this affect streaming?

The next question to consider is how does vertical scaling affect streaming processes. Streaming data processes typically don't stop until complete. For example, log data would not leave a data pipeline until written to disk. If there are also expected guarantees or SLAs in place, there likely isn't time to implement a different processing method (batch / queues). In other words, if you make the pipeline longer, it may take more time to process the data, causing difficulty in meeting a specific SLA response time. Different items can exist in different parts of a data pipeline, but the total processing capacity is limited by the system performance. We'll discuss a different option in the next lesson, but typically the faster the system, the faster the processing. It is worth noting that the choice of system components to improve will likely vary based on the workload in question. Some may require faster or better CPU, others faster disk IO. Make sure to benchmark and test your pipelines prior to committing to a specific upgrade.

6. Let's practice!

We've discussed vertically scaling streaming systems. Let's practice what you've learned in the exercises ahead!