2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
LINE PlatformのSRE(全1記事)
提供:LINE株式会社
リンクをコピー
記事をブックマーク
加藤亙貴氏: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のストレージは、主要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クラスタを用途別に分けて運用しています。これらのログを分析するのは、左に示したパイプラインです。各ホストは、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によってレスポンスタイムの改善が実現できることを確かめました。さらに、特定の状況によってデッドロックが発生し、リージョンサーバーがダウンする問題の発見、メトリクスの追加による可観測性の向上などを通じて、コミュニティに貢献しました。
もう1つ、私たちが取り組んでいる例として、HBaseクラスタのマイグレーションが挙げられます。あるHBaseクラスタにおけるテーブルを別の場所に移転しなければいけない状況を考えます。メジャーバージョンのアップグレード、スキーマの変更、マシンを配置するサーバールームの転換などによって、私たちは日々多くのマイグレーションを行っています。
LINEに求められる高い可用性から、これらの作業はすべてゼロダウンタイムで行っています。まずライトアヘッドログの送信やスナップショットのコピーなどによって、新しいクラスタにデータを複製します。次にアプリケーション側を新しいクラスタに対する読み取り、書き込みができるように変更します。
この時、Central DogmaというConfigurationサービスを通じて、プライマリとセカンダリクラスタの切り替えや、読み書きの単一または同時モードへの切り替えなどを動的に反映できるようにしています。これにより、読み取りの際にデータの不整合がないかを確認しながら新しいクラスタにスイッチできます。
さらにこれはマイグレーション作業に限りませんが、ベータ環境においてdestabilizerと呼ばれる、リクエストを一定の確率で失敗させるコンポーネントをHBaseに挟んでいます。これにより、障害発生時にもリトライ機能によってデータの整合性が保たれるかどうかをチェックしています。
ここまで、私たちの実践しているエンジニアリングについて紹介しました。しかし私たちにはまだ達成できていない問題がいくつか存在しています。例えばマルチデータセンター環境におけるアーキテクチャの改善、より信頼性の高いトランザクションやセカンダリーインデックスの実装、TiDBなどの新世代ストレージミドルウェアの検討や導入。そして、一つひとつ異なるrequirementを持ったクラスタへのSLOの導入と運用などが挙げられます。
詳しくは「LINE技術組織が抱える未解決課題」というサイトで紹介されているので、ぜひ読んでみてください。
LINEの分散ストレージリライアビリティエンジニアとしてジョインすると、LINE Messaging PlatformにおけるRedisやHBase、Kafkaといったストレージミドルウェアの開発に携わることになります。今回は、そのうちHBaseについて紹介しましたが、これら3つのユニットが取り組む問題には、2つの共通する特徴があると思っています。
まず、問題が非常に大きいトラフィックによってもたらされるということ。これはすなわち、その問題の解決が多くのユーザーに影響を与えるということでもあります。2つ目は、技術的な観点において、解決すべき問題が高いレイヤーから低いレイヤーまで非常に多岐に渡るということです。分散システムにありがちな一貫性の問題といったレイヤーの高いものから、ミドルウェアからJVM、Linux、ハードウェアに起因するような、いわゆる低レイヤーに属するものまで、日々多種多様な問題に取り組んでいます。
私たちは、このようなLINEの分散ストレージリライアビリティエンジニアならではの課題に、ともに楽しく取り組んでいけるメンバーを募集しています。ぜひ応募をご検討ください。最後になりますが、本セッションで紹介した事例はこのようなメディアを通じて、より詳しく解説されています。興味があればぜひご覧ください。本日はご参加いただき、ありがとうございました。
LINE株式会社
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