勉強会資料 distribution

34
Copyright(C) 2017 Sep10, Inc. All rights Reserved. - 1 - 未来の幸せのために 〜実践!負荷対策〜

Upload: miki-koganei

Post on 21-Jan-2018

866 views

Category:

Business


0 download

TRANSCRIPT

Copyright(C) 2017 Sep10, Inc. All rights Reserved.- 1 -

未来の幸せのために

〜実践!負荷対策〜

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

自己紹介

名前: 上原 正裕 (うえはら まさひろ)

プロジェクト担当:

立ち上げの PL

現在はサーバエンジニア

KLabとの関係:協力会社

- 2 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

担当プロジェクト

- 3 -

● スマホ向けリズムゲーム

● 今年で5年目に突入

● ユーザ数2100万ダウンロード突破

● テレビCMもやってる

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

5年間で経験したプロジェクトの問題

● スケジュールタイト

● 人が足りない

● 運用の不便さ

● サーバ負荷

● 人間関係

- 4 -

サーバ負荷

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

サーバ負荷について

● サーバ負荷とは○ サーバのリソースを使い切ることによる遅延

- 5 -

DB

WEB WEB

DB

IMDB

redis

memchached

WEB WEB

CPUファイルIOネットワーク

帯域

CPUファイルIO

ロードバランサー

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

プロジェクトのボトルネック

- 6 -

DB

WEB WEB WEB WEB

メインDB

クラウドサービス

IMDB

redis

memchached

ファイルIO

ロードバランサー

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

ボトルネックについて

● 平常時は問題なし

● ピーク時に問題発生○ メンテナンス開け

○ 日をまたぐ0:00

● DBのIOで遅延が発生

- 7 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

高負荷の発端

- 8 -

負荷対策の期間

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

負荷対策計画

- 9 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

負荷対策計画の前提条件

● IOの問題を解決するため書き込みを極力減らす

● ユーザ増加に対しての対策

● 無理のないスケジュールで開発

● 障害のリスクをさげる

● DBの分割

- 10 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

DB分割とは

● DB分割とは○ 物理DB分割により処理を分散する

○ 種類

■ 垂直分割

● テーブル単位で別DBに分割

■ 水平分割

● 同じテーブル別DBに分割

- 11 -

テーブル1テーブル2テーブル3 テーブル1

テーブル3

テーブル2

テーブル1テーブル2テーブル3

テーブル1テーブル2テーブル3

テーブル1テーブル2テーブル3

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

実施内容

- 12 -

● DB書き込みの削減

● スケールアウトする仕組み作り○ webはすでにスケールアウト可能

○ ユーザデータの水平分割を実施

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

水平分割

- 13 -

● 最近のシステムでは当たり前

● KLabでは当時水平分割の仕組みはなかった

● DSASというオンプレミスの環境のスペックが良かった

● KLabで初めての水平分割

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

負荷対策実行計画

● すぐにできる対応○ 書き込みの削減

● 水平分割 1期○ ユーザテーブルの一部水平分割

● 水平分割 2期○ 残ったユーザテーブルの水平分割

- 14 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

DBへの書き込み削減

- 15 -

~ 行動履歴データファイル出力 ~

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

行動履歴データとは

● 行動履歴データとは○ ユーザの動向の履歴

● 使い道○ ユーザの調査

● 性質○ サービス上では不要

○ ディレイデータで十分

○ 大量の出力

- 16 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

行動履歴データのファイル出力

- 17 -

DB

WEB WEB WEB WEB

メインDB

行動履歴 行動履歴 行動履歴 行動履歴

行動履歴データ

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

結果

● 書き込み処理は大きく削減された

● 想定以上のユーザの増加でIO問題が再発

● 水平分割にはまだ時間がかかる

● さらにすぐにできる対策が求められた

- 18 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

DB垂直分割

- 19 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

垂直分割について

● 大きな仕組みの変更は不要

● 接続情報の追加だけ

● 水平分割の対象で使用頻度の高い報酬履歴テーブルを対象とした

● 報酬履歴とは○ ユーザの取得したアイテムの履歴

○ 最大2週間閲覧可能

- 20 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

履歴データの垂直分割

- 21 -

DB 垂直分割

WEB WEB WEB WEB

メインDB

行動履歴データ

報酬履歴

書き込み

書き込み

読み込み

読み込み

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

DB水平分割

- 22 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

水平分割 理想像

- 23 -

現状: 理想:

DB 垂直分割

全ユーザ共有ユーザデータ

行動履歴データ

報酬履歴

DB 垂直分割

水平分割

ユーザデータ

行動履歴データ

全ユーザ共有

ユーザデータ

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

水平分割 1期

- 24 -

DB 垂直分割

DB構成

メインDB

行動履歴データ

一部ユーザデータ全ユーザ共有

2期ユーザデータ

水平分割

報酬履歴1期ユーザデータ Empty

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

水平分割 2期

- 25 -

DB 垂直分割

その他データ

行動履歴データ

全ユーザ共有2期ユーザデータ

水平分割

報酬履歴1期ユーザデータ 1期ユーザデータ

2期ユーザデータ

2期ユーザデータ

ユーザデータ ユーザデータ

全ユーザ共有

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

水平分割のメンテナンス時間

● 1期

● 2期

- 26 -

4時間 (160万ユーザ)

3時間 (250万ユーザ)

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

オンプレミス移管

- 27 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

オンプレミス移管

● DSAS環境に相乗り

● DBのスペックはクラウドサービスの3倍以上の性能

● DBのバージョンアップ

● IOの問題は解決

- 28 -

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

その後

- 29 -

● ユーザ数

○ 400万 → 2100万

● webサーバのスケールアウト

○ 34 → 50

● DBサーバのスケールアウト

○ 全ユーザ共有1台○ ユーザDB 3台 → 5台○ 行動履歴 DB1台

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

負荷対策の期間

負荷対策の履歴

- 30 -

2013/06末

2013/09頭

2013/12中

2014/04頭

2014/07中

行動履歴ファイル出力

DB垂直分割

水平分割1期

水平分割2期

オンプレミス移管

負荷問題がない期間

約2年

2016/07頭高負荷

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

2016/07/05

- 31 -

● 大型メジャーアップの対応

● メンテナンス明けで大障害

● この日は不運が重なる

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

その日のリクエスト数

- 32 -

WEBの数50 → 74

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

まとめ

- 33 -

● 難しく見えるスケールアウトの仕組みもシンプルに対応

● 状況によってアプローチの仕方が変わってくる

● 未来を見据えて対応していると恩恵を受けるときがきます

Copyright(C) 2017 Sep10, Inc. All rights Reserved.

ご清聴ありがとうございました

- 34 -