122
オンラインゲーム開発に 欲しい プログラマー とその理由 ~ドラゴンクエスト X の障害事例から 第6ビジネス・ディビジョン ドラゴンクエストX テクニカルディレクター 青山 公士 © 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

オンラインゲーム開発に欲しいプログラマーとその理由

~ドラゴンクエストXの障害事例から~

第6ビジネス・ディビジョン

ドラゴンクエストX テクニカルディレクター

青山 公士

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 2: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

本セッション概要

・自己紹介

・オンラインゲーム開発に

欲しいプログラマー

・ドラゴンクエストXの障害事例

・まとめ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 3: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

本セッション概要

・自己紹介

・オンラインゲーム開発に

欲しいプログラマー

・ドラゴンクエストXの障害事例

・まとめ

メイン

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 4: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

・自己紹介

・オンラインゲーム開発に

欲しいプログラマー

・ドラゴンクエストXの障害事例

・まとめ

本セッション概要

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 5: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

自己紹介

テン

ドラゴンクエストXテクニカルディレクター

技術責任者アオ ヤマ コウ ジ

青山 公士© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 6: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

ドラゴンクエストX

オンライン

2012.8.2発売 2013.12.5発売 2015.4.30発売 2017.11.16発売

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 7: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

自己紹介

^.*[桃ボ].*$ メインプログラマー 等

プレイオンライン ディレクター

ドラゴンクエストX テクニカルディレクター

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 8: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

・自己紹介

・オンラインゲーム開発に

欲しいプログラマー

・ドラゴンクエストXの障害事例

・まとめ

本セッション概要

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 9: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

オンラインゲーム開発に欲しいPG

いきなり結論!

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 10: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

オンラインゲーム開発に欲しいPG

オンラインゲーム/サービスの

開発経験◯年OR

運用経験◯年

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 11: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

オンラインゲーム開発に欲しいPG

オンラインゲーム/サービスの

開発経験◯年OR

運用経験◯年

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 12: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

オンラインゲーム開発に欲しいPG

オンラインゲーム/サービスの

開発経験◯年OR

運用経験◯年

もちろん開発経験として勘案しますが

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 13: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

オンラインゲーム開発に欲しいPG

オンラインゲーム/サービスの

開発経験◯年OR

運用経験◯年

オンライン経験としては

こちらのみです

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 14: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

オンラインゲーム開発に欲しいPG

以上!

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 15: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

オンラインゲーム開発に欲しいPG

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

完© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 16: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

・自己紹介

・オンラインゲーム開発に

欲しいプログラマー

・ドラゴンクエストXの障害事例

・まとめ

本セッション概要

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 17: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

・LeastConnectionとRoundRobin

・NULLと""

・無駄な通信を無くして大問題

ドラゴンクエストXの障害事例

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 18: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

・LeastConnectionとRoundRobin

・NULLと""

・無駄な通信を無くして大問題

ドラゴンクエストXの障害事例

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 19: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

スケールアウトされた複数のサーバの

どれに繋ぐかを決めるアルゴリズム

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 20: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

• LeastConnection–接続数が最小のサーバに繋ぐ

• RoundRobin–順番に繋ぐ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 21: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

結論

どちらも有りなら

RoundRobinを強く推奨します

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 22: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

• LeastConnection–接続数が最小のサーバに繋ぐ

• RoundRobin–何も考えず順番に繋ぐ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 23: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 24: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 25: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

接続数が最小のサーバに繋ぐ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 26: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 27: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 28: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 29: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

接続数が最小のサーバに繋ぐ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 30: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 31: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

で良さそうでは?

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 32: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

• LeastConnection–接続数が最小のサーバに繋ぐ

• RoundRobin–順番に繋ぐ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 33: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 34: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 35: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin

A B C

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 36: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin

A B C

ABCの順に繋ぐ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 37: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin

A B C

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 38: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin

A B C

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 39: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin

A B C

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 40: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin

A B C

ABCの順に繋ぐ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 41: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin

A B C

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 42: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin でも

だいたいあってるけど…

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 43: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

やっぱり

LeastConnection

の方が良さそう?

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 44: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection振り分け係

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 45: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 46: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 47: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 48: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 49: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

再接続

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 50: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 51: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

接続数が最小(0)のサーバに繋ぐ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 52: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 53: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 54: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

接続数が最小(0)のサーバに繋ぐ

※全員障害発生

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 55: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

そして時は過ぎ…

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 56: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 57: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection

新接続数が減っても全員障害

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 58: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

ちなみに

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 59: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin

A B C

仮にこの状態になったとしても

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 60: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin

A B C

何も考えずにABCの順に繋ぐので障害は3回に1回

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 61: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

つまり

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 62: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection は

(本当にうまく作らないと)

障害が悪化します

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 63: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

LeastConnection は

(本当にうまく作らないと)

障害が悪化します

今回紹介したパターン以外にも偏りによる障害悪化の経験あり

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 64: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

RoundRobin でも

障害は起こりますが

悪化はしません

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 65: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

LeastConnectionとRoundRobin

サーバ振り分けアルゴリズムの選定には

運用経験が重要だとわかる事例でした

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 66: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

・LeastConnectionとRoundRobin

・NULLと""

・無駄な通信を無くして大問題

ドラゴンクエストXの障害事例

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 67: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

NULL

文字列が無い(文字列の場合)

""

長さ0の文字列

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 68: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

