Introduction of FRESH! Developers team

stormcat24
FRESH LIVE Developers Blog
2 min readSep 6, 2017

FRESH! is live streaming platform in Japan, developed by CyberAgent, Inc. Today, let me introduce our developers team!

OSS Activities

We own a GitHub organization named “openfresh”, and published several opensource software.

openfresh/android-kotlin-style-guide

Our Android application and some microservices are written in Kotlin. Especially on Android, developing using Kotlin from March, 2015. That is, Kotlin was around version M1.

android-kotlin-style-guide is a style guide for Kotlin, covers many implementation patterns. We think it’s important to establish our coding style for using in Kotlin. Please refer.

openfresh/plasma

Plasma is a server push middleware, using gRPC stream and Server Sent Events(SSE).

Until a little before, our applications sent many HTTP request to servers to catch a change state. Because we had felt this is not cool, We developed new generic server push middleware.

Plasma supports many type clients (iOS, Android, others) by gRPC Stream. But web browsers can not interpret gRPC. Therefore, Plasma also supported SSE as an alternative. Now, this promotes communication between users and broadcasters.

Performance Improvement

Our team is actively working on improving performance. The article written by Masayoshi Suzuki (called “sutiwo” and is a famous monk) on tuning using Service Worker, Intersection Observer, and other approaches is as follows.

We are constantly committed to cutting-edge web technology.

Microservices Architecture and beyond

Our server applications are composed of serveral microservices. We realized this using EC2 Container Service.

This architecture was realistic for us then. But current trend is Kubernetes and Service Mesh Architecture. We are trying to migrate current most APIs to gRPC, so we beleive Kubernetes and Service Mesh are essential technology.

Challenge to Low Latency Live Streaming

FRESH! distributes video content as HLS(HTTP Live Streaming) data.

HLS is more delayed than pure streams (RTMP and WebRTC). But HLS is easy to scale. These are generally in a trade-off.

We succeeded in drastically reducing delay of live video streaming by special techniques. Currently, latency of our live streaming is about 3 seconds. 3 seconds is enough time for smooth communication on live streaming service. WebRTC is great technology, but is been overengineered and difficult.

Within a few months, we’ll release this technical information.

Our Goal

Our goal is simple.

Let’s make most advanced product in live streaming world.

Thanks.

--

--

stormcat24
FRESH LIVE Developers Blog

Programmer, DevOps and Docker comedian, Horse Racing Analyst at CyberAgent, Inc.