SlideShare a Scribd company logo
1 of 31
Download to read offline
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
FINAL	
  FANTASY	
  Record	
  Keeperを⽀支える
Webアプリケーションフレームワークの技術	
  
株式会社ディー・エヌ・エー	
  
Japanリージョン	
  ゲーム事業本部	
  
技術・編成部	
  開発基盤グループ	
  
越智	
  琢正	
  takumasa.ochi@dena.com	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
⾃自⼰己紹介	
  
!  越智琢正(おち	
  たくまさ)	
  
!  お仕事	
  
⁃  Webアプリケーションフレームワーク(GunyaSiF)のメンテナ	
  
⁃  Game⽤用	
  BaaS	
  の開発	
  
⁃  某開発中タイトルの	
  エンジニア	
  リーダー	
  
!  略略歴	
  
⁃  〜~2013:	
  超⼩小型⼈人⼯工衛星(50cm級)の研究開発	
  
•  主に姿勢制御系を担当、開発7割、研究3割	
  
•  ハードウェアからソフトウェア、姿勢解析や実験の治具設計まで何でも屋	
  
⁃  2013〜~:株式会社ディー・エヌ・エーに新卒⼊入社	
  
•  未経験の為、新卒研修でWebアプリやPerlを1から叩き込まれる1	
  
2	
  1.	
  ⼤大規模Perl初⼼心者研修を⽀支える技術	
  h;p://www.slideshare.net/DaisukeTamada/perl-­‐26371335	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
アジェンダ	
  
!  FFRKを⽀支えるWebアプリケーションフレームワーク(GunyaSiF)	
  
!  フレームワークの改良良	
  Before	
  FFRK	
  
⁃  Gadget	
  Server,	
  Feature	
  Phoneからの脱却	
  
⁃  Hot	
  Deployの実装	
  
!  フレームワークの改良良	
  After	
  FFRK	
  
⁃  Sessionの効率率率化	
  
3	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
FFRKを⽀支える
Webアプリケーションフレームワーク
(GunyaSiF)	
  
4	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
FFRKを⽀支えるWebアプリケーションフレームワーク(GunyaSiF)	
  
GunyaSiFとは?	
  
!  2013年年頃に作られたPerl,	
  Amon2ベースのフレームワーク1	
  
!  ポスト	
  MobaSiF2	
  時代の内製フレームワークとして作られた	
  
!  紆余曲折を経て、今はFINAL	
  FANTASY	
  Record	
  Keeper	
  を⽀支えている	
  
5	
  
1.  DeNAが開発した新たなフレームワーク「GunyaSiF」とは?h;p://next.rikunabi.com/tech/docs/ct_s03600.jsp?p=002398	
  
2.  【YAPC::Asia	
  2008】モバゲータウンのフレームワーク「MobaSiF」公開	
  h;p://codezine.jp/ar[cle/detail/2528	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
FFRKを⽀支えるWebアプリケーションフレームワーク(GunyaSiF)	
  
GunyaSiFが⽀支えているゲーム	
  
!  実は、ブラウザアプリから、iPhone,	
  Androidアプリまで様々	
  
6	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
FFRKを⽀支えるWebアプリケーションフレームワーク(GunyaSiF)	
  
GunyaSiFメンテナのお仕事	
  
!  調整役	
  
⁃  タイトルや部署間で⼈人をつないで、業務改善	
  
⁃  フレームワークの進化の為に、タイトルコードに触ることも	
  
!  相談役	
  
⁃  設計や実装、障害やバグ等で困ってる⼈人を助ける	
  
!  ネトスト	
  
⁃  IRCやGitHub等でGunyaSiFについて話す⼈人をウォッチして需要調査	
  
!  マッチポンプ	
  
⁃  問題が顕在化する前に、⾃自分でIssueを上げて解決する	
  
!  破壊と創造	
  
⁃  ここが今⽇日の本題	
  
⁃  かっこ良良く⾔言ってみただけで、あんまりクリエイティブではない、むしろ
地道で泥泥臭いお仕事。	
  様々なタイトルの意⾒見見を吸い上げ、必要ない場所は
消す。要求されている物は作る	
  ……	
  
⁃  ただし、破壊と創造をしていいのは、既存のアプリ全てがキチンと動くこ
とを担保した上でのこと……	
  
