SlideShare ist ein Scribd-Unternehmen logo
1 von 66
Downloaden Sie, um offline zu lesen
ゆるドラ運営記
Ryota Matsumoto
Copyright © Clover Lab.,inc. All Rights Reserved.
自己紹介
Copyright © Clover Lab.,inc. All Rights Reserved.
自己紹介
松本 亮太 (まつもと りょうた)
クローバーラボ株式会社
技術部
・2013年 新卒入社
・モバイルソーシャルゲーム開発
・サーバーサイドエンジニア
・ゆるドラシルを運営・開発
Copyright © Clover Lab.,inc. All Rights Reserved.
島根県松江市
大根島
Copyright © Clover Lab.,inc. All Rights Reserved.
高麗人参
Copyright © Clover Lab.,inc. All Rights Reserved.
クローバーラボ
・モバイルゲームアプリの企画・開発・運営
・社員数 約60人
・平均年齢 20代後半
Copyright © Clover Lab.,inc. All Rights Reserved.
ゆるドラシル
Copyright © Clover Lab.,inc. All Rights Reserved.
ゆるドラシル
2014.03 リリース
500万DL突破
#iOS
- App Store
#Android
- GooglePlay Store
- 楽天アプリ市場
Copyright © Clover Lab.,inc. All Rights Reserved.
北欧神話
・シリアス&コミカルなストーリーで展開する神話RPG
・バトルは基本オートのコマンドバトル
・ド派手な必殺技
Copyright © Clover Lab.,inc. All Rights Reserved.
アジェンダ
Copyright © Clover Lab.,inc. All Rights Reserved.
本当は…
Copyright © Clover Lab.,inc. All Rights Reserved.
Copyright © Clover Lab.,inc. All Rights Reserved.
Copyright © Clover Lab.,inc. All Rights Reserved.
アジェンダ
・ゆるドラシルの構成
・擬似パーティション
・バッチ実行してたら途中で止まる件
・プレゼント配布に4時間かかる問題
・メンテンパル現象
Copyright © Clover Lab.,inc. All Rights Reserved.
ゆるドラシルの構成
Copyright © Clover Lab.,inc. All Rights Reserved.
ゆるドラシルの開発言語
・PHP (Code Igniter)
・C++(Cocos2d-x)
・JavaScript
Copyright © Clover Lab.,inc. All Rights Reserved.
ゆるドラシルのサーバー
・DBサーバー
・アプリケーションサーバー
・memcachedサーバー
・redisサーバー
Copyright © Clover Lab.,inc. All Rights Reserved.
ゆるドラシルのツール
・Vagrant
・chef
・Git
・Spine
・CocosBuilder
Copyright © Clover Lab.,inc. All Rights Reserved.
ハイブリットアプリ
Copyright © Clover Lab.,inc. All Rights Reserved.
一般的なハイブリットアプリ
WebViewの中でHTMLの画面を表示する
モバイルアプリ
- WebView のみ
- ガワネイティブ
- SNS系
- ブラウザ + α
Native
WebView
Copyright © Clover Lab.,inc. All Rights Reserved.
ゆるドラ的なハイブリットアプリ
ネイティブ部分とWebViewを両立させた
モバイルアプリ
- どちらもメイン機能
- 画面単位で使い分け
- リリース当初は7:3
Native
Web
View
Copyright © Clover Lab.,inc. All Rights Reserved.
なぜハイブリット?
・ノウハウと資産を活かす
・小規模チーム
・短期開発
Copyright © Clover Lab.,inc. All Rights Reserved.
擬似パーティション
Copyright © Clover Lab.,inc. All Rights Reserved.
擬似パーティションとは?
・データ群を複数のテーブルで分解管理すること
・MySQLのパーティションとは違う
・シャーディングのようにDBが別でもない
Copyright © Clover Lab.,inc. All Rights Reserved.
具体的に
・テーブル名 = モデル名 + 会員IDの下1桁(下2桁)
・モデル内で会員IDを元にテーブル名を制御する
例) Units +会員IDの下1桁 = Units0, Units1 …
Copyright © Clover Lab.,inc. All Rights Reserved.
Units0 Units1 Units9
10 20
50 100
11 11
21 101
9 19
29 109
そうするとこうなる
…
Copyright © Clover Lab.,inc. All Rights Reserved.
擬似パーティションの目安
・普段から使用するデータ
・データ量が増えることが予想できる
・不要なデータと必要なデータが入り混じる
・不要なデータも後に必要になる可能性がある
Copyright © Clover Lab.,inc. All Rights Reserved.
メリット
・データの集計・収集が大変
デメリット
・データの参照や更新の負荷が分散される
デメリット
Copyright © Clover Lab.,inc. All Rights Reserved.
バッチ実行してたら
途中で止まる件
Copyright © Clover Lab.,inc. All Rights Reserved.
冪等性
(べきとうせい)
Copyright © Clover Lab.,inc. All Rights Reserved.
冪等性とは
ある操作を1度行っても
複数回行っても
同じ効果を得られること
Copyright © Clover Lab.,inc. All Rights Reserved.
なぜ冪等性?
・ミス対策
・予期せぬエラーに備える
Copyright © Clover Lab.,inc. All Rights Reserved.
身近な例として
・本番環境でタイムアウトが発生した
・データ量が多くてメモリからあふれた
・環境の設定違いで何かしらエラー
Copyright © Clover Lab.,inc. All Rights Reserved.
もしも…
Copyright © Clover Lab.,inc. All Rights Reserved.
お詫び配布中…
Copyright © Clover Lab.,inc. All Rights Reserved.
packet_write_wait: Broken
pipe
Copyright © Clover Lab.,inc. All Rights Reserved.
Copyright © Clover Lab.,inc. All Rights Reserved.
Copyright © Clover Lab.,inc. All Rights Reserved.
Copyright © Clover Lab.,inc. All Rights Reserved.
Copyright © Clover Lab.,inc. All Rights Reserved.
冪等性を考えてたら…
Copyright © Clover Lab.,inc. All Rights Reserved.
Copyright © Clover Lab.,inc. All Rights Reserved.
具体的に
・小分けのトランザクション
・トランザクション単位保存
・どのトランザクションまで成功したかも保存
・最後に成功した次のトランザクションから再開
Copyright © Clover Lab.,inc. All Rights Reserved.
バッチ実行してたら
途中で止まる件
Copyright © Clover Lab.,inc. All Rights Reserved.
プレゼント配布に
4時間かかる問題
Copyright © Clover Lab.,inc. All Rights Reserved.
全ユーザーに配布
・ログインしていないユーザーにも配布
・多くなってきて酷い時は4時間以上かかった
・もちろんタイムアウトしたり、メモリ溢れたり…
Copyright © Clover Lab.,inc. All Rights Reserved.
無駄に拘束される
4時間をなんとかしたい
Copyright © Clover Lab.,inc. All Rights Reserved.
オレの人生が削れる
Copyright © Clover Lab.,inc. All Rights Reserved.
ログイン時に付与
・OS別
・アイテムはどんなものでも配布可能
・プレゼントが配布された時刻を指定出来る
・指定ユーザーのみ配布
・ チュートリアル突破期間を指定出来るように
・プレゼントを配布する期間
Copyright © Clover Lab.,inc. All Rights Reserved.
プレゼント配布に
4時間かかる問題
Copyright © Clover Lab.,inc. All Rights Reserved.
メンテンパル現象
Copyright © Clover Lab.,inc. All Rights Reserved.
メンテ(中に)テンパる現象
Copyright © Clover Lab.,inc. All Rights Reserved.
今まで…
・ユーザーもあまり多くない
・小規模チーム
・企画1人グラフィック2人エンジニア1人
・開発スケジュールも1ライン
Copyright © Clover Lab.,inc. All Rights Reserved.
ゆるドラシルでは...
・開発スケジュールのスピード感
・フレキシブルな運用スケジュール
・複数開発ラインがある運営
Copyright © Clover Lab.,inc. All Rights Reserved.
求められるスキル
・優先順位の決定
・大人数でのコミュニケーション
・求められるクオリティの高さ
Copyright © Clover Lab.,inc. All Rights Reserved.
「テキスト変更お願い!」
Copyright © Clover Lab.,inc. All Rights Reserved.
「日付間違ってるで!」
Copyright © Clover Lab.,inc. All Rights Reserved.
「データ調整したい!」
Copyright © Clover Lab.,inc. All Rights Reserved.
あれ?次、何やるんだっけ?
Copyright © Clover Lab.,inc. All Rights Reserved.
_人人人人人人人人人人_
> メンテンパル現象 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
Copyright © Clover Lab.,inc. All Rights Reserved.
様々な声が
・確認作業の専属化
・デプロイ方法をそもそも変える
・当事者の意識の問題
Copyright © Clover Lab.,inc. All Rights Reserved.
メンテナンス手順書
・追加 / 更新内容記載
・どういうコマンドを使うのか
・どの程度確認を行うのか
・QiitaTeamで社内全体に共有
Copyright © Clover Lab.,inc. All Rights Reserved.
Copyright © Clover Lab.,inc. All Rights Reserved.
メンテンパル現象
Copyright © Clover Lab.,inc. All Rights Reserved.
最後に
Copyright © Clover Lab.,inc. All Rights Reserved.
ご清聴ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

