以下の内容はhttp://inzainewtown.blog.fc2.com/blog-entry-10999.htmlより取得しました。


59 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:27:58 ID:df76fa5c (1/16)
「041.エンジニア上がりが、一番ダメな方向にはまったパターン」

お久しぶりです。ちょっと人に言えない仕事してきました。   




            ____
           /     \
          / \   / \
        /  (●)  (●)  \
      |         ´      |   改善内容の報告しますね。
      \      ⌒    /
    / ̄ ̄ヽ           \
   (「    `rノ          \
    ヽ   ノ              \
     |   |             「\   \



60 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:28:18 ID:df76fa5c (2/16)

        ____
      /     \
    / ―   ― \     まずMessage Queue でキューイングする事でプレゼントボックスへの挿入を非同期化して
  /   (●)  (●)  \
 |      __´___     |   救援ボーナスをフレンドに送る際の処理時間が異様に長い問題に対処しました。
 \      `ー'´     /
 /     ∩ノ ⊃   /     今後、バトルが終わって操作できるようになるまで1分かかるみたいな事はなくなります。
 (  \ / _ノ |  |
. \ “  /__|  |
   \ /___ /



       ____
      /     \
    /  \   / \
  /  (●)  (●)  \
 |       __´___       |   既存仕様と両立するために、自分の行動で発生するプレゼントもMessage Queue を挟んでいますから、
 \      `ー'´    /
 /     ∩ノ ⊃   /     現実的には問題にならないでしょうがリアルタイムではなくなります。
 (  \ / _ノ |  |
. \ “  /__|  |
   \ /___ /



          ____
        /     \
      / \   / \   たとえばある画面でプレゼントが発生したらその瞬間フッターのプレゼント未受け取り表示が
     /   (●)  (●)  \
     |      __´___     |   増えるみたいなのは諦めてください。一瞬間があけば良いので次の画面遷移で反映されると思ってください。
    \      `ー'´    /



61 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:28:38 ID:df76fa5c (3/16)
    /\___/ヽ
   /''''''   '''''':::::::\
.   |(●),   、(●)、.:| +
  |   ,,ノ(、_, )ヽ、,, .::::|
.   |   ,rエエェ、  .::::::|
   \  ヽr-rヲ .:::::/      +  ちょっと待ってよ!それじゃユーザビリティが損なわれるじゃないか!
,,.....イ.ヽ`ー `ニ´ ―ノ゙-、
:   |  '; \_____ ノ.| ヽ i       元々出来てたことが出来なくなるって事でしょ!   
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||





     / ̄ ̄ ヽ
    /      ヽ
   /        ヽ
   |     _,.ノ '(ゞ、_|
   .|    ( ー)ヽ ヽ   それに関してはトレードオフだと説明が最初にあったはずですが…
   .ノ| U   (___人_\\__
 /  |     `⌒(⌒_   \
 {   .ヽ.       し「、    \
 {   ト `ヽ. ___´ノ  ヽ、    i
 .|   |       |  /   /



62 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:28:58 ID:df76fa5c (4/16)



              /\
      /ヽ-―.: ̄ -:!、
    /::::.:::.   ノ  (○
.    l:::::..    ( ○)   ,)
.    l:::::::::.    ,,、ノく ,_、)
    ト ::::::..         r‐=ィ    元から出来ることが出来なくなるなんて受け入れられないよ!   
.  /.:ゝ         `ニ´
      : l′ ―     -ノ




     ____
   /      \
  /         \
/           \
|     \   ,_   |   まぁまぁプロデューサー、まずは最後まできいてからで。
/  u  ∩ノ ⊃―)/
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /




     /\_____/ヽ
      ノヽ       ,ヽ
    / ⌒''ヽ,,, ,,,r''''' ::ヘ
    | ン(●),ン..<(●)<:|
    |  `⌒,,ノ(、)ヽ⌒´ :l   最後まできくのは良いけど、デグレは一切許さないからね!   
.   ヽヽ  il ,.-、|li r ;/
    ヽ ll.. |  |  l! /
     ヽl! |  |  l! /ヽ
   / ヽl! .ヽ/ l!/
  /    ヽ`ニ´




63 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:29:18 ID:df76fa5c (5/16)

        ____
      /     \
    / ―   ― \
  /   (●)  (●)  \
 |      __´___     |   まぁ、次いきますね。
 \      `ー'´     /
 /     ∩ノ ⊃   /
 (  \ / _ノ |  |
. \ “  /__|  |
   \ /___ /




        ____
      /     \
    / ―   ― \     次にマルチプレイですが、レスポンスが悪い原因は毎秒クライアントからポーリングしている為ですので、
  /   (●)  (一)  \
 |      __´___     |   ルーム専用サーバ と ルームサーバの使用状態管理DBを用意してWebSocketで繋ぎっぱなしにしました。
 \      `ー'´     /
 /     ∩ノ ⊃   /     これでユーザの回線状態の範囲でリアルタイム通信可能です。pubsubにはphotonを採用しました。
 (  \ / _ノ |  |
. \ “  /__|  |
   \ /___ /



64 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:29:38 ID:df76fa5c (6/16)

     /\_____/ヽ
      ノヽ       ,ヽ      ちょっ待ってよ!
    / ⌒''ヽ,,, ,,,r''''' ::ヘ
    | ン(●),ン..<(●)<:|   回線状態の範囲って、例えば3G回線とかアンテナ1本しか立ってないユーザとアンテナ全部立ってるLTEのユーザだと、
    |  `⌒,,ノ(、)ヽ⌒´ :l
.   ヽヽ  il ,.-、|li r ;/     LTEのユーザの方が有利って事でしょ?元は回線に関わらず平等だったじゃない!改悪しちゃダメでしょ!   
    ヽ ll.. |  |  l! /
     ヽl! |  |  l! /ヽ
   / ヽl! .ヽ/ l!/
  /    ヽ`ニ´




          ____
        /ノ ヽ、_\
       (●) (● ) \
    /⌒(__人__)⌒   \
    |    )  )    u.   |   いや、それは我々が担保する事じゃなくてですね…
    \   `ー'´      /
⊂⌒ヽ 〉        <´/⌒つ
  \ ヽ           ヽ /
   \_,,ノ|      、_ノ



65 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:29:58 ID:df76fa5c (7/16)

    /\___/ヽ
   / -‐'  'ー-   \
  | (●),(、_,)、(●) :::|  それにpubsub使ったら、例えば対戦中にトンネル入って電波途切れたらその人だけ落ちちゃうじゃん!
  |     /,.ー-‐、i  :::::|
  |     //⌒ヽヽ  .::|   元の仕様なら通信成功するまでリトライするから対戦中の時間が止まるだけでトンネル抜けたら
  |    ヽー-‐ノ  :::::|
   \    ̄   ...::/    何事も無かったかのように再開したじゃない!   
   /`ー‐--‐‐―´\



         ____
       /      \
     /   _ノ  ヽへ\
    /   ( ―) (―) ヽ
   .l  .u   ⌒(__人__)⌒ |   それで対戦相手の時間も全員止まるから問題になったんじゃないですかお
    \     ` ⌒r'.二ヽ<
    /        i^Y゙ r─ ゝ、
  /   ,     ヽ._H゙ f゙ニ、|
  {   {         \`7ー┘!


       __
       /ノ ヽ\
     /(○)(○) \
     | (__人__) u|
    |        |
.    |        |   ユーザ一人が通信障害で止まって全員停止するようだと、控えにサブアカ一人混ぜておいて
.    ヽ      /
      ヽ    /     危なくなったらサブアカのアプリ落とすと任意にザ・ワールドできちゃうんで、その方が問題かと…
       /    ヽ
       |      |
       |      |



66 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:30:18 ID:df76fa5c (8/16)


              /\
      /ヽ-―.: ̄ -:!、
    /::::.:::.   ノ  (○
.    l:::::..    ( ○)   ,)
.    l:::::::::.    ,,、ノく ,_、)
    ト ::::::..         r‐=ィ   そうかもしれないけど、何が問題か決めるのはプロデューサーの僕でしょ!
.  /.:ゝ         `ニ´
      : l′ ―     -ノ    勝手に判断しないでよ!   




    __
   /ノ ヽ\
 /.(○)(○)\
 |. u. (__人__) |
. |        |
  |        |   す、すいません
.  ヽ      ノ
   ヽ     /
   /    ヽ
   |     |
    |    .   |



67 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:30:38 ID:df76fa5c (9/16)

          ____
        /     \
      / ―   ― \
     /   (●)  (●)   \   まぁ、続けますね。
     |         '         |
    \       ̄     /
     ノ           \


          ____
        /     \     プレイヤーのデータベースを水平分割しました。
      / \   / \   
     /   (●)  (●)  \   大量のユーザが同時に新規登録すると止まるのは、MySQLがinsert時のレコードロックで
     |      __´___     |
    \      `ー'´    /    インデックス末尾をまとめてロックするためなので、そこが分散されます。

                     8個の物理データベース上に配置された16個の論理データベースに分割したので、

                     最低でも現状の16倍は耐えられますね。



68 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:30:58 ID:df76fa5c (10/16)

     /\_____/ヽ
      ノヽ       ,ヽ   ちょっと待ってよ!
    / ⌒''ヽ,,, ,,,r''''' ::ヘ
    | ン(●),ン..<(●)<:|
    |  `⌒,,ノ(、)ヽ⌒´ :l  物理DBが8個ってことは、一台あたり仮に月に1%の確率で障害起きるとしたら、
.   ヽヽ  il ,.-、|li r ;/
    ヽ ll.. |  |  l! /     元は毎月99%の確率で故障しなかったのが、故障しない確率が92%まで下がるじゃん!
     ヽl! |  |  l! /ヽ
   / ヽl! .ヽ/ l!/       部品が増えるほど故障率が上がるのは基本だよ!全体の故障率上げてどうするの!  
  /    ヽ`ニ´




          ____
        /     \
      / \   / \   そこはMulti-AZでハードウェア障害時に自動切り替えするので、仮に1台故障しても
     /   (●)  (●)  \
     |      __´___     |   5000ミリ秒程度でレプリカがマスターに昇格して、それこそ何事も無かったかのように自動復旧しますよ。
    \      `ー'´    /



69 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:31:18 ID:df76fa5c (11/16)

              /\
      /ヽ-―.: ̄ -:!、
    /::::.:::.   ノ  (○
.    l:::::..    ( ○)   ,)   それってコスト余分にかかるじゃん!リスクある事を提案して、わざわざ作ったリスクを吸収するために
.    l:::::::::.    ,,、ノく ,_、)
    ト ::::::..         r‐=ィ    レプリカ作らせて余計にお金かけさせるの?酷くない?   
.  /.:ゝ         `ニ´
      : l′ ―     -ノ




      / ̄ ̄\
    /  ヽ、_  \
   (●)(● )   |
   (__人__)     |
   (          |   AWSでは意図的に崩す設定を作らない限りは通常Multi-AZなので標準でレプリカ作られますが……。
.   {          |
   ⊂ ヽ∩     く
    | '、_ \ /  )
    |  |_\  “ ./
    ヽ、 __\_/



70 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:31:38 ID:df76fa5c (12/16)

       ____
      /     \
    /  \   / \
  /  (●)  (●)  \
 |       __´___       |   やらない夫さんから補足があった通りですので、続けますね。
 \      `ー'´    /
 /     ∩ノ ⊃   /
 (  \ / _ノ |  |
. \ “  /__|  |
   \ /___ /



          ____
        /     \       次にボットが大量に来た場合のコネクションの問題ですが、
      / ―   ― \
     /   (●)  (●)   \   先ほどの水平分割の影響で耐性が16倍程度に上昇しています。さらにコネクションプーリングで
     |         '         |
    \       ̄     /    全体のトランザクション数を予め確保しておいて、万が一それを越えた場合が直前のリクエストが
     ノ           \
                     処理を終えてコネクションが返却されるまで待つモデルにしました。



71 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:31:59 ID:df76fa5c (13/16)

      ,, -─-∧
    /    ─ \
   /   (●)   ヽ
   |   , -''(、_,.)   | >
   ヽ ( (´\ ( (●)/    待ってよ、ってことは、例えばプロモーションが当たって急に100倍のユーザ数になったら
  / \ヽ`ニ´ ノ  /
 /    `ー- 、一''       耐えられなくない?ダメじゃん   
 |  |     、 |




        ____
      /     \
     / _ノ  ヽ__  \
   / (● ) (● )  \
   |   (__人__)  u   |   元のままだと100倍どころか1.5倍でシステム全体がパフォーマンス低下しますお。
   \   ` ⌒´     /
    /  (__`ヽ、   u \
    \|  `\ \___ノ  |
     |    \___/ |
     |           {




      / ̄ ̄ ̄\
    / _,ノ  ⌒ \
   /  (●)  (●) \   まぁ、そんなプロモーション打つなら予算確保の段階でサーバ増強を予め盛り込んでおくのをお勧めします。
  |       、 ´      |
  \      ̄ ̄    /    次ですが……
   ノ           \

   



72 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:32:19 ID:df76fa5c (14/16)
全部終わって   



        ____
       /      \
     / ⌒    ⌒ \
    /   (●)  (<)  \
    |      ___'___     |   弊社の契約ですが、営業と相談しました結果、今月の残りは引継期間として4末で終了としたいのですが
     \     ` n´   ,/
    /     | |    \
..         ノ .ュ
         { ..ニj
        . | "ツ




       / ̄ ̄\
      /  \    \
    .(●)(● )  u. |
     (__人__)  u   |
     .(`⌒ ´     |   うん、ごめん…。
     {         |
      {      u. /
      \     /
      ノ     \
     /´        ヽ


        ____
      /     \
     / _ノ  ヽ__  \
   / (● ) (● )  \
   |   (__人__)  u   |   ダディ、エンジニア上がりのプロデューサーとして一番悪い形におちついてるから…すいません
   \   ` ⌒´     /
    /  (__`ヽ、   u \
    \|  `\ \___ノ  |
     |    \___/ |
     |           {



73 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:32:39 ID:df76fa5c (15/16)

     , ´  ̄ ̄ ̄`丶、
   /        ヽ \
  /  / //〃"" `ヽ ヽヽ ヽ
 / //l l /u    ヽハl l l
 li l l ll l,.ィ \   `─刈〃
  い.l lVト ーtッ‐'  ーtッー/      あいつ揚げ足取ってマウンティングする事に全精力を掲げて、
.  Ylヽ{ヽ⊂⊃ 、_,、_, ⊂⊃
  レレノレヽ.       ノ    =3    専門家をやりこめる=有能な証拠、って政治の仕方するから…ほんとスイマセン
  r ヽヽ::::::|ヽ`ー'´,1ー:::::ヽ、
  {  V:::::::::∨yヽ/::::::::::/,1
  |  \::::::::::ヽ/::::::::::: r" l


        ___
       /     \
     / ⌒   ⌒ \
    /  (⌒)  (⌒)  \   いえいえ。皆さんは退職を賭けないと逃げられないのに対して僕は契約で逃げられますから。
    |     ___´___     |
    ヽ、   `ー '´   /    それも折り込み済みの単価と契約期間ですから大丈夫ですよ。
     ノ          \



74 :◆NkPwUyO9zc [] :2019/04/17(Wed) 22:32:59 ID:df76fa5c (16/16)
以上です。まぁ、多くは語りません。
関連記事
スポンサーサイト



コメント

コメントの投稿

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



以上の内容はhttp://inzainewtown.blog.fc2.com/blog-entry-10999.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14