CLOSE

LINE PlatformのSRE(全1記事)

2021.11.01

Brand Topics

PR

1日約2.7兆のリクエストを、高いパフォーマンスと信頼性で処理 LINE Messaging PlatformのSREが高トラフィックを支える

提供:LINE株式会社

LINEユーザーとビジネスの価値をつなぐためのSREとは、いったいどんなことをするのか。LINEの7つの領域から9名が登壇し、業務内容や体制、開発における課題、働く個々人のやりがいなどについて話します。加藤亙貴氏は、LINE Messaging PlatformのSREについて紹介しました。

LINE Messaging Platformの構成

加藤亙貴氏:LINE Platform Development Center1 Messaging Platform Development室 Z Partチーム HBase Unitの加藤亙貴です。このセッションでは、分散ストレージリライアビリティエンジニアというポジションにおける、LINEプラットフォームのSREについて紹介します。よろしくお願いします。

今日はこのようなアジェンダに沿ってお話しします。始めに、LINE Messaging Platformや私の所属するZ Part HBase Unitの紹介。次にHBase Unitの技術スタックや実践しているReliability Engineeringについて紹介します。最後にまとめとして、今私たちが直面している問題、そしてチームにジョインしていただいた際、どのような問題を私たちと一緒に解いていくのかについてお話しします。

さて、LINEアプリのバックエンド、LINE Messaging Platformは概ねこのような構成になっています。左側のline-serverというグループの中に、メッセージングの中核であるtalk-server、talk-decatonといったコンポーネントが存在します。また、関連するアプリケーションとして、Bot関連の処理や認証、ユーザー設定の管理を行うものなども存在します。

そして、このプラットフォームを支える重要なストレージが、Redis、HBase、Kafkaという3つのミドルウェアです。私たちは、Z PartまたはIMF Partというチームにおいて、これらのミドルウェアの管理や、関連するプラットフォームアプリケーションにおける開発業務を行っています。

LINE Messaging Platformのストレージ

私たちが管理するLINE Messaging Platformのストレージは、主要4ヶ国において1億7,100万人に上るユーザーのために、1日約2.7兆のリクエストを高いパフォーマンス、そして高い信頼性を維持して処理しなければなりません。そのためにLINE Messaging Platformおよびそのストレージは、およそ9,000台の物理マシン、または仮想マシンによって構成されています。

私が所属するZ Part HBase Unitは、先ほどの3つのストレージのうち、HBaseクラスタの開発・運用を行っています。HBaseはMessaging Platformにおける主要な永続分散ストレージです。主な業務として、継続的な監視・調査・改善によってHBaseクラスタの信頼性やパフォーマンスを高めたり、操作や監視ツールの機能向上、他のチームの開発サポートなどが挙げられます。

私たちは「分散ストレージリライアビリティエンジニア」というポジションで、新しいメンバーを募集しています。

HBase Unitの監視のための技術スタック

ここで、HBase Unitの監視のための技術スタックを紹介します。下にあるように、私たちは複数のHBaseクラスタを用途別に分けて運用しています。これらのログを分析するのは、左に示したパイプラインです。各ホストは、FilebeatによってログをLogstashに送ります。Logstashはログの内容、例えばGCのポーズタイムやHBaseのリカバリータイムなどの情報をパースし、Elasticsearchに保存します。そしてKibanaによる可視化、またElastalertによる通知を行っています。

次に紹介するのが、メトリクス分析のためのパイプラインです。各ホストはディスクI/OのレイテンシーやHBaseのレスポンスタイムなどのメトリクスを、エクスポーターを通じて公開します。このメトリクスは、クラスタごとにPrometheusが収集・保存し、Grafanaによる可視化や、Alertmanagerによるアラーティングに用いられます。

またメトリクスはPrometheusのフェデレーションインスタンスによって長期保存され、HBaseクラスタのキャパシティプランニングの際にも用いられます。さらにHBaseクラスタのログやメトリクスは、IMONという内製の監視ツールにも送信されています。これはログからの信頼性の高いアラーティングに用いられています。

HBase Unitでは一部を除き、これらを自分たちで運用および自動化を行っています。アプリケーションは物理マシンと、「Verda」というプライベートクラウドの仮想マシン上に構築され、その自動化にはAnsibleが用いられています。さらに一部のツールは、VKSと呼ばれるマネージドKubernetesクラスタにデプロイされています。

安全でスケーラブルなパフォーマンステスト環境の構築

このような監視基盤をベースに、私たちはさまざまなReliability Engineeringを実践しています。その1つが、安全でスケーラブルなパフォーマンステスト環境の構築です。例として、テスト用のHBaseクラスタを準備し、ある設定やスペックを適用した際のパフォーマンスを評価するとします。

ここで、本番用のHBaseクラスタに送信されるRPCリクエストをインターセプトし、Kafkaを経由して、Replayerと呼ばれるアプリケーションに複製します。Replayerは受信したリクエストをフィルタまたは増幅し、テストクラスタに対して再現します。

