Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LINE GAME PLATFORM の中身を見てみよう / Let's see LINE G...

LINE GAME PLATFORM の中身を見てみよう / Let's see LINE GAME PLATFORM architecture

WOMAN TECH TERRACE 2020での発表資料です。
https://cyberagent.events/site/554169

LINE Developers

September 13, 2020
Tweet

More Decks by LINE Developers

Other Decks in Technology

Transcript

  1. 今⽇話すこと • 主にIn-Game向けAPI周りの話 • プロフィール • ランキング • フレンド •

    フォロー • ギルド • チャット • 運⽤開発フェーズのエンジニア視点で何を普段やっているの か (よく聞かれますがLINE本体の話は詳しくありません)
  2. Configuration⽤サーバー • ゲーム固有の設定からDB情報ま で持つアプリケーション • クライアントサーバーにキャッ シュ • 中⾝はMongoDB •

    JSONを保存 • 更新履歴の確認も可能 • Central dogmaに置き換えを検 討中 • https://line.github.io/centraldogma/
  3. モジュールサーバー周り • サービス⽤データはHBase+Redis cluster • ログ⽤にHadoopやElasticsearchに⾮同期で保存 • キューはApache Kafka •

    Redis Streamsに置き換え検討中(ミドルウェア減らしたい…) • 検索はElasticsearch • ゲームごと(さらに⽇付ごと)にindexをわける
  4. 実装例(プロフィール) • 1key 1data • JSON形式で保存、schemaはゲーム管理者が⾃由に決められ る • 1レコードあたりのデータ量が定まらない •

    1ゲームあたりのデータ量も定まらない • HBaseはRowkeyでソートされてregionという単位に分けら れてデータが格納される
  5. 移設(Hbase、Redis) • バージョンアップ、スケールダウンetc... • 単純なRedis double writeはConfigurationサーバー+Aegis ですぐに開始できる • テーブル設計変えるならUserごとに移⾏ステータスを管理す

    る必要がある • id1は未移⾏︖ • id1を新しいDBにコピー • 古いデータと新しいデータを⽐較 • id1の移⾏ステータスを更新 • 古いデータと新しいデータを⽐較...