This post is a continuation of Measuring network service performance.
When my computer doesn’t have an Internet connection, I find that there is not much I can do with it. Indeed, we mostly use our laptops and smartphones to access information stored or generated somewhere else. It’s even hard to imagine the utility of non-user facing apps without network communication. While the proportion of I/O operations vs. data processing may vary, such operations’ contribution to the service’s latency might well be tangible.
There are many programming languages used for implementing backend services. Because of this, people have a natural interest…
I enjoy improving application performance. After all, that’s why we need computers in the first place — to do stuff fast. If you think about computers for a moment, it feels like magic — on the lowest level, it is basic arithmetical and logical operations, such as adding and comparing binary numbers. However, performing myriads of these operations quickly not only allows us to play video games, watch endless videos, and navigate the entire array of human knowledge and culture, they also aid us in discovering secrets of the Universe and life. That’s why speeding up applications is a big…
Dealing with distributed systems is quite a difficult job. There could be numerous components developed by different teams over long periods. Human mistakes, such as shipping bugs or incorrectly configured parameters, happen routinely in large systems, no matter how excellent the engineering practices are. Hardware faults also regularly occur in large fleets. On top of that, unpredictable workloads and permutations of all possible states and conditions make it virtually impossible to foresee what might go wrong.
That’s why it’s essential to limit the blast radius to avoid cascading failures and amplified outages. …
This post is for anyone interested in writing performant and safe applications in Rust quickly. It walks the reader through designing and implementing an HTTP Tunnel and basic, language-agnostic, principles of creating robust, scalable, observable, and evolvable network applications.
About a year ago, I started to learn Rust. The first two weeks were quite painful. Nothing compiled, I didn’t know how to do basic operations, I couldn’t make a simple program run. But step by step, I started to understand what the compiler wanted. Even more, I realized that it forces the right thinking and correct behaviour.
Yes, sometimes, you…
I enjoy learning new technologies and working on ambiguous problems. My main focus is the security, reliability and performance of large distributed systems.