7	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良
Before	
  FFRK	
  
8	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  Before	
  FFRK	
  
Gadget	
  Server,
Feature	
  Phoneからの脱却	
  
9	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  Before	
  FFRK	
  
GunyaSiFはやや特殊な環境下で⽣生まれた	
  
!  2013年年、当時としては普通だった環境	
  
⁃  Feature	
  Phone	
  /	
  Smart	
  Phone	
  の同時対応	
  
⁃  Mobage	
  の	
  Gadget	
  Server	
  を通した環境	
  
•  認証済みのユーザーが、特定のProxy	
  Serverを介してGame	
  Serverに
リクエストを送ってくるような環境	
  
!  しかし、時代は瞬く間に移り変わった	
  
⁃  市場をうめつくしていく	
  Smart	
  Phone	
  
•  実のところ、GunyaSiFを利利⽤用したFPタイトルは⽇日の⽬目を⾒見見なかった	
  
⁃  Game	
  Serverが前⾯面に⽴立立ち、よりオープンなシステムへ	
  
•  JS	
  SDKを利利⽤用した認証等、認証が必須ではない世界	
  
⁃  ネイティブアプリの台頭	
  
10	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  Before	
  FFRK	
  
  時代に合わせてGunyaSiFも変化しなけ
ればならない	
  
  しかし、既存の全アプリの完全な動作を
担保しつつ、時代を追うのはメンテナン
スコスト	
  &	
  実装難易易度度が⾼高い	
  
  バージョンを切切る決断!	
  
11	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  Before	
  FFRK	
  
GunyaSiF	
  v0.2の誕⽣生	
  
!  v0.1を安定運⽤用ブランチへとして、v0.2を新⽣生GunyaSiFとする	
  
⁃  運⽤用アプリが存在しない状態で、躊躇ない⼤大規模改修を⾏行行う	
  
!  要らないものを徹底的に捨てる	
  
⁃  Gadget	
  Server、	
  FP対応のコードを捨てる	
  
⁃  ⼼心情的には勿体なく、つらいが、時代に合わせる為に割り切切る	
  
!  フレームワークの徹底的リファクタリング&修正	
  
⁃  密結合をしていたモジュールの分離離	
  
⁃  設計に限界が訪れたモジュールの再設計&再実装	
  
⁃  Gadget	
  Serverのおかげで、顕在化しなかったバグの修正	
  
!  結果	
  
⁃  累累計数万⾏行行に及ぶ削除&	
  更更新	
  
⁃  メンテナンス性、堅牢牢性、拡張性の向上	
  
⁃  ⾃自由度度の⾼高いWebアプリ	
  や	
  Nativeアプリへ挑む準備が完了了	
   12	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  Before	
  FFRK	
  
  GunyaSiF	
  v0.2では、SPAである「おさんぽホ
ッコリーナ」や「レボリューションスタジ
アム」、GunyaSiF初のアプリタイトルであ
る「にゃんパズル」が無事にリリースされた。	
  
が、FFRKをリリースするためには、もう⼀一つ⼤大
きな壁が存在した。	
  
13	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  Before	
  FFRK	
  
Hot	
  Deployの実装	
  
14	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  Before	
  FFRK	
  
GunyaSiFにはAtomicな形のHot	
  Deployは無かった	
  
!  特殊な構成環境が原因の1つ	
  
⁃  最低3レポジトリ以上から構成	
  (submoduleとかではない…)	
  
⁃  複数アプリを同居させる環境あり	
  
⁃  Deploy元にも先も、特殊な環境が必要	
  
その結果……	
  
Hot	
  Deployは先⼈人により挑戦されるものの、諦められていた…	
  
!  Hot	
  Deployが無い世界では、職⼈人芸	
  が繰り広げられていた…	
  
⁃  ファイルの依存関係、再起動タイミングまで計算に⼊入れる	
  
⁃  ファイルの反映順序に気を使った	
  2度度蒔き、3度度蒔き	
  
15	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  Before	
  FFRK	
  
  しかし、キャッシュ不不整合のリスクが	
  
  ⾮非常に⾼高く、運⽤用エンジニアもただただ⾟辛い	
  
  FFRKでは、Client	
  Cacheの特性上、不不整