REALITY「なりたい自分で、生きていく」リアルタイムライブでVTuberが活躍する舞台を作る現場の1年
REALITY「なりたい自分で、生きていく」リアルタイムライブでVTuberが活躍する舞台を作る現場の1年REALITY「なりたい自分で、生きていく」リアルタイムライブでVTuberが活躍する舞台を作る現場の1年
REALITY「なりたい自分で、生きていく」リアルタイムライブでVTuberが活躍する舞台を作る現場の1年gree_tech
 
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料Drecom Co., Ltd.
 
20191128 近未来教育フォーラム2019公開版
20191128 近未来教育フォーラム2019公開版20191128 近未来教育フォーラム2019公開版
20191128 近未来教育フォーラム2019公開版GREE VR Studio Lab
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてdena_study
 
大規模SNSにおけるソーシャルアプリの運用とマネタイズ
大規模SNSにおけるソーシャルアプリの運用とマネタイズ大規模SNSにおけるソーシャルアプリの運用とマネタイズ
大規模SNSにおけるソーシャルアプリの運用とマネタイズyouthk kamiya
 

Was ist angesagt? (6)

REALITY「なりたい自分で、生きていく」リアルタイムライブでVTuberが活躍する舞台を作る現場の1年
REALITY「なりたい自分で、生きていく」リアルタイムライブでVTuberが活躍する舞台を作る現場の1年REALITY「なりたい自分で、生きていく」リアルタイムライブでVTuberが活躍する舞台を作る現場の1年
REALITY「なりたい自分で、生きていく」リアルタイムライブでVTuberが活躍する舞台を作る現場の1年
 
組込み向けRuby処理系mrubyの可能性
組込み向けRuby処理系mrubyの可能性組込み向けRuby処理系mrubyの可能性
組込み向けRuby処理系mrubyの可能性
 
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料
 
20191128 近未来教育フォーラム2019公開版
20191128 近未来教育フォーラム2019公開版20191128 近未来教育フォーラム2019公開版
20191128 近未来教育フォーラム2019公開版
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについて
 
大規模SNSにおけるソーシャルアプリの運用とマネタイズ
大規模SNSにおけるソーシャルアプリの運用とマネタイズ大規模SNSにおけるソーシャルアプリの運用とマネタイズ
大規模SNSにおけるソーシャルアプリの運用とマネタイズ
 

