LINEビジネスコネクトなどの利用が本格化していくと、サービスや通信の負荷は増大していく。LINEでは、サービスの高速化に向けてどのような取り組みを進めているのだろうか。
LINEのクライアントとサーバー間は、HTTPを拡張して高速化を図ったプロトコルである「SPDY」をベースに通信を行っている。なぜSPDYの仕様をそのまま使っていないかというと、LINEサーバーの場合は、通信の相手はLINEアプリしかなく、UserAgentは1種類に限定される。UserAgentが未知の状態でサーバーがリクエストを受け付ける場合、どのプロトコルで相手と通信するかを最初に決めなければならないが、LINEサーバーの場合は、そうした処理を省略することによって通信の高速化を図っている。
また、国によっては通信回線が低速な場合もある。こうした通信環境でも、最初のパケットで通信を確立してしまえば、比較的高速に通信できるケースも少なくない。LINEの通信では、SPDYに加えて「NOOP Frame」(SPDYのドラフト2まで入っていた仕様)を使うことで、こうした処理を簡素化することにより通信を高速化する工夫を行っている(参考:Adopting SPDY in LINE - Part 2: The Details ≪ LINE Engineers' Blog)。
「このSPDYの部分を担当しLINEクライアントからリクエストを受け付けているサーバーをわれわれは『LEGY(LINE Event GatewaY)』と呼んでおり、このLEGYは、並行処理指向の汎用プログラミング言語であるErlangで書かれています」(田中氏)
Androidのプッシュ機能を効率化する「LEGY Server Push」、LINEクライアントにあらかじめ証明書や暗号キーを配置することでカギの交換手順を省略する「LEGY Encryption」などによっても、通信の高速化を図っている(参考:Adopting SPDY in Line - Part 1: An Overview ≪ LINE Engineers' Blog)。
登録ユーザーやメッセージの送受信数が日々増大する中、LINEでは、ストレージの拡張性の確保と処理の高速化が重要な課題であり続けている。
LINEがサービスを開始した当初は、ストレージは主にオープンソースのインメモリデータベース「Redis」を使っており、用途に応じてMySQLも利用していた。ところが、そのままではユーザー数の増大に対応しきれなかったため、とにかくRedisの数を増やそうと、Redisのクラスター化に取り組んだ。
とはいえ、高価なメモリを主に利用するRedisの数をそのまま増やしていくのでは、コストが掛かり過ぎてしまう。また、LINEを利用するデバイスの多様化に対応するためには、永続化をきちんと確保した上で、高いパフォーマンスを引き出す必要がある。こうした点を考慮して検証を行った結果、白羽の矢が立ったのが列指向の分散データベース「HBASE」だった。
しかし、HBASEも導入しただけではうまく拡張することはできず、すぐにHA(高可用)構成に対応、並列化していくことになった。同時期に、リアルタイム分散処理フレームワークの「Apache Storm」も導入して使用を開始した。その際、柔軟なスキーマで情報の格納をしたかったためMongoDBを使用しているという。
Redisの最新の活用法は、HBASEの手前に置いてキャッシュ目的で使用するというものだ。そこでは、大量のリクエストが直接Redis上で処理されないように工夫されている。Redisは、用途を変化させながら、従来の使い方も含めて、引き続きさまざまなところで利用されている。
現在、Redisは、キャッシュ、コンタクト、メッセージ/同期キュー、タスクキューなどの用途で利用されており、総容量は30TB。メインストレージとして利用されているHBASEの総容量は1PBに上っている。また、ログ解析、統計に活用されているHadoopの総容量は7PBで、そのうち約42%が使用されている。
LINEのサービスを支えるシステムアーキテクチャを見ると、ストレージレイヤーの上にLINEアプリレイヤーが位置付けられ、その上に、認証、LINEコネクションレイヤー(LEGY)、LINEクライアントがある。
LINEアプリレイヤーで特徴的なのは、アプリケーションサーバー間の通信を非同期で安全に行うメッセージキューの技術を多用していることだ。LINEのサービスではメッセージのロストが最も懸念される障害であり、それを防止して信頼性を高めるために、メッセージをいったんキューに格納して再送するといった工夫がなされている。
LINEのシステム構成全体を見渡すと、単一のハイエンドサーバーがあらゆる処理をこなすのではなく、さまざまなサービスを提供する多様なサーバーが通信し合い、協調して動作していることが分かる。そして、さまざまな技術とノウハウを駆使して、拡張性と信頼性を最大限に高め、拡大を続けるビジネスを支えている。
次回は、LINE GAMEプラットフォームの全貌についての講演の模様をお届けするので、お楽しみに。
Copyright © ITmedia, Inc. All Rights Reserved.