合が致命的となることが分かった	
  
  ということで、作りました	
  
16	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  Before	
  FFRK	
  
Capistrano::GunyaSiF	
  
!  背景	
  
⁃  複雑なdeployにも対応でき、社内外で実績もある	
  Capistranoを採⽤用	
  
!  概要	
  
⁃  開発者は、Capistrano	
  3	
  の流流儀に従ったDSLを書くだけ	
  
⁃  複数レポジトリを独⽴立立にcloneして、role毎に良良い感じに構築	
  
⁃  rsyncをベースとして、ネットワーク負荷を削減	
  
!  エンジニアの⼼心理理的負荷削減や、Perl特有の問題の為に	
  
⁃  コミットハッシュ、ファイル差分レベルでのDry-‐‑‒run機能	
  
⁃  Server::Starter	
  以下のプロセスの世代交代検知タスク	
  
⁃  Xslateのプリコンパイルタスク(現在検討中)	
  
⁃  等など……	
  
!  結果	
  
⁃  Hot	
  Deployが可能になり、運⽤用⼯工数とリスクを⼤大幅削減	
  
⁃  QA/開発環境も同⼀一⼿手法で構築可能になり、開発⼯工数も⼤大幅削減	
  
17	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  Before	
  FFRK	
  
  そして、無事にFFRKのリリース⽇日を迎