Andere mochten auch

アプリ開発・運用で楽をするために知っておくべき Unity Services
アプリ開発・運用で楽をするために知っておくべき Unity Servicesアプリ開発・運用で楽をするために知っておくべき Unity Services
アプリ開発・運用で楽をするために知っておくべき Unity ServicesYasuyuki Kamata
 
Amazon API Gateway を活用したゲームサーバー構築
Amazon API Gateway を活用したゲームサーバー構築Amazon API Gateway を活用したゲームサーバー構築
Amazon API Gateway を活用したゲームサーバー構築崇之 清水
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgameSatoshi Yamafuji
 
アセット作家になろう! ~作ったキャラクターやスクリプトをアセットストアに出品しよう!~
アセット作家になろう! ~作ったキャラクターやスクリプトをアセットストアに出品しよう!~アセット作家になろう! ~作ったキャラクターやスクリプトをアセットストアに出品しよう!~
アセット作家になろう! ~作ったキャラクターやスクリプトをアセットストアに出品しよう!~Takashi Jona
 
初心者向けゲームジャム攻略法
初心者向けゲームジャム攻略法初心者向けゲームジャム攻略法
初心者向けゲームジャム攻略法hima_zinn
 
ゲーム開発で使えるかもしれないレイアウトデザイン
ゲーム開発で使えるかもしれないレイアウトデザインゲーム開発で使えるかもしれないレイアウトデザイン
ゲーム開発で使えるかもしれないレイアウトデザインKodai Yano
 
UnityでVRアプリを作ってみよう! (ハンズオン編)
UnityでVRアプリを作ってみよう! (ハンズオン編)UnityでVRアプリを作ってみよう! (ハンズオン編)
UnityでVRアプリを作ってみよう! (ハンズオン編)Masahiro Ide
 
2016年にGameJamで使って助かったと言われたアセット50選
2016年にGameJamで使って助かったと言われたアセット50選2016年にGameJamで使って助かったと言われたアセット50選
2016年にGameJamで使って助かったと言われたアセット50選Takashi Jona
 
Unity × graphics × effects
Unity × graphics × effectsUnity × graphics × effects
Unity × graphics × effectsHironori Sugino
 
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-torisoup
 
カンバン駆動開発 - Trello, Slackで始めるKDD
カンバン駆動開発 - Trello, Slackで始めるKDDカンバン駆動開発 - Trello, Slackで始めるKDD
カンバン駆動開発 - Trello, Slackで始めるKDDKazuya Takahashi
 
知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編Shota Baba
 
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips小林 信行
 
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふうTomokatsu Iguchi
 
Part3 unityを使ったvrアプリ作成入門
Part3 unityを使ったvrアプリ作成入門Part3 unityを使ったvrアプリ作成入門
Part3 unityを使ったvrアプリ作成入門kinneko
 

Andere mochten auch (16)

アプリ開発・運用で楽をするために知っておくべき Unity Services
アプリ開発・運用で楽をするために知っておくべき Unity Servicesアプリ開発・運用で楽をするために知っておくべき Unity Services
アプリ開発・運用で楽をするために知っておくべき Unity Services
 
Amazon API Gateway を活用したゲームサーバー構築
Amazon API Gateway を活用したゲームサーバー構築Amazon API Gateway を活用したゲームサーバー構築
Amazon API Gateway を活用したゲームサーバー構築
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgame
 
アセット作家になろう! ~作ったキャラクターやスクリプトをアセットストアに出品しよう!~
アセット作家になろう! ~作ったキャラクターやスクリプトをアセットストアに出品しよう!~アセット作家になろう! ~作ったキャラクターやスクリプトをアセットストアに出品しよう!~
アセット作家になろう! ~作ったキャラクターやスクリプトをアセットストアに出品しよう!~
 
初心者向けゲームジャム攻略法
初心者向けゲームジャム攻略法初心者向けゲームジャム攻略法
初心者向けゲームジャム攻略法
 
ゲーム開発で使えるかもしれないレイアウトデザイン
ゲーム開発で使えるかもしれないレイアウトデザインゲーム開発で使えるかもしれないレイアウトデザイン
ゲーム開発で使えるかもしれないレイアウトデザイン
 
UnityでVRアプリを作ってみよう! (ハンズオン編)
UnityでVRアプリを作ってみよう! (ハンズオン編)UnityでVRアプリを作ってみよう! (ハンズオン編)
UnityでVRアプリを作ってみよう! (ハンズオン編)
 
2016年にGameJamで使って助かったと言われたアセット50選
2016年にGameJamで使って助かったと言われたアセット50選2016年にGameJamで使って助かったと言われたアセット50選
2016年にGameJamで使って助かったと言われたアセット50選
 
Unity × graphics × effects
Unity × graphics × effectsUnity × graphics × effects
Unity × graphics × effects
 
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-
 
カンバン駆動開発 - Trello, Slackで始めるKDD
カンバン駆動開発 - Trello, Slackで始めるKDDカンバン駆動開発 - Trello, Slackで始めるKDD
カンバン駆動開発 - Trello, Slackで始めるKDD
 
知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編
 
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
 
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
 
Part3 unityを使ったvrアプリ作成入門
Part3 unityを使ったvrアプリ作成入門Part3 unityを使ったvrアプリ作成入門
Part3 unityを使ったvrアプリ作成入門
 

Ähnlich wie ゆるドラ運営記

NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野livedoor
 
Androidで野菜を育てる「スマート野菜工場」の仕組みと目指すモノ
Androidで野菜を育てる「スマート野菜工場」の仕組みと目指すモノAndroidで野菜を育てる「スマート野菜工場」の仕組みと目指すモノ
Androidで野菜を育てる「スマート野菜工場」の仕組みと目指すモノKohei Mochida
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜gree_tech
 
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記心 谷本
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsGo Sueyoshi (a.k.a sue445)
 
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡心 谷本
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。Sho Yoshida
 
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Yasuaki Matsuda
 