これにより、テストクラスタの設定やスペックが本番環境と同様の負荷に耐え得るか、また、ニューイヤーバーストのような、急激なトラフィックの増加に耐え得るかを、安全かつ高い再現性を持ってテストできます。

この検証環境を用いてテストしたものの1つが、HBaseのHedged Readsです。Hedged Readsとは、Readリクエストをプライマリ以外のレプリカにも送信し、もっとも早く返ってきたレスポンスを採用する仕組みのことです。これにより、ディスクI/Oやネットワーク遅延によるレスポンスタイムへの影響の削減が期待できます。

不安定なディスクI/Oを再現するため、私たちはLD_PRELOADを用いてI/Oの不具合をテスト環境で再現し、Hedged Readsによってレスポンスタイムの改善が実現できることを確かめました。さらに、特定の状況によってデッドロックが発生し、リージョンサーバーがダウンする問題の発見、メトリクスの追加による可観測性の向上などを通じて、コミュニティに貢献しました。

HBaseクラスタのマイグレーション

もう1つ、私たちが取り組んでいる例として、HBaseクラスタのマイグレーションが挙げられます。あるHBaseクラスタにおけるテーブルを別の場所に移転しなければいけない状況を考えます。メジャーバージョンのアップグレード、スキーマの変更、マシンを配置するサーバールームの転換などによって、私たちは日々多くのマイグレーションを行っています。

LINEに求められる高い可用性から、これらの作業はすべてゼロダウンタイムで行っています。まずライトアヘッドログの送信やスナップショットのコピーなどによって、新しいクラスタにデータを複製します。次にアプリケーション側を新しいクラスタに対する読み取り、書き込みができるように変更します。

この時、Central DogmaというConfigurationサービスを通じて、プライマリとセカンダリクラスタの切り替えや、読み書きの単一または同時モードへの切り替えなどを動的に反映できるようにしています。これにより、読み取りの際にデータの不整合がないかを確認しながら新しいクラスタにスイッチできます。

さらにこれはマイグレーション作業に限りませんが、ベータ環境においてdestabilizerと呼ばれる、リクエストを一定の確率で失敗させるコンポーネントをHBaseに挟んでいます。これにより、障害発生時にもリトライ機能によってデータの整合性が保たれるかどうかをチェックしています。

LINE技術組織が抱える未解決課題

ここまで、私たちの実践しているエンジニアリングについて紹介しました。しかし私たちにはまだ達成できていない問題がいくつか存在しています。例えばマルチデータセンター環境におけるアーキテクチャの改善、より信頼性の高いトランザクションやセカンダリーインデックスの実装、TiDBなどの新世代ストレージミドルウェアの検討や導入。そして、一つひとつ異なるrequirementを持ったクラスタへのSLOの導入と運用などが挙げられます。

詳しくは「LINE技術組織が抱える未解決課題」というサイトで紹介されているので、ぜひ読んでみてください。

ストレージミドルウェアの開発に共通する2つの特徴

LINEの分散ストレージリライアビリティエンジニアとしてジョインすると、LINE Messaging PlatformにおけるRedisやHBase、Kafkaといったストレージミドルウェアの開発に携わることになります。今回は、そのうちHBaseについて紹介しましたが、これら3つのユニットが取り組む問題には、2つの共通する特徴があると思っています。

まず、問題が非常に大きいトラフィックによってもたらされるということ。これはすなわち、その問題の解決が多くのユーザーに影響を与えるということでもあります。2つ目は、技術的な観点において、解決すべき問題が高いレイヤーから低いレイヤーまで非常に多岐に渡るということです。分散システムにありがちな一貫性の問題といったレイヤーの高いものから、ミドルウェアからJVM、Linux、ハードウェアに起因するような、いわゆる低レイヤーに属するものまで、日々多種多様な問題に取り組んでいます。

私たちは、このようなLINEの分散ストレージリライアビリティエンジニアならではの課題に、ともに楽しく取り組んでいけるメンバーを募集しています。ぜひ応募をご検討ください。最後になりますが、本セッションで紹介した事例はこのようなメディアを通じて、より詳しく解説されています。興味があればぜひご覧ください。本日はご参加いただき、ありがとうございました。

続きを読むには会員登録
(無料)が必要です。

会員登録していただくと、すべての記事が制限なく閲覧でき、
著者フォローや記事の保存機能など、便利な機能がご利用いただけます。

無料会員登録

会員の方はこちら

LINE株式会社

関連タグ:

この記事のスピーカー

同じログの記事

コミュニティ情報

Brand Topics

Brand Topics

  • お互い疑心暗鬼になりがちな、経営企画と事業部の壁 組織に「分断」が生まれる要因と打開策

人気の記事

人気の記事

新着イベント

ログミーBusinessに
記事掲載しませんか?

イベント・インタビュー・対談 etc.

“編集しない編集”で、
スピーカーの「意図をそのまま」お届け!