えたのであった	
  
  $	
  cap	
  production	
  deploy	
  (ッターン	
  
18	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良
After	
  FFRK	
  
19	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  AAer	
  FFRK	
  
  FFRKの⼤大ヒットにより、フレームワー
クとして、初めて晒されるレベルの負荷
がかかる	
  
  当然、これまで全く問題が無かったとこ
ろから、問題が出てくる	
  
20	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  AAer	
  FFRK	
  
Sessionの効率率率化	
  
21	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  AAer	
  FFRK	
  
FFRKリリース後のとある⽇日
インフラの偉い⼈人	
  
	
  「この調⼦子でDAUが◯◯万来るとMySQL
のMaster負荷が危険⽔水域になる。
GunyaSiFが投げてるクエリも原因っぽ
いから、なんとかしてね。」
	
  「!!!」	
  
22	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
コードを眺めること、数⼗十秒
嫌な予感が的中する。。。。。	
  
23	
  
フレームワークの改良良	
  AAer	
  FFRK	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
Sessionを常にMySQLのMasterから
SELECTしている……
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /(^o^)\
Sessionは⾊色んなタイトルの⾊色んな場
所で使われてるので、中⾝身だけ変えて、
Slaveに負荷を逃がす…	
  
24	
  
フレームワークの改良良	
  AAer	
  FFRK	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  AAer	
  FFRK	
  
HTTP::Session2::MultiStore(設計)	
  	
  
!  既存のSessionオブジェクトを下⽅方互換を保ちつつ、内部設計変更更	
  
!  HTTP::Session2を複数のStore先を保持できるように拡張	
  
⁃  get,	
  set,	
  remove	
  等の	
  I/Fを持つ	
  Storeであれば、KVSでも
ClientStoreでも複数登録可能	
  
!  ⾃自動的な参照先の切切替	
  
⁃  1リクエスト中のデータをプロセスキャッシュ	
  
⁃  Sessionへの操作から良良い感じに	
  
Master	
  /	
  Slaveの向き先を⾃自動決定	
  
⁃  Masterへのfallbackと明⽰示的な
切切替機構の搭載により
必要最低限なコードで、
レプリケーション遅延を制御可能
タイトル側のコードには、基本的に
変更更の必要性なし【重要】	
   25	
  
Master	
  
Session	
  
Slave1	
  
Cached	
  data	
  
from	
  Slave	
  
Cached	
  data	
  
from	
  Master	
  
Slave2	
  
Switching	
  
get/set/
delete/expire…	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  AAer	
  FFRK	
  
HTTP::Session2::MultiStore	
  (結果)	
  
!  Masterへの参照系負荷を20分の1以下まで削減	
  
⁃  1700	
  [QPS]	
  =>	
  75	
  [QPS]	
  
⁃  Slaveに負荷を分散	
  
⁃  スケールアウト可能な状態に	
  
!  勿論論、サービスを⽌止めずにhot	
  deploy	
  
!  負荷の削減幅が⼤大きく、頭では理理解していても、何か問題が発⽣生し
ているのではないかと、deploy時の冷冷汗が⽌止まらなかった……	
  
26	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  AAer	
  FFRK	
  
HTTP::Session2::MultiStore	
  (結果詳細)	
  
27	
  
Masterの負荷削減	
  
約	
  -­‐	
  1600	
  QPS	
  
Slave1台当たりの負荷上昇	
  
約	
  +900	
  QPS	
  
Slave1台当たりの負荷上昇	
  
約	
  +900	
  QPS	
  
灰⾊色の部分が参照系クエリ。横軸が時間。縦軸が負荷。最⼩小値はゼロ	
  
17:40の反映後にMasterの負荷が急激に減少。Slaveは増加	
  
負荷を2台に分散	
  
Masterの参照系負荷を20分の1にして、負荷分散に成功	
  
※	
  全体として負荷が増えたように⾒見見えるのは、負荷が上昇トレンドであることや	
  
ロジックのオーバーヘッドが原因として考えられる。また、運⽤用優先でデプロイを⾏行行って
いる為、正確な実験データではないことをご承知いただきたい。	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
この他にも、嬉しい悲鳴を上げながら
、⾊色んな改良良を重ねて来ました。
28	
  
フレームワークの改良良	
  AAer	
  FFRK	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
フレームワークの改良良	
  AAer	
  FFRK	
  
その他の改良良点	
  
!  MySQLのMHAに対応する為のDNS	
  Resolverを⼊入れ替え	
  
⁃  DNSプロトコルを⽤用いず、MyDNSのDBを直接引く形式に	
  
⁃  重みゼロのレコードも取得可能	
  
⁃  MyDNSへの負荷を⼤大きく削減	
  
!  MySQLへのConnection管理理部分を全⾯面的に修正	
  
⁃  同時接続数を約2分の1に削減	
  
29	
  
オレンジの部分が同時接続数。横軸が時間。	
  
18:20分頃の反映を境に、2分の1程度度に減少	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
まとめ	
  
!  FFRKを⽀支えるGunyaSiFはPerl,	
  Amon2ベースの内製フレームワーク	
  
!  ⼀一旦、サービスインしたフレームワークであっても、時代に合わせ
て進化させていく必要がある	
  
!  FFRKを⽀支えられるようになるまでに、GunyaSiFにも多くの改良良や
調整が加えられてきた	
  
!  フレームワークの舵取りや、設計・実装が功を奏し、利利⽤用者に喜ば
れる時がメンテをしていて⼀一番楽しい	
  
!  DeNAでは、⼀一緒に働いてくれるサーバーサイドエンジニアを募集し
ています!	
  
30	
  
Copyright	
  (C)	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
ご静聴ありがとうございました	
  
31	
  

More Related Content

What's hot

ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門dena_study
 
制作を支えたツール達 (パズル戦隊デナレンジャー)
制作を支えたツール達 (パズル戦隊デナレンジャー)制作を支えたツール達 (パズル戦隊デナレンジャー)
制作を支えたツール達 (パズル戦隊デナレンジャー)dena_study
 
ガールアックス:リアルタイム通信処理の効率的な実装
ガールアックス:リアルタイム通信処理の効率的な実装ガールアックス:リアルタイム通信処理の効率的な実装
ガールアックス:リアルタイム通信処理の効率的な実装dena_study
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)denatech2016
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術dena_study
 
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話Toshiharu Shirai
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconDeNA
 
Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術kazuya noshiro
 
消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれ消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれShun Noguchi
 
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」Web Technology Corp.
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA
 
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~Web Technology Corp.
 
エフェクト、アニメーション、演出のデータ作るの大変じゃないですか? DeNAではこうしてます。
エフェクト、アニメーション、演出のデータ作るの大変じゃないですか? DeNAではこうしてます。エフェクト、アニメーション、演出のデータ作るの大変じゃないですか? DeNAではこうしてます。
エフェクト、アニメーション、演出のデータ作るの大変じゃないですか? DeNAではこうしてます。DeNA_Creators
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)Toshiharu Sugiyama
 
DeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNA
 
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNAの動画配信サービスを支えるインフラの内部  #denatechconDeNAの動画配信サービスを支えるインフラの内部  #denatechcon
DeNAの動画配信サービスを支えるインフラの内部 #denatechconDeNA
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechconDeNA
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容sairoutine
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術Toru Yamaguchi
 
DeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA
 

What's hot (20)

ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
 
制作を支えたツール達 (パズル戦隊デナレンジャー)
制作を支えたツール達 (パズル戦隊デナレンジャー)制作を支えたツール達 (パズル戦隊デナレンジャー)
制作を支えたツール達 (パズル戦隊デナレンジャー)
 
ガールアックス:リアルタイム通信処理の効率的な実装
ガールアックス:リアルタイム通信処理の効率的な実装ガールアックス:リアルタイム通信処理の効率的な実装
ガールアックス:リアルタイム通信処理の効率的な実装
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
 
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術
 
消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれ消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれ
 
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
 
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
 
エフェクト、アニメーション、演出のデータ作るの大変じゃないですか? DeNAではこうしてます。
エフェクト、アニメーション、演出のデータ作るの大変じゃないですか? DeNAではこうしてます。エフェクト、アニメーション、演出のデータ作るの大変じゃないですか? DeNAではこうしてます。
エフェクト、アニメーション、演出のデータ作るの大変じゃないですか? DeNAではこうしてます。
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 
DeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechcon
 
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNAの動画配信サービスを支えるインフラの内部  #denatechconDeNAの動画配信サービスを支えるインフラの内部  #denatechcon
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
 
DeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechcon
 

Similar to FFRKを支えるWebアプリケーションフレームワークの技術

DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNA
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingKeiji Kikuchi
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”Drecom Co., Ltd.
 
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野livedoor
 
Essentials of container
Essentials of containerEssentials of container
Essentials of containerToru Makabe
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Shunsuke Maeda
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkinsKohsuke Kawaguchi
 
Cerebro for VFX / Animation Japan
Cerebro for VFX / Animation JapanCerebro for VFX / Animation Japan
Cerebro for VFX / Animation JapanCineSoft
 
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容Tomokazu Kizawa
 
グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編Mitsuhiro Tanda
 
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月VirtualTech Japan Inc.
 
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform CloudWataru Unno
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -Tomoya Kabe
 
JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013Kazuho Oku
 
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。ひさし App
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議Shinra_Technologies
 

Similar to FFRKを支えるWebアプリケーションフレームワークの技術 (20)

DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
 
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野
 
Essentials of container
Essentials of containerEssentials of container
Essentials of container
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
 
Cerebro for VFX / Animation Japan
Cerebro for VFX / Animation JapanCerebro for VFX / Animation Japan
Cerebro for VFX / Animation Japan
 
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
 
グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編
 
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
 
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
 
JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013
 
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
ドリコムのインフラCI
ドリコムのインフラCIドリコムのインフラCI
ドリコムのインフラCI
 
Hbstudy41 slide
Hbstudy41 slideHbstudy41 slide
Hbstudy41 slide
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議
 