[JISA][変革リーダー養成部会]組織の中で自分を活かす生き方
[JISA][変革リーダー養成部会]組織の中で自分を活かす生き方[JISA][変革リーダー養成部会]組織の中で自分を活かす生き方
[JISA][変革リーダー養成部会]組織の中で自分を活かす生き方Shigeki Morizane
 
AWS Startup Tech - 宇宙と雲の間に CTO安川
AWS Startup Tech - 宇宙と雲の間に CTO安川AWS Startup Tech - 宇宙と雲の間に CTO安川
AWS Startup Tech - 宇宙と雲の間に CTO安川SORACOM,INC
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)Toshiharu Sugiyama
 
JAWS-UG山形 AWSのきほん 2016/11/12
JAWS-UG山形 AWSのきほん 2016/11/12 JAWS-UG山形 AWSのきほん 2016/11/12
JAWS-UG山形 AWSのきほん 2016/11/12 Gyori Nagafuchi
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbixsoftlayerjp
 
課題研究 JavaScriptの基礎理論と活用方法
課題研究 JavaScriptの基礎理論と活用方法課題研究 JavaScriptの基礎理論と活用方法
課題研究 JavaScriptの基礎理論と活用方法igucci
 

Ähnlich wie ゆるドラ運営記 (20)

NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野
 
Androidで野菜を育てる「スマート野菜工場」の仕組みと目指すモノ
Androidで野菜を育てる「スマート野菜工場」の仕組みと目指すモノAndroidで野菜を育てる「スマート野菜工場」の仕組みと目指すモノ
Androidで野菜を育てる「スマート野菜工場」の仕組みと目指すモノ
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
 
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
 
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。
 
FabricとRailsと私
FabricとRailsと私FabricとRailsと私
FabricとRailsと私
 
Yahoo! JAPAN の Ambari 活用事例 #yjdsnight
Yahoo! JAPAN の Ambari 活用事例 #yjdsnightYahoo! JAPAN の Ambari 活用事例 #yjdsnight
Yahoo! JAPAN の Ambari 活用事例 #yjdsnight
 
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
 
[JISA][変革リーダー養成部会]組織の中で自分を活かす生き方
[JISA][変革リーダー養成部会]組織の中で自分を活かす生き方[JISA][変革リーダー養成部会]組織の中で自分を活かす生き方
[JISA][変革リーダー養成部会]組織の中で自分を活かす生き方
 
AWS Startup Tech - 宇宙と雲の間に CTO安川
AWS Startup Tech - 宇宙と雲の間に CTO安川AWS Startup Tech - 宇宙と雲の間に CTO安川
AWS Startup Tech - 宇宙と雲の間に CTO安川
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 
JAWS-UG山形 AWSのきほん 2016/11/12
JAWS-UG山形 AWSのきほん 2016/11/12 JAWS-UG山形 AWSのきほん 2016/11/12
JAWS-UG山形 AWSのきほん 2016/11/12
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
GREE-Fsite
GREE-FsiteGREE-Fsite
GREE-Fsite
 
PHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyieldPHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyield
 
課題研究 JavaScriptの基礎理論と活用方法
課題研究 JavaScriptの基礎理論と活用方法課題研究 JavaScriptの基礎理論と活用方法
課題研究 JavaScriptの基礎理論と活用方法
 
WordPressのセキュリティ対策
WordPressのセキュリティ対策WordPressのセキュリティ対策
WordPressのセキュリティ対策
 

