LINE Backend Architecture Service Service Service Service Service Other services Storage Thrift Service Service Service Service Thrift Service AM QP Thrift Service Service Thrift Erlang Service Erlang Service over Erlang Thrift Service AM QP MQ Other services SPDY Storage AM QP Thrift Thrift Service Service Service Service Service Service Service Storage Service Service Service Storage Please note that this picture is just concept of our architecture. Actually, There are much more services!
LINE’s microservices • Decentralized Governance – Our services may be implemented by different languages, libraries, middlewares, … • Decentralized Data Management – Our services may have own (huge!) storage. – HBase, Redis, MongoDB, MySQL … • Evolutionary Design – Service layout is incrementally changing according to the scale of LINE userbase.
Scala at LINE Backend (1) • Fan-out (Bulk Message Sending) – Producers pushes messages to MQ – Consumers written in Scala sends them to massive userbase asynchronously.
Scala at LINE Backend (2) • Asynchronous Tasks Monitoring Tool – Visualize asynchronous tasks running on each server of our JVM cluster. – Allows us to answer: • What kind of tasks are running or waiting? • How long time does it take? • Where is performance bottle neck? – Powered by • Finagle, Slick, Saddle
Scala at LINE Backend (3) • Distributed Tracing System (line-tracer) – Visualize a service call graph via Zipkin.