An intern’s tale of designing LINE’s firewall secretary

Greetings! Today I’m going to write about my experience as an intern working on LFMS – the LINE Firewall Management Service – and more specifically, how I designed a part of it called Service Risk Scoring. But first, let me quickly introduce myself. My name is Valeri Haralanov – in English-speaking contexts I go by the […]

【Team & Project】 Meet the team that is in charge of the LINE app’s messaging server development, as well as development and operation of the Apache Kafka Platform

The Team & Project series takes a look at different departments within the development organization at LINE Corp. (“LINE”) and introduces their roles, team structure, tech stacks, challenges that lie ahead, roadmaps, and more. In this edition, we sat down to chat with the team that develops the LINE app’s messaging server and develops and […]

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 […]

On code readability – 1. Introduction and principles

Presentation overview Ever since starting development for LINE beginning in 2011, we have been continuously developing and improving features to provide a better user experience. The growth of the project resulted in an increase of 1.5 million lines of Android client code including modules, and the team expanded to more than 50 members. For such […]

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 […]

API documentation with comments parsing

As a technical writer, I get excited every time I start a new project. At the starting point, it gives me freedom as it is wide open with possibilities. Such a freedom motivates me to explore new domains. From that perspective, I find technical documentation consulting exciting as it gives me an opportunity to try new things […]

Improving Build Performance of LINE for iOS with Bazel

Over the years, the LINE for iOS source tree has grown to a size of hundreds of modules. As of late 2019, the project consists of more than 1.4 million lines of code, and it still doesn’t show any sign of stopping to increase. This in turn, tripped up the build times for all the developers who work on the project. In addition, as the project grew we started to see more unreproducible problems. For instance, the builds work locally but not on CI and vice versa. We took a step back and thought about how we can improve the performance and the reproducibility of our builds.

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, […]