FFRKを支えるWebアプリケーションフレームワークの技術

  • 1. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   FINAL  FANTASY  Record  Keeperを⽀支える Webアプリケーションフレームワークの技術   株式会社ディー・エヌ・エー   Japanリージョン  ゲーム事業本部   技術・編成部  開発基盤グループ   越智  琢正  takumasa.ochi@dena.com  
  • 2. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   ⾃自⼰己紹介   !  越智琢正(おち  たくまさ)   !  お仕事   ⁃  Webアプリケーションフレームワーク(GunyaSiF)のメンテナ   ⁃  Game⽤用  BaaS  の開発   ⁃  某開発中タイトルの  エンジニア  リーダー   !  略略歴   ⁃  〜~2013:  超⼩小型⼈人⼯工衛星(50cm級)の研究開発   •  主に姿勢制御系を担当、開発7割、研究3割   •  ハードウェアからソフトウェア、姿勢解析や実験の治具設計まで何でも屋   ⁃  2013〜~:株式会社ディー・エヌ・エーに新卒⼊入社   •  未経験の為、新卒研修でWebアプリやPerlを1から叩き込まれる1   2  1.  ⼤大規模Perl初⼼心者研修を⽀支える技術  h;p://www.slideshare.net/DaisukeTamada/perl-­‐26371335  
  • 3. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   アジェンダ   !  FFRKを⽀支えるWebアプリケーションフレームワーク(GunyaSiF)   !  フレームワークの改良良  Before  FFRK   ⁃  Gadget  Server,  Feature  Phoneからの脱却   ⁃  Hot  Deployの実装   !  フレームワークの改良良  After  FFRK   ⁃  Sessionの効率率率化   3  
  • 4. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   FFRKを⽀支える Webアプリケーションフレームワーク (GunyaSiF)   4  
  • 5. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   FFRKを⽀支えるWebアプリケーションフレームワーク(GunyaSiF)   GunyaSiFとは?   !  2013年年頃に作られたPerl,  Amon2ベースのフレームワーク1   !  ポスト  MobaSiF2  時代の内製フレームワークとして作られた   !  紆余曲折を経て、今はFINAL  FANTASY  Record  Keeper  を⽀支えている   5   1.  DeNAが開発した新たなフレームワーク「GunyaSiF」とは?h;p://next.rikunabi.com/tech/docs/ct_s03600.jsp?p=002398   2.  【YAPC::Asia  2008】モバゲータウンのフレームワーク「MobaSiF」公開  h;p://codezine.jp/ar[cle/detail/2528  
  • 6. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   FFRKを⽀支えるWebアプリケーションフレームワーク(GunyaSiF)   GunyaSiFが⽀支えているゲーム   !  実は、ブラウザアプリから、iPhone,  Androidアプリまで様々   6  
  • 7. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   FFRKを⽀支えるWebアプリケーションフレームワーク(GunyaSiF)   GunyaSiFメンテナのお仕事   !  調整役   ⁃  タイトルや部署間で⼈人をつないで、業務改善   ⁃  フレームワークの進化の為に、タイトルコードに触ることも   !  相談役   ⁃  設計や実装、障害やバグ等で困ってる⼈人を助ける   !  ネトスト   ⁃  IRCやGitHub等でGunyaSiFについて話す⼈人をウォッチして需要調査   !  マッチポンプ   ⁃  問題が顕在化する前に、⾃自分でIssueを上げて解決する   !  破壊と創造   ⁃  ここが今⽇日の本題   ⁃  かっこ良良く⾔言ってみただけで、あんまりクリエイティブではない、むしろ 地道で泥泥臭いお仕事。  様々なタイトルの意⾒見見を吸い上げ、必要ない場所は 消す。要求されている物は作る  ……   ⁃  ただし、破壊と創造をしていいのは、既存のアプリ全てがキチンと動くこ とを担保した上でのこと……   7  
  • 8. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良 Before  FFRK   8  
  • 9. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  Before  FFRK   Gadget  Server, Feature  Phoneからの脱却   9  
  • 10. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  Before  FFRK   GunyaSiFはやや特殊な環境下で⽣生まれた   !  2013年年、当時としては普通だった環境   ⁃  Feature  Phone  /  Smart  Phone  の同時対応   ⁃  Mobage  の  Gadget  Server  を通した環境   •  認証済みのユーザーが、特定のProxy  Serverを介してGame  Serverに リクエストを送ってくるような環境   !  しかし、時代は瞬く間に移り変わった   ⁃  市場をうめつくしていく  Smart  Phone   •  実のところ、GunyaSiFを利利⽤用したFPタイトルは⽇日の⽬目を⾒見見なかった   ⁃  Game  Serverが前⾯面に⽴立立ち、よりオープンなシステムへ   •  JS  SDKを利利⽤用した認証等、認証が必須ではない世界   ⁃  ネイティブアプリの台頭   10  
  • 11. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  Before  FFRK     時代に合わせてGunyaSiFも変化しなけ ればならない     しかし、既存の全アプリの完全な動作を 担保しつつ、時代を追うのはメンテナン スコスト  &  実装難易易度度が⾼高い     バージョンを切切る決断!   11  
  • 12. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  Before  FFRK   GunyaSiF  v0.2の誕⽣生   !  v0.1を安定運⽤用ブランチへとして、v0.2を新⽣生GunyaSiFとする   ⁃  運⽤用アプリが存在しない状態で、躊躇ない⼤大規模改修を⾏行行う   !  要らないものを徹底的に捨てる   ⁃  Gadget  Server、  FP対応のコードを捨てる   ⁃  ⼼心情的には勿体なく、つらいが、時代に合わせる為に割り切切る   !  フレームワークの徹底的リファクタリング&修正   ⁃  密結合をしていたモジュールの分離離   ⁃  設計に限界が訪れたモジュールの再設計&再実装   ⁃  Gadget  Serverのおかげで、顕在化しなかったバグの修正   !  結果   ⁃  累累計数万⾏行行に及ぶ削除&  更更新   ⁃  メンテナンス性、堅牢牢性、拡張性の向上   ⁃  ⾃自由度度の⾼高いWebアプリ  や  Nativeアプリへ挑む準備が完了了   12  
  • 13. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  Before  FFRK     GunyaSiF  v0.2では、SPAである「おさんぽホ ッコリーナ」や「レボリューションスタジ アム」、GunyaSiF初のアプリタイトルであ る「にゃんパズル」が無事にリリースされた。   が、FFRKをリリースするためには、もう⼀一つ⼤大 きな壁が存在した。   13  
  • 14. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  Before  FFRK   Hot  Deployの実装   14  
  • 15. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  Before  FFRK   GunyaSiFにはAtomicな形のHot  Deployは無かった   !  特殊な構成環境が原因の1つ   ⁃  最低3レポジトリ以上から構成  (submoduleとかではない…)   ⁃  複数アプリを同居させる環境あり   ⁃  Deploy元にも先も、特殊な環境が必要   その結果……   Hot  Deployは先⼈人により挑戦されるものの、諦められていた…   !  Hot  Deployが無い世界では、職⼈人芸  が繰り広げられていた…   ⁃  ファイルの依存関係、再起動タイミングまで計算に⼊入れる   ⁃  ファイルの反映順序に気を使った  2度度蒔き、3度度蒔き   15  
  • 16. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  Before  FFRK     しかし、キャッシュ不不整合のリスクが     ⾮非常に⾼高く、運⽤用エンジニアもただただ⾟辛い     FFRKでは、Client  Cacheの特性上、不不整 合が致命的となることが分かった     ということで、作りました   16  
  • 17. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  Before  FFRK   Capistrano::GunyaSiF   !  背景   ⁃  複雑なdeployにも対応でき、社内外で実績もある  Capistranoを採⽤用   !  概要   ⁃  開発者は、Capistrano  3  の流流儀に従ったDSLを書くだけ   ⁃  複数レポジトリを独⽴立立にcloneして、role毎に良良い感じに構築   ⁃  rsyncをベースとして、ネットワーク負荷を削減   !  エンジニアの⼼心理理的負荷削減や、Perl特有の問題の為に   ⁃  コミットハッシュ、ファイル差分レベルでのDry-‐‑‒run機能   ⁃  Server::Starter  以下のプロセスの世代交代検知タスク   ⁃  Xslateのプリコンパイルタスク(現在検討中)   ⁃  等など……   !  結果   ⁃  Hot  Deployが可能になり、運⽤用⼯工数とリスクを⼤大幅削減   ⁃  QA/開発環境も同⼀一⼿手法で構築可能になり、開発⼯工数も⼤大幅削減   17  
  • 18. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  Before  FFRK     そして、無事にFFRKのリリース⽇日を迎 えたのであった     $  cap  production  deploy  (ッターン   18  
  • 19. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良 After  FFRK   19  
  • 20. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  AAer  FFRK     FFRKの⼤大ヒットにより、フレームワー クとして、初めて晒されるレベルの負荷 がかかる     当然、これまで全く問題が無かったとこ ろから、問題が出てくる   20  
  • 21. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  AAer  FFRK   Sessionの効率率率化   21  
  • 22. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  AAer  FFRK   FFRKリリース後のとある⽇日 インフラの偉い⼈人    「この調⼦子でDAUが◯◯万来るとMySQL のMaster負荷が危険⽔水域になる。 GunyaSiFが投げてるクエリも原因っぽ いから、なんとかしてね。」  「!!!」   22  
  • 23. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   コードを眺めること、数⼗十秒 嫌な予感が的中する。。。。。   23   フレームワークの改良良  AAer  FFRK  
  • 24. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   Sessionを常にMySQLのMasterから SELECTしている……                                        /(^o^)\ Sessionは⾊色んなタイトルの⾊色んな場 所で使われてるので、中⾝身だけ変えて、 Slaveに負荷を逃がす…   24   フレームワークの改良良  AAer  FFRK  
  • 25. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  AAer  FFRK   HTTP::Session2::MultiStore(設計)     !  既存のSessionオブジェクトを下⽅方互換を保ちつつ、内部設計変更更   !  HTTP::Session2を複数のStore先を保持できるように拡張   ⁃  get,  set,  remove  等の  I/Fを持つ  Storeであれば、KVSでも ClientStoreでも複数登録可能   !  ⾃自動的な参照先の切切替   ⁃  1リクエスト中のデータをプロセスキャッシュ   ⁃  Sessionへの操作から良良い感じに   Master  /  Slaveの向き先を⾃自動決定   ⁃  Masterへのfallbackと明⽰示的な 切切替機構の搭載により 必要最低限なコードで、 レプリケーション遅延を制御可能 タイトル側のコードには、基本的に 変更更の必要性なし【重要】   25   Master   Session   Slave1   Cached  data   from  Slave   Cached  data   from  Master   Slave2   Switching   get/set/ delete/expire…  
  • 26. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  AAer  FFRK   HTTP::Session2::MultiStore  (結果)   !  Masterへの参照系負荷を20分の1以下まで削減   ⁃  1700  [QPS]  =>  75  [QPS]   ⁃  Slaveに負荷を分散   ⁃  スケールアウト可能な状態に   !  勿論論、サービスを⽌止めずにhot  deploy   !  負荷の削減幅が⼤大きく、頭では理理解していても、何か問題が発⽣生し ているのではないかと、deploy時の冷冷汗が⽌止まらなかった……   26  
  • 27. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  AAer  FFRK   HTTP::Session2::MultiStore  (結果詳細)   27   Masterの負荷削減   約  -­‐  1600  QPS   Slave1台当たりの負荷上昇   約  +900  QPS   Slave1台当たりの負荷上昇   約  +900  QPS   灰⾊色の部分が参照系クエリ。横軸が時間。縦軸が負荷。最⼩小値はゼロ   17:40の反映後にMasterの負荷が急激に減少。Slaveは増加   負荷を2台に分散   Masterの参照系負荷を20分の1にして、負荷分散に成功   ※  全体として負荷が増えたように⾒見見えるのは、負荷が上昇トレンドであることや   ロジックのオーバーヘッドが原因として考えられる。また、運⽤用優先でデプロイを⾏行行って いる為、正確な実験データではないことをご承知いただきたい。  
  • 28. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   この他にも、嬉しい悲鳴を上げながら 、⾊色んな改良良を重ねて来ました。 28   フレームワークの改良良  AAer  FFRK  
  • 29. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   フレームワークの改良良  AAer  FFRK   その他の改良良点   !  MySQLのMHAに対応する為のDNS  Resolverを⼊入れ替え   ⁃  DNSプロトコルを⽤用いず、MyDNSのDBを直接引く形式に   ⁃  重みゼロのレコードも取得可能   ⁃  MyDNSへの負荷を⼤大きく削減   !  MySQLへのConnection管理理部分を全⾯面的に修正   ⁃  同時接続数を約2分の1に削減   29   オレンジの部分が同時接続数。横軸が時間。   18:20分頃の反映を境に、2分の1程度度に減少  
  • 30. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   まとめ   !  FFRKを⽀支えるGunyaSiFはPerl,  Amon2ベースの内製フレームワーク   !  ⼀一旦、サービスインしたフレームワークであっても、時代に合わせ て進化させていく必要がある   !  FFRKを⽀支えられるようになるまでに、GunyaSiFにも多くの改良良や 調整が加えられてきた   !  フレームワークの舵取りや、設計・実装が功を奏し、利利⽤用者に喜ば れる時がメンテをしていて⼀一番楽しい   !  DeNAでは、⼀一緒に働いてくれるサーバーサイドエンジニアを募集し ています!   30  
  • 31. Copyright  (C)  DeNA  Co.,Ltd.  All  Rights  Reserved.   ご静聴ありがとうございました   31