ゆるドラ運営記

  • 2. Copyright © Clover Lab.,inc. All Rights Reserved. 自己紹介
  • 3. Copyright © Clover Lab.,inc. All Rights Reserved. 自己紹介 松本 亮太 (まつもと りょうた) クローバーラボ株式会社 技術部 ・2013年 新卒入社 ・モバイルソーシャルゲーム開発 ・サーバーサイドエンジニア ・ゆるドラシルを運営・開発
  • 4. Copyright © Clover Lab.,inc. All Rights Reserved. 島根県松江市 大根島
  • 5. Copyright © Clover Lab.,inc. All Rights Reserved. 高麗人参
  • 6. Copyright © Clover Lab.,inc. All Rights Reserved. クローバーラボ ・モバイルゲームアプリの企画・開発・運営 ・社員数 約60人 ・平均年齢 20代後半
  • 7. Copyright © Clover Lab.,inc. All Rights Reserved. ゆるドラシル
  • 8. Copyright © Clover Lab.,inc. All Rights Reserved. ゆるドラシル 2014.03 リリース 500万DL突破 #iOS - App Store #Android - GooglePlay Store - 楽天アプリ市場
  • 9. Copyright © Clover Lab.,inc. All Rights Reserved. 北欧神話 ・シリアス&コミカルなストーリーで展開する神話RPG ・バトルは基本オートのコマンドバトル ・ド派手な必殺技
  • 10. Copyright © Clover Lab.,inc. All Rights Reserved. アジェンダ
  • 11. Copyright © Clover Lab.,inc. All Rights Reserved. 本当は…
  • 12. Copyright © Clover Lab.,inc. All Rights Reserved.
  • 13. Copyright © Clover Lab.,inc. All Rights Reserved.
  • 14. Copyright © Clover Lab.,inc. All Rights Reserved. アジェンダ ・ゆるドラシルの構成 ・擬似パーティション ・バッチ実行してたら途中で止まる件 ・プレゼント配布に4時間かかる問題 ・メンテンパル現象
  • 15. Copyright © Clover Lab.,inc. All Rights Reserved. ゆるドラシルの構成
  • 16. Copyright © Clover Lab.,inc. All Rights Reserved. ゆるドラシルの開発言語 ・PHP (Code Igniter) ・C++(Cocos2d-x) ・JavaScript
  • 17. Copyright © Clover Lab.,inc. All Rights Reserved. ゆるドラシルのサーバー ・DBサーバー ・アプリケーションサーバー ・memcachedサーバー ・redisサーバー
  • 18. Copyright © Clover Lab.,inc. All Rights Reserved. ゆるドラシルのツール ・Vagrant ・chef ・Git ・Spine ・CocosBuilder
  • 19. Copyright © Clover Lab.,inc. All Rights Reserved. ハイブリットアプリ
  • 20. Copyright © Clover Lab.,inc. All Rights Reserved. 一般的なハイブリットアプリ WebViewの中でHTMLの画面を表示する モバイルアプリ - WebView のみ - ガワネイティブ - SNS系 - ブラウザ + α Native WebView
  • 21. Copyright © Clover Lab.,inc. All Rights Reserved. ゆるドラ的なハイブリットアプリ ネイティブ部分とWebViewを両立させた モバイルアプリ - どちらもメイン機能 - 画面単位で使い分け - リリース当初は7:3 Native Web View
  • 22. Copyright © Clover Lab.,inc. All Rights Reserved. なぜハイブリット? ・ノウハウと資産を活かす ・小規模チーム ・短期開発
  • 23. Copyright © Clover Lab.,inc. All Rights Reserved. 擬似パーティション
  • 24. Copyright © Clover Lab.,inc. All Rights Reserved. 擬似パーティションとは? ・データ群を複数のテーブルで分解管理すること ・MySQLのパーティションとは違う ・シャーディングのようにDBが別でもない
  • 25. Copyright © Clover Lab.,inc. All Rights Reserved. 具体的に ・テーブル名 = モデル名 + 会員IDの下1桁(下2桁) ・モデル内で会員IDを元にテーブル名を制御する 例) Units +会員IDの下1桁 = Units0, Units1 …
  • 26. Copyright © Clover Lab.,inc. All Rights Reserved. Units0 Units1 Units9 10 20 50 100 11 11 21 101 9 19 29 109 そうするとこうなる …
  • 27. Copyright © Clover Lab.,inc. All Rights Reserved. 擬似パーティションの目安 ・普段から使用するデータ ・データ量が増えることが予想できる ・不要なデータと必要なデータが入り混じる ・不要なデータも後に必要になる可能性がある
  • 28. Copyright © Clover Lab.,inc. All Rights Reserved. メリット ・データの集計・収集が大変 デメリット ・データの参照や更新の負荷が分散される デメリット
  • 29. Copyright © Clover Lab.,inc. All Rights Reserved. バッチ実行してたら 途中で止まる件
  • 30. Copyright © Clover Lab.,inc. All Rights Reserved. 冪等性 (べきとうせい)
  • 31. Copyright © Clover Lab.,inc. All Rights Reserved. 冪等性とは ある操作を1度行っても 複数回行っても 同じ効果を得られること
  • 32. Copyright © Clover Lab.,inc. All Rights Reserved. なぜ冪等性? ・ミス対策 ・予期せぬエラーに備える
  • 33. Copyright © Clover Lab.,inc. All Rights Reserved. 身近な例として ・本番環境でタイムアウトが発生した ・データ量が多くてメモリからあふれた ・環境の設定違いで何かしらエラー
  • 34. Copyright © Clover Lab.,inc. All Rights Reserved. もしも…
  • 35. Copyright © Clover Lab.,inc. All Rights Reserved. お詫び配布中…
  • 36. Copyright © Clover Lab.,inc. All Rights Reserved. packet_write_wait: Broken pipe
  • 37. Copyright © Clover Lab.,inc. All Rights Reserved.
  • 38. Copyright © Clover Lab.,inc. All Rights Reserved.
  • 39. Copyright © Clover Lab.,inc. All Rights Reserved.
  • 40. Copyright © Clover Lab.,inc. All Rights Reserved.
  • 41. Copyright © Clover Lab.,inc. All Rights Reserved. 冪等性を考えてたら…
  • 42. Copyright © Clover Lab.,inc. All Rights Reserved.
  • 43. Copyright © Clover Lab.,inc. All Rights Reserved. 具体的に ・小分けのトランザクション ・トランザクション単位保存 ・どのトランザクションまで成功したかも保存 ・最後に成功した次のトランザクションから再開
  • 44. Copyright © Clover Lab.,inc. All Rights Reserved. バッチ実行してたら 途中で止まる件
  • 45. Copyright © Clover Lab.,inc. All Rights Reserved. プレゼント配布に 4時間かかる問題
  • 46. Copyright © Clover Lab.,inc. All Rights Reserved. 全ユーザーに配布 ・ログインしていないユーザーにも配布 ・多くなってきて酷い時は4時間以上かかった ・もちろんタイムアウトしたり、メモリ溢れたり…
  • 47. Copyright © Clover Lab.,inc. All Rights Reserved. 無駄に拘束される 4時間をなんとかしたい
  • 48. Copyright © Clover Lab.,inc. All Rights Reserved. オレの人生が削れる
  • 49. Copyright © Clover Lab.,inc. All Rights Reserved. ログイン時に付与 ・OS別 ・アイテムはどんなものでも配布可能 ・プレゼントが配布された時刻を指定出来る ・指定ユーザーのみ配布 ・ チュートリアル突破期間を指定出来るように ・プレゼントを配布する期間
  • 50. Copyright © Clover Lab.,inc. All Rights Reserved. プレゼント配布に 4時間かかる問題
  • 51. Copyright © Clover Lab.,inc. All Rights Reserved. メンテンパル現象
  • 52. Copyright © Clover Lab.,inc. All Rights Reserved. メンテ(中に)テンパる現象
  • 53. Copyright © Clover Lab.,inc. All Rights Reserved. 今まで… ・ユーザーもあまり多くない ・小規模チーム ・企画1人グラフィック2人エンジニア1人 ・開発スケジュールも1ライン
  • 54. Copyright © Clover Lab.,inc. All Rights Reserved. ゆるドラシルでは... ・開発スケジュールのスピード感 ・フレキシブルな運用スケジュール ・複数開発ラインがある運営
  • 55. Copyright © Clover Lab.,inc. All Rights Reserved. 求められるスキル ・優先順位の決定 ・大人数でのコミュニケーション ・求められるクオリティの高さ
  • 56. Copyright © Clover Lab.,inc. All Rights Reserved. 「テキスト変更お願い!」
  • 57. Copyright © Clover Lab.,inc. All Rights Reserved. 「日付間違ってるで!」
  • 58. Copyright © Clover Lab.,inc. All Rights Reserved. 「データ調整したい!」
  • 59. Copyright © Clover Lab.,inc. All Rights Reserved. あれ?次、何やるんだっけ?
  • 60. Copyright © Clover Lab.,inc. All Rights Reserved. _人人人人人人人人人人_ > メンテンパル現象 <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
  • 61. Copyright © Clover Lab.,inc. All Rights Reserved. 様々な声が ・確認作業の専属化 ・デプロイ方法をそもそも変える ・当事者の意識の問題
  • 62. Copyright © Clover Lab.,inc. All Rights Reserved. メンテナンス手順書 ・追加 / 更新内容記載 ・どういうコマンドを使うのか ・どの程度確認を行うのか ・QiitaTeamで社内全体に共有
  • 63. Copyright © Clover Lab.,inc. All Rights Reserved.
  • 64. Copyright © Clover Lab.,inc. All Rights Reserved. メンテンパル現象
  • 65. Copyright © Clover Lab.,inc. All Rights Reserved. 最後に
  • 66. Copyright © Clover Lab.,inc. All Rights Reserved. ご清聴ありがとうございました

Hinweis der Redaktion

  1. それでは、これから『ゆるドラ運営記』の発表を始めたいと思います よろしくお願いします 本日はこんなに多くの方に来て頂きありがとうございます。 僕自身、このようなイベントで登壇させていただくのは初めてなので正直結構緊張しています。 ぎこちない感じになるとは思いますがどうかご容赦願います。 なお、ゆるドラ運営記の内容は、写真撮影やTwitter投稿などもしてしていただいても大丈夫です。
  2. それでは、まず自己紹介なんですが、
  3. 名前は、まつもと りょうた と申します 2013年にクローバーラボ株式会社に新卒として入社しまして、 モバイルソーシャルゲームアプリを開発しています。 現在ではゆるドラシルのサーバーサイドエンジニアを担当しています。 趣味は、ゲームやスポーツです。 なかでも、PCゲームのリーグオブレジェンドは2年くらいはまってます。 あと、日本酒が好きで中津あたりの居酒屋でひとりで飲んでたりしています。
  4. 出身は、タントカスタムCMで紹介されたベタ踏み坂のある島根県松江市の大根島というところが出身です。 上司からはですね、いかにも田舎みたいな名前だな、大根が特産品なの?とかいぢられたりしますが。 特産品は、
  5. にんじんです
  6. そんなが僕が働いているクローバーラボについて簡単に紹介いたします。 場所は大阪 中津にあります。 モバイルゲームアプリの企画、開発から運営までをメインとしてやっています。 現在、社員が60人ぐらいで 20 ~ 30代が中心となってがんばってます そのうちエンジニアは20人ぐらいです 社内にバーがあるんですけど、 そのせいもあって酒飲みが50人ぐらいになります。 技術部の部長、私の上司はその筆頭です。
  7. 続いて、今回ゆるドラ運営記ということなので簡単にアプリの紹介をします
  8. ゆるドラシルは 2014年 3月にリリースしまして 2年運営しております。ダウンロード数もおかげさまで500万を突破しました iOS はおなじみ AppStore で、 Android は Google PlayStoreと 半年前ぐらいから、楽天アプリいちば というところでも配信しています
  9. 北欧神話の世界を舞台にしており、 シリアス&コミカルなストーリーで展開する神話RPGとなっております。 バトルは基本オートのコマンドバトルとなっており、こちらもド派手な必殺技なども多数用意しています。
  10. では、本日のアジェンダの紹介に移ろうと思いますが…
  11. 本当はですね
  12. かっこ良く技術の話をバシッと決めたいところなんですが、 僕自身、クローバーラボでも特別サーバーの知識がある方でもないので 本日は、並以下のエンジニアがゆるドラシルというプロジェクトで
  13. 問題に直面した際にしてきた、泥臭い対応の話をしていこうと思います
  14. では、改めてアジェンダの紹介です。 ゆるドラシルの構成について 擬似パーティション バッチ実行してたら途中で止まる件 プレゼント配布に4時間かかる問題 メンテンパル現象 となります。
  15. ではまずゆるドラシルの構成を紹介します。
  16. 開発言語は、サーバー側がPHP、Javascript、ネイティブ側がCocos2dxを使っています。
  17. サーバーにDBサーバーとアプリケーションサーバー、memcachedサーバー、redisサーバーを使っています。
  18. 他には開発ツールとして、Vagrant、chef、git、Spine、CocosBuilderなどを使っています。
  19. またゆるドラシルは、ハイブリットアプリとして開発しています。
  20. 一般的なハイブリットアプリとしてはWebViewだけのアプリのことを指します ガワネイティブと呼ばれたりもします SNS系のアプリとかが以前は多かったと思います 最近はAppleである程度 ふるいにかけられているようで 以前に比べて減ってきているような気がします
  21. ゆるドラシルでのハイブリッドというのは ネイティブ部分とWebを両立させたモバイルアプリ となります。 - Webとネイティブのどちらもメイン機能として扱っており それを画面単位で使い分ける形となっています リリース当初は7割ぐらいがWebでした。 が、今年に入った辺りからネイティブに移行していっています。 一般的なものとは逆に、Webだけでは完結できない状態となっています
  22. では、なぜハイブリッドなのか? その理由はこの3点となります - 今までのノウハウや資産を活かす これまでブラウザゲームの開発、運営をメインにやってきましたので、 そこでの資産やノウハウを活かすということが目的です 小規模チーム 開発当初は3人での開発だった 短期開発 開発期間の目標は6ヶ月で、実際は7ヶ月でリリースとなりました こういった背景があり、それを達成するために取った手段がハイブリットでの開発でした。
  23. では次の擬似パーティション ここからサーバーサイドの話になっていきます。 これは、僕がゆるドラシルの担当になる前から実装されていものですが。
  24. 擬似パーティションとは、1つのデータ群を複数のテーブルで分解管理することで MySQLなどで使われているパーティションのように、テーブルが同じわけではなく、 シャーディングのようにデータベースが別でもないのでこのように表現しています。
  25. 具体的にどういう事かというと、やってることは単純で テーブル名をモデル名+会員IDの下1桁のよう定義し振り分けて モデル内で会員IDを元にSQLを制御しています。 例として、Unitsというモデルがあるとします。 そのUnitsを擬似パーティションすると、Units というモデル名 + 会員IDの下1桁 を合わせたものをテーブル名にして10個用意します。
  26. そうするとこのようになり、 Units0というテーブルの中には、会員ID下1桁が0のユーザーに入り、Units1というテーブルの中には、会員ID下1桁が1のユーザーに入るという風になります。 こうすることで、1つのテーブル内には本来のデータ量の1/10となり、負荷が軽減できます。 もちろん、下2桁でテーブル名を定義して、テーブルを100個作れば、1/100になります。
  27. 擬似パーティションをすべきモデルの目安として、 - 普段から使用するデータで データ量が増えることが予想できる 不要なデータと必要なデータが入り混じる。 不要なデータも後に必要になる可能性がある のように 簡単にメンテナンスで不要データを削除出来ないようなモデルが擬似パーティションの対象となります。 ユニットデータや装備データなどがこれにあたります また例外として、イベントやキャンペーンなどで使用する一時データなどもイベント・キャンペーンIDを元に分ければ不要になった時にDROPしてあげれば、簡単に削除が出来ます。
  28. 擬似パーティションのメリットとデメリットなんですが、 メリットとしては、やはりデータ参照や更新の負荷が分散されるというが大きいですね。 1億件を超えるはずだったテーブルを会員ID下2桁でわけたとすれば、100万件テーブルx100として管理ができます。 また、デメリットとしては、データの集計・収集が大変でした。 ユニットの普及率とか使用率を集計する際は、集計サイトを作成して対応しています。
  29. では次に、バッチ実行してたら途中で止まる件 ゆるドラシルでは、リリース当時はプレゼント配布などは バッチで行ったりしていましたので結構多かったと思います。 バッチを実行していたらですね。 タイムアウトしたり、メモリ溢れたり、例外データにぶつかったりして 途中で止まることってよくありますよね。 ここで重要なのが
  30. 冪等性を考慮した設計だと思うんです。 そもそも冪等性とはなんなのか。 聞いたことある人も居られるとは思いますが、
  31. ある操作を1度行っても複数回行っても同じ効果を得られることを冪等性と言います。 冪等性が考慮されたツールとしてchefやAnsibleなど、 インフラの状態をコードで書くことで結果が必ず同じ状態になるというものがありますね 一時期 Immutable Infrastructureという言葉がバズった時に、結構耳にした方も多いかもしれないですね。 ただ今回はインフラ周りでは無く、自身のプログラムに対して冪等性を考慮してみます。
  32. では、なぜ冪等性を考慮すべきなのか 理由としては単純で、ミス対策、 予期せぬエラーに備えるというものです。 インフラ系で言われている冪等性とは少し方向性が違いますが 1回の挙動で全てが全て完璧に動くのであれば、冪等性なんて考慮する必要がありません。 もちろんデバッグや確認はすべきですがそれでも発生するものは発生します。
  33. 身近な例として バッチ処理などしてたらよくあるんですけど、 テスト環境ではしっかり動いたのに本番ではバグった... 本番環境でタイムアウトが発生した 本番環境とテスト環境のデータ量が違い、メモリからあふれた 本番環境とテスト環境の設定が違い、途中でなにかしらのエラーが発生した まだログを出力をするだけのバッチであれば、特に問題無いケースが多いですが、 これが...
  34. もしも...
  35. ユーザーに対して何らかのプレゼントを配布するようなバッチを流していたとして…そんなバッチがですね…
  36. タイムアウト… あれこれってプレゼント中途半端に配布されてね?…
  37. あーやばいやつやー
  38. まぁ待て待て、まだ慌てるような時間じゃない!とりあえず落ち着こう!
  39. ユーザーめちゃくちゃ怒ってます
  40. もう考えたくもないですね
  41. こういう時に、冪等性を考慮した設計にしていたら、 『ある操作を1度行っても複数回行っても同じ効果を得られる』はずなので
  42. 安らかな気持ちでもう1回バッチ流せばいいですね
  43. では冪等性を考慮した設計にするためには、どのようにすれば良かったのでしょうか 「トランザクションすれば一発じゃん!」 数百万件ものデータに対してトランザクションなんて嫌ですね… もちろん分割ではトランザクションをしています。 なので、分割されたトランザクションがどこまで進んだのかをデータとして保存し、 それを元に再度実行された場合は、最後に成功したトランザクションの 次のトランザクションから処理を再開してやれば、冪等性を保つことが出来ます。 これで、バッチを実行してて途中で止まっても大丈夫ですね
  44. バッチ実行してたら途中で止まる件、解決
  45. 次、プレゼント配布に4時間かかる問題 ゆるドラシルでは、プレゼント配布ものは結構バッチで配布している頃もありまして、 またバッチの話かよって思われるかもしれませんがご了承下さい。 当時はバッチでのプレゼント配布でなんの問題もなかったのですが、 やはりユーザー数が増える度に配布バッチに要する時間は肥大化していきました。
  46. 全体配布では、 ログインしていないユーザーにもプレゼントを配布をしています。 いつ復帰するかわからないですからね。 もちろん、それが1年以上復帰していないユーザーやリセマラで使ったであろう残骸であってもです。 一番酷い時では、バッチ流してから最後まで終了するのに4時間以上かかっている頃もありました 残業ついでに流してても、終了するころには日付変わったりしてました もちろん、タイムアウトしたりメモリ溢れたりしたこともあります こういう経緯もあって、冪等性を考慮した設計に感謝することもあったんですけど 4時間も毎回掛かっていると冪等性を考慮した設計にしてればとか言ってる場合じゃないですね
  47. 正直無駄に拘束される4時間をなんとかしないとまずいですね 結構ゆるドラシルのダウンロード数がいい勢いで伸びはじめたぐらいの頃に あれ?これ、このままユーザー数増えて、しかもこんなに頻繁にダウンロード記念で全員に金貨100枚配布とか言ってたら
  48. オレの人生が削れると その事に危機を感じ、当時はプロデューサーに今のままで良いと言われつつもわりと強引に別の手段での配布機能を作りました。
  49. 機能としては、ログイン時アイテム付与を行い、あたかも前に配布されたかのようにするというものです。 全体配布といっても毎回なんの条件も無い全体配布である保障は無いです。 金貨以外にも配布したいな、iOSだけ配布してよ、テキスト変えて、この日以降に配布して、 こんな注文に内心「ぐぬぬ」となりながら、作り直す姿が容易に想像出来ます。 このように、4時間掛かっていた問題もデータひとつで予約出来るようになり、僕の人生が削れる心配もなくなりました。
  50. プレゼント配布に4時間かかる問題、解決
  51. 次に、メンテンパル現象についてなんですが、 このメンテンパル現象とはなんなのか、 多くの方はご存知とは思いますが、これ
  52. メンテ(中に)テンパる現象のことです。 しょうもないサブタイトルになってしまったんですけど これ、まぁ笑い事じゃなく結構あるあるだと思うんですよね 特に慣れてない頃とか新しい環境に移る頃とかは特に…
  53. 僕がゆるドラシルの担当になる前は、 ユーザー数もあまり多くなく、 1チーム4人くらいの小規模なチームでの運営なので 開発ラインも1つしかありませんでした。 そんな時に、当時10人以上メンバーの居る社内で一番人数の多いゆるドラシルの担当をすることになりました
  54. やはり人数の居るプロジェクトだと 開発スケジュールのスピード感とか、 フレキシブルな運用スケジュール、 複数開発ラインがある運営、 前のプロジェクトとは全然違ったんですね
  55. 優先順位の決定や 大人数でのコミュニケーション、 求められるクオリティの高さなど 今までとは求められるスキルの質が上がっていってですね。 メンテナンス中にやる作業も増えていきます。 メンテナンス中にもこんな要望や変更も飛んできます
  56. ここテキスト変更お願い!
  57. 日付間違ってるで!
  58. ここのデータ調整したい 全部対応をして気付いた時には…
  59. あれ?次、何やるんだっけ?
  60. どう考えてもメンテンパル現象ですね。 結果メンテナンス中のヒューマンエラー、コミュニケーションエラーが増えてしまい。 それでこの事が技術部内でも問題と判断され、この問題に対して技術部内で議論が行われるようになりました。
  61. ・確認作業の専属化した方がいいじゃないかとか ・デプロイ方法をそもそも変えるとか、 ・当事者の意識の問題とか、 色んなことが議論されましたが、どれも問題解決には繋がらなかったんですね。 そんな時に出てきた案がメンテナンス手順書というものでした。
  62. ・メンテナンスでどの機能が追加され、どの機能が更新されるのか ・メンテナンス中にどういうコマンドを使うのか ・メンテナンス中には、どの程度確認・デバッグを行うのか チームメンバーと誤差が生じないようにQiitaTeamにあげ、漏れや誤解があれば、 指摘してしあうというものでした。 これがしっかり機能して問題解決に繋がり、 メンテナンス手順書というものが会社全体に根付きました。 他社さんではあって当たり前かもしれないんですが、 そこそこ人数の居るプロジェクトでもなければ、必要にはならない事もあるとおもいます。
  63. ちなみにメンテナンス手順書っていうのはこんな感じです タイトルにメンテナンスの日程書いてて、概要が書いてあり、って感じですね。
  64. メンテンパル現象、解決
  65. では、最後になるんですけど、 僕自身ゆるドラシルの担当になって2年間運営をしてきた訳なんですけども。 元々この規模のプロジェクトは会社的にも初めてですし、 僕自身としても初めての経験でした。 サーバーの知識も素人同然でしたが、 何か問題が発生しては自分なりの工夫でなんとかここまでやってきました。 決してスマートじゃなく、『あーオレエンジニア向いてねーなぁ』とか思いながら、 泥臭く失敗だらけでも2年やってこれました。 こんな泥臭い話しか出来ませんが、関西のゲームエンジニアとして少しでも力になれたらと思い登壇させて頂きました。 今回は僕自身、とても貴重な体験となりました。
  66. ご清聴ありがとうございました