Back-End

Customizing Armeria metrics

In my last post, Monitoring Prometheus metrics from Armeria, we took a look at how you can monitor Armeria metrics using Grafana. In this post, I would like to show you how you can customize Armeria metrics to suit your needs. The sample code in this post uses the same sample code from Monitoring Prometheus metrics from […]

Monitoring Prometheus metrics from Armeria

In this post, we’ll be taking a look at how you can monitor Prometheus metrics collected with Armeria. For those of you who are trying Armeria for the first time, I will be adding simple practice samples so that you can follow along. Practice exercise The practice session was designed on macOS Big Sur. Let’s now take a look […]

Kafka-based job queue library ‘Decaton’ examples

Introduction: Decaton LINE recently released an in-house developed library, Decaton, as open source. Decaton is a Kafka-based asynchronous job queue library, and it is widely used throughout LINE. GitHub: line/decaton – High throughput asynchronous task processing on Apache Kafka In fact, Kafka offers Kafka Streams, its official library for processing streams. However, Kafka Streams did not […]

Adding experimental WebAssembly support to Decaton – Part 2

In the 1st part of this article, we looked into how we can integrate WebAssembly runtime into a Java application. Then we faced a big limitation of current Wasm/WASI that it doesn’t support sockets, making most of the practical Decaton processors difficult to be hosted on it due to disabled network I/O. In this 2nd […]

Adding experimental WebAssembly support to Decaton – Part 1

WebAssembly is a binary instruction format for a stack-based virtual machine, which aims to be a compilation target of many programming languages to enable executing a program at any place like browsers, embedded devices, and servers with high portability, high performance, and sandboxing capability. Wasm recently caught my interest along with the Rust programming language, and I […]

Monitoring applications with Prometheus and Metricat

In this blog post, I would like to talk about the development of monitorable applications with Prometheus. I will also introduce one of the personal projects I work on in my free time which can help with the development of such applications – Metricat. Observability Observability has become one of the essential characteristics of modern […]

Using Circuit Breakers with Armeria

What is a circuit breaker? Suppose an unexpected failure occurs (For example, a network issue or a server crash) and a remote server is unable to respond to the request. If so, the client who made the request to the remote server will either wait for a response until a timeout occurs, consume resources, or […]

Let’s Play with Reactive Streams on Armeria – Part 2

In the first part of this blog post, we took a look at the basic concepts of Reactive Streams. In part 2 of this blog post, I’d like to tell you about how we use Reactive Streams with Armeria. What’s Armeria? Armeria is an open-source asynchronous HTTP/2, RPC, REST client/server library based on Java 8, […]

Who murdered my lovely Prometheus container in Kubernetes cluster?

This blog post is about an interesting experience I had while investigating and resolving a problem that happened in the Prometheus container which was still in the CrashLoopBackoff state. The phenomenon itself and the solution are obvious and simple; so simple that you may feel that it is not worth it to spend time on […]

High-throughput distributed rate limiter

Production-grade systems usually consist of multiple interconnected components that depend on each other. Popularization of the microservice architectures in recent years has led to an increase in the number of components and their interconnectivity. To protect each component from overloading and guarantee overall system quality of service, rate limiters can be used. Many articles and […]