• getPlayerByID(NULL) – 問題無し

• getPlayerByID("")– 障害発生

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 69: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

""をNULLにしたら例外発生

という話ならわかりやすいですが

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 70: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

今回は通常なら問題にならない

NULLを""にしたら障害発生

というお話です

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 71: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

問題箇所

if( pID ) {for ( it = v.begin(); it != v.end(); ++it ) {

if ( cmpID( pID, (*it)->m_pID ) ) {:

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 72: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

問題箇所

if( pID ) {for ( it = v.begin(); it != v.end(); ++it ) {

if ( cmpID( pID, (*it)->m_pID ) ) {:

cmpIDの中ではNULLチェックをしていませんが

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 73: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

問題箇所

if( pID ) {for ( it = v.begin(); it != v.end(); ++it ) {

if ( cmpID( pID, (*it)->m_pID ) ) {:

(*it)->pIDには有効なデータが入っていることが保証されている

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 74: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

問題箇所

if( pID ) {for ( it = v.begin(); it != v.end(); ++it ) {

if ( cmpID( pID, (*it)->m_pID ) ) {:

pIDのNULLチェックもバッチリ

(*it)->pIDには有効なデータが入っていることが保証されている

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 75: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

つまりpIDがNULLでも

問題はありません

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 76: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

この処理は高頻度で

呼ばれていました

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 77: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

問題箇所

if ( pID ) {for ( it = v.begin(); it != v.end(); ++it ) {

if ( cmpID( pID, (*it)->m_pID ) ) {:

しかもその度に全プレイヤー数分ループするので高負荷です

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 78: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

しかし実際には

ほとんどpID=NULLで

呼ばれていました

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 79: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

問題箇所

if ( pID ) {for ( it = v.begin(); it != v.end(); ++it ) {

if ( cmpID( pID, (*it)->m_pID ) ) {:

つまりほとんど動いていませんでした

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 80: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

それがpID=""になり

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 81: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

問題箇所

if( pID ) {for ( it = v.begin(); it != v.end(); ++it ) {

if ( cmpID( pID, (*it)->m_pID ) ) {:

""はNULLではないので毎回処理されるように

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 82: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

問題箇所

if( pID ) {for ( it = v.begin(); it != v.end(); ++it ) {

if ( cmpID( pID, (*it)->m_pID ) ) {:

しかも(*it)->pIDには有効なデータが入っているので""は見つからず 毎回全プレイヤー数分ループ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 83: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

これで接続中プレイヤー数が

一定以上になると

過負荷による障害発生です

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 84: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

これは

ある不具合を修正するために

別の担当者がNULLから""に

変えたことで発生しました

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 85: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

NULLと""

NULLから""への変更は

通常はあまり問題になりませんが

それが問題になった事例でした

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 86: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

・LeastConnectionとRoundRobin

・NULLと""

・無駄な通信を無くして大問題

ドラゴンクエストXの障害事例

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 87: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

これは

実は必要な情報だった

という話ではありません

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 88: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発生前

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 89: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発生前

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 90: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発生前

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 91: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題無さそうですが内部的には

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 92: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発生前

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 93: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発生前

サーバに更新後Gを要求

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 94: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発生前

失敗(不具合)

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 95: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発生前

時間をおいてリトライ

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 96: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発生前

成功!

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 97: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

不具合による無駄な通信が

1回ありましたね

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 98: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

修正しました

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 99: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 100: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

一発で更新成功

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 101: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 102: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

大問題発生です

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 103: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発生前

今まで効果音と同時に増えていたゴールドが

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 104: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発覚後

効果音より前に増え

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 105: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題発覚後

効果音のタイミングでは増えなくなりました

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 106: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

今回の例では

1700G+100G→1800Gになるはずなのに

1700Gのままという不具合報告が

多数寄せられることになりました

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 107: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

サーバーログ上は

1600G+100G→1700G

で不具合はありません

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 108: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

しかし報告通りなら重大な不具合なため

調査は実施しました

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 109: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

個別調査のため

一件一件に時間がかかります

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 110: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

ドラゴンクエストX運営史上

プログラマーチームが

もっとも機能麻痺した

期間だったと思います

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 111: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

更に改善しました

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 112: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題改善後

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 113: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題改善後

効果音のタイミングを早めました!

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 114: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

問題改善後

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 115: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

不具合報告は激減しました

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 116: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

無駄な通信を無くして大問題

ほんのちょっとした不具合修正が

運営史上最悪の機能麻痺を招いた

事例でした

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 117: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

・自己紹介

・オンラインゲーム開発に

欲しいプログラマー

・ドラゴンクエストXの障害事例

・まとめ

本セッション概要

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 118: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

まとめ

運営中のタイトルでは妥当と思える対応が

問題になることがあります

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 119: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

まとめ

「この改修が問題になるかも?」と思える経験値が必要です

つまり

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 120: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

まとめ

オンラインゲーム開発に欲しいのは

運用経験

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 121: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

まとめ

そして 本セッションでどうしても覚えて帰っていただきたいことが

一点だけありましてそれは…

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Page 122: オンラインゲーム開発に 欲しいプログラマーとその理由 · オンラインゲーム開発に 欲しいプログラマーとその理由 ~ドラゴンクエストxの障害事例から~

書籍執筆中

「ドラゴンクエストXを支える技術」(仮題・発売日未定)

© 2018 SQUARE ENIX CO., LTD. All Rights Reserved.