世界制覇をもくろむLINE――ベールを脱いだプラットフォームの全体像とは:LINE Developer Conferenceまとめリポート(前編)(3/3 ページ)
LINEは4月15日と17日の両日、世界初となる「LINE Developer Conference」を開催。LINEプラットフォームの全体像を明らかにした。本稿では、その中でもLINEプラットフォームを統べるChannel Gatewayとは何か、LINEビジネスコネクトの仕組みとは、インフラをどのように高速化しているのかなどについてお届けする。
LINEにおけるネットワーク周りの高速化への取り組み
LINEビジネスコネクトなどの利用が本格化していくと、サービスや通信の負荷は増大していく。LINEでは、サービスの高速化に向けてどのような取り組みを進めているのだろうか。
SPDYの最適化
LINEのクライアントとサーバー間は、HTTPを拡張して高速化を図ったプロトコルである「SPDY」をベースに通信を行っている。なぜSPDYの仕様をそのまま使っていないかというと、LINEサーバーの場合は、通信の相手はLINEアプリしかなく、UserAgentは1種類に限定される。UserAgentが未知の状態でサーバーがリクエストを受け付ける場合、どのプロトコルで相手と通信するかを最初に決めなければならないが、LINEサーバーの場合は、そうした処理を省略することによって通信の高速化を図っている。
「NOOP Frame」の活用
また、国によっては通信回線が低速な場合もある。こうした通信環境でも、最初のパケットで通信を確立してしまえば、比較的高速に通信できるケースも少なくない。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の活用からクラスター化へ
LINEがサービスを開始した当初は、ストレージは主にオープンソースのインメモリデータベース「Redis」を使っており、用途に応じてMySQLも利用していた。ところが、そのままではユーザー数の増大に対応しきれなかったため、とにかくRedisの数を増やそうと、Redisのクラスター化に取り組んだ。
HBASEに白羽の矢
とはいえ、高価なメモリを主に利用するRedisの数をそのまま増やしていくのでは、コストが掛かり過ぎてしまう。また、LINEを利用するデバイスの多様化に対応するためには、永続化をきちんと確保した上で、高いパフォーマンスを引き出す必要がある。こうした点を考慮して検証を行った結果、白羽の矢が立ったのが列指向の分散データベース「HBASE」だった。
HBASEをHAに、StormやMongoDBも導入
しかし、HBASEも導入しただけではうまく拡張することはできず、すぐにHA(高可用)構成に対応、並列化していくことになった。同時期に、リアルタイム分散処理フレームワークの「Apache Storm」も導入して使用を開始した。その際、柔軟なスキーマで情報の格納をしたかったためMongoDBを使用しているという。
Redisをさまざまな用途で活用
Redisの最新の活用法は、HBASEの手前に置いてキャッシュ目的で使用するというものだ。そこでは、大量のリクエストが直接Redis上で処理されないように工夫されている。Redisは、用途を変化させながら、従来の使い方も含めて、引き続きさまざまなところで利用されている。
現在、Redisは、キャッシュ、コンタクト、メッセージ/同期キュー、タスクキューなどの用途で利用されており、総容量は30TB。メインストレージとして利用されているHBASEの総容量は1PBに上っている。また、ログ解析、統計に活用されているHadoopの総容量は7PBで、そのうち約42%が使用されている。
LINEのシステムアーキテクチャの現在
LINEのサービスを支えるシステムアーキテクチャを見ると、ストレージレイヤーの上にLINEアプリレイヤーが位置付けられ、その上に、認証、LINEコネクションレイヤー(LEGY)、LINEクライアントがある。
LINEアプリレイヤーで特徴的なのは、アプリケーションサーバー間の通信を非同期で安全に行うメッセージキューの技術を多用していることだ。LINEのサービスではメッセージのロストが最も懸念される障害であり、それを防止して信頼性を高めるために、メッセージをいったんキューに格納して再送するといった工夫がなされている。
LINEのシステム構成全体を見渡すと、単一のハイエンドサーバーがあらゆる処理をこなすのではなく、さまざまなサービスを提供する多様なサーバーが通信し合い、協調して動作していることが分かる。そして、さまざまな技術とノウハウを駆使して、拡張性と信頼性を最大限に高め、拡大を続けるビジネスを支えている。
次回は、LINE GAMEプラットフォームの全貌
次回は、LINE GAMEプラットフォームの全貌についての講演の模様をお届けするので、お楽しみに。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- UXClip(9):ユーザーを魅了するUIはまぐれでは生まれない (1/2)
UIとUXの意味と価値をもう一度考えよう。大ヒットアプリ、LINEのプロダクトデザイン担当者が、制作現場での具体的な開発手法を語った勉強会をレポートする - カイ士伝のアプリライフ(11):Skype、Line、Facebook、Google+、どれが好きですか?
コミュニケーションを変える新たなチャットサービス。Skype、Line、Facebook、Google+のスマホ対応機能や特色をまとめてみる - 4コマまんが「がんばれ!アドミンくん」:第351話 LINE
いまやビジネスでも活用が広がりつつある無料通話スマホアプリLINE。世代の断絶を乗り越えて普及できるのか? - コマまんが「がんばれ!アドミンくん」:第354話 LINE(2)
部長、正しい発音覚えてくれました? 恥ずかしいから、客先で世間話するときなんかに間違えないでくださいよね! - 流出データはスタッフ立ち会いの下で削除:LINE、NAVERアカウントへの不正アクセスの攻撃者を特定、「日本国外の人物」
LINEは、7月19日に公表した「NAVERアカウント」に対する不正アクセスを行った日本国外の人物を特定し、同社スタッフ立会いの下でデータを削除したと発表した。