Suche senden
Hochladen
とあるアプリの開発運用(トラブルシュート)
•
100 gefällt mir
•
34,605 views
Takafumi ONAKA
Folgen
Melden
Teilen
Melden
Teilen
1 von 83
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
ドリコム的Railsアプリ開発流儀
ドリコム的Railsアプリ開発流儀
Takafumi ONAKA
Webアプリケーションは難しい
Webアプリケーションは難しい
Takafumi ONAKA
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
infinite_loop
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
Html5超入門
Html5超入門
Monaca
大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側
KLab株式会社
Empfohlen
ドリコム的Railsアプリ開発流儀
ドリコム的Railsアプリ開発流儀
Takafumi ONAKA
Webアプリケーションは難しい
Webアプリケーションは難しい
Takafumi ONAKA
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
infinite_loop
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
Html5超入門
Html5超入門
Monaca
大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側
KLab株式会社
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
ソーシャルアプリを分析してみた
ソーシャルアプリを分析してみた
Drecom Co., Ltd.
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
KLab株式会社
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
Makoto Haruyama
これからはじめるインフラエンジニア
これからはじめるインフラエンジニア
外道 父
React.js + Flux入門 #scripty02
React.js + Flux入門 #scripty02
Yahoo!デベロッパーネットワーク
利益はデータベースの中にあった!
利益はデータベースの中にあった!
infinite_loop
Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢
Maho Takara
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
Drecom Co., Ltd.
コンペに勝てる必勝アイテム ソフトレイヤー
コンペに勝てる必勝アイテム ソフトレイヤー
Maho Takara
サーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChef
Maho Takara
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)
denatech2016
AWSスポットインスタンスの真髄
AWSスポットインスタンスの真髄
外道 父
Game BaaS Implemented in Ruby
Game BaaS Implemented in Ruby
dena_study
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
Tomoya Kabe
activerecord-turntable
activerecord-turntable
Drecom Co., Ltd.
スペシャリストになるには
スペシャリストになるには
外道 父
Cloudera impala
Cloudera impala
外道 父
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!
Drecom Co., Ltd.
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi
Weitere ähnliche Inhalte
Was ist angesagt?
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
ソーシャルアプリを分析してみた
ソーシャルアプリを分析してみた
Drecom Co., Ltd.
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
KLab株式会社
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
Makoto Haruyama
これからはじめるインフラエンジニア
これからはじめるインフラエンジニア
外道 父
React.js + Flux入門 #scripty02
React.js + Flux入門 #scripty02
Yahoo!デベロッパーネットワーク
利益はデータベースの中にあった!
利益はデータベースの中にあった!
infinite_loop
Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢
Maho Takara
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
Drecom Co., Ltd.
コンペに勝てる必勝アイテム ソフトレイヤー
コンペに勝てる必勝アイテム ソフトレイヤー
Maho Takara
サーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChef
Maho Takara
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)
denatech2016
AWSスポットインスタンスの真髄
AWSスポットインスタンスの真髄
外道 父
Game BaaS Implemented in Ruby
Game BaaS Implemented in Ruby
dena_study
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
Tomoya Kabe
activerecord-turntable
activerecord-turntable
Drecom Co., Ltd.
スペシャリストになるには
スペシャリストになるには
外道 父
Cloudera impala
Cloudera impala
外道 父
Was ist angesagt?
(20)
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
ソーシャルアプリを分析してみた
ソーシャルアプリを分析してみた
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
これからはじめるインフラエンジニア
これからはじめるインフラエンジニア
React.js + Flux入門 #scripty02
React.js + Flux入門 #scripty02
利益はデータベースの中にあった!
利益はデータベースの中にあった!
Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
コンペに勝てる必勝アイテム ソフトレイヤー
コンペに勝てる必勝アイテム ソフトレイヤー
サーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChef
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)
AWSスポットインスタンスの真髄
AWSスポットインスタンスの真髄
Game BaaS Implemented in Ruby
Game BaaS Implemented in Ruby
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
activerecord-turntable
activerecord-turntable
スペシャリストになるには
スペシャリストになるには
Cloudera impala
Cloudera impala
Ähnlich wie とあるアプリの開発運用(トラブルシュート)
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!
Drecom Co., Ltd.
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
Nov Matake
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
Automation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
softlayerjp
SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化
SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化
SORACOM,INC
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.
認証/認可が実現する安全で高速分析可能な分析処理基盤
認証/認可が実現する安全で高速分析可能な分析処理基盤
Masahiro Kiura
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM,INC
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016
Godai Nakamura
DroidKaigi_devicefarm
DroidKaigi_devicefarm
Shunsuke Maeda
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18
Masatomo Ito
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会
Dai Utsui
zozotown real time linkage infrastructure
zozotown real time linkage infrastructure
KeisukeTaniguchi2
Androidアプリ内蔵広告 徹底解析 公開用
Androidアプリ内蔵広告 徹底解析 公開用
Lumin Hacker
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Toru Yamaguchi
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
IBM SoftLayer @ Osc tokyo-2014-fall
IBM SoftLayer @ Osc tokyo-2014-fall
Yasushi Osonoi
Developer Festa Sapporo 2016 | 誰もがIoTエンジニアになれる 〜IoT 通信プラットフォーム SORACOM〜
Developer Festa Sapporo 2016 | 誰もがIoTエンジニアになれる 〜IoT 通信プラットフォーム SORACOM〜
SORACOM,INC
Ähnlich wie とあるアプリの開発運用(トラブルシュート)
(20)
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Automation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化
SORACOM Technology Camp 2018 ベーシックトラック3 | 今日から始めるセンサーデータの可視化
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
認証/認可が実現する安全で高速分析可能な分析処理基盤
認証/認可が実現する安全で高速分析可能な分析処理基盤
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016
DroidKaigi_devicefarm
DroidKaigi_devicefarm
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会
zozotown real time linkage infrastructure
zozotown real time linkage infrastructure
Androidアプリ内蔵広告 徹底解析 公開用
Androidアプリ内蔵広告 徹底解析 公開用
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
IBM SoftLayer @ Osc tokyo-2014-fall
IBM SoftLayer @ Osc tokyo-2014-fall
Developer Festa Sapporo 2016 | 誰もがIoTエンジニアになれる 〜IoT 通信プラットフォーム SORACOM〜
Developer Festa Sapporo 2016 | 誰もがIoTエンジニアになれる 〜IoT 通信プラットフォーム SORACOM〜
Mehr von Takafumi ONAKA
不正のトライアングルとコードベースの治安維持
不正のトライアングルとコードベースの治安維持
Takafumi ONAKA
技術記事を書く&楽しむチームの作り方
技術記事を書く&楽しむチームの作り方
Takafumi ONAKA
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発
Takafumi ONAKA
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮
Takafumi ONAKA
pt-query-digest は Perl!!
pt-query-digest は Perl!!
Takafumi ONAKA
アプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のこと
Takafumi ONAKA
cpanfileがRubyでパースできることに気づいた俺たちは
cpanfileがRubyでパースできることに気づいた俺たちは
Takafumi ONAKA
Perl使いの国のRubyist
Perl使いの国のRubyist
Takafumi ONAKA
ApplicationTemplateのススメ
ApplicationTemplateのススメ
Takafumi ONAKA
RSpecしぐさ
RSpecしぐさ
Takafumi ONAKA
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
Takafumi ONAKA
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
Takafumi ONAKA
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
Takafumi ONAKA
Application Bootstrap
Application Bootstrap
Takafumi ONAKA
ドリコム×ピクシブ 社会人交換留学説明資料
ドリコム×ピクシブ 社会人交換留学説明資料
Takafumi ONAKA
すこやかRails
すこやかRails
Takafumi ONAKA
マジカルsvnとキュアgit
マジカルsvnとキュアgit
Takafumi ONAKA
Github Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃん
Takafumi ONAKA
Mehr von Takafumi ONAKA
(20)
不正のトライアングルとコードベースの治安維持
不正のトライアングルとコードベースの治安維持
技術記事を書く&楽しむチームの作り方
技術記事を書く&楽しむチームの作り方
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮
pt-query-digest は Perl!!
pt-query-digest は Perl!!
アプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のこと
cpanfileがRubyでパースできることに気づいた俺たちは
cpanfileがRubyでパースできることに気づいた俺たちは
Perl使いの国のRubyist
Perl使いの国のRubyist
ApplicationTemplateのススメ
ApplicationTemplateのススメ
RSpecしぐさ
RSpecしぐさ
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
Application Bootstrap
Application Bootstrap
ドリコム×ピクシブ 社会人交換留学説明資料
ドリコム×ピクシブ 社会人交換留学説明資料
すこやかRails
すこやかRails
マジカルsvnとキュアgit
マジカルsvnとキュアgit
Github Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃん
とあるアプリの開発運用(トラブルシュート)
1.
Copyright © DRECOM
Co., Ltd All Rights Reserved. RailsDevCon 2010 2010/11/20
2.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 2222 自己 紹介
3.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 3333 株式会社ドリコム ソーシャルゲーム開発デザイン部 大仲 能史 @onk
4.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 4444 株式会社ドリコム ソーシャルゲーム開発デザイン部 大仲 能史 @onk ソーシャルゲームの企画と開発
5.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 5555 ソーシャルゲームとは
6.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 6666 ソーシャルゲームとは SNS上にウェブブラウザ上で動作するAPI などの動作環境(アプリケーション・プ ラットフォーム)が提供され、これを基盤 として制作されたアプリケーションソフト を、ソーシャルアプリケーション(Social Application)と総称し、その中のゲーム のことをソーシャルゲームと呼ぶ。 Wikipedia より
7.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 7777 大規模SNS上の ソーシャルアプリ開発 重要なポイントは?
8.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 8888 •API利用 •人口爆発 •短納期
9.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 9999 API利用 • ユーザはSNSにアクセス • Gadgetサーバがユーザのリクエストを転送 • アプリケーションはAPIに問い合わせてHTML を生成
10.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 10101010 API利用 • 2-legged OAuth – GadgetサーバからのRequestを検証 – こちらからのRequestに署名 • SNS内の機能を使うときもAPIを利用 – アプリの招待 – Activityの送信 – アプリからMessage送信 – 位置情報取得 – アプリからフォトアップロード – SNS内のポイントでの決済サービス – etc
11.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 11111111 人口爆発 • mixi 2,190万人 • mbga 2,167万人 • gree 2,246万人 • hangame 3,432万人 • ixen 175万人 • ybga 100万人
12.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 12121212 人口爆発
13.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 13131313 短納期 2ヶ月でリリースは想定の範囲内
14.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 14141414 短納期 毎月2回リリース必須
15.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 15151515 どんな対策が必要?
16.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 16161616 agenda • API利用 – デバッグの勘所 • 人口爆発 – 負荷を想定する – 正しくwebアプリを作る • 短納期 – 何を犠牲にして何を得るか – 超高速でPDCAサイクルを回す
17.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 17171717 agenda(gem) • net-http-spy • masochism • data_fabrick • faker • resque • activerecord-import • scribe
18.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 18181818 ミドルウェア環境 • MySQL 5.1 • memcached 1.4.5 • Redis 1.2.6 (近々2.0.4に) • TokyoTyrant 1.1.40 • Ruby 1.9.2-p0 • Rails 3.0.3 • unicorn 2.0.0 • nginx 0.7.67
19.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 19191919 基本サーバ構成図 • 仮想化しています – CPU Xeon L5520 (2.26GHz 8コア) – メモリ 32GB • webにCPUを多く割 り当て • cacheとdbにメモリ を多く割り当て
20.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 20202020 agenda • API利用 – デバッグの勘所 • 人口爆発 – 何を想定しなければいけないか – 正しくwebアプリを作るということ • 短納期 – 何を犠牲にして何を得るか – 超高速でPDCAサイクルを回す
21.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 21212121 たった一つの 大事なこと
22.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 22222222 困ったら request/response を確認する
23.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 23232323 あくまでフィクションです • リリース1週間前に「課金APIがどうして も通らない」とprintデバッグしつつ悩ん でいる人が居るんですよ。フィクション ですけど。 • 結論から言うと request.path を使っていたためにクエリパラメータが 消えてたんですが。
24.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 24242424 request/responseを確認する • 困ったらTCPレイヤまで降りてパケット を見よう • ライブラリのエラーメッセージから追う よりもHTTPのステータスコードを見る 方が早い – APIが本文にエラーメッセージを入れて返し てくれている場合も多い
25.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 25252525 位置情報を取得しようとしたら • 住所を取得したつもりが 「東北自動車道」 というものが取れたりとか • Placemarkが複数返ってきているので他 のPlacemarkの住所を使えばOK
26.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 26262626 oauthのverifyが通らない • 2-legged OAuth – requestに署名を付けて送る仕組み • 署名の検証が通らない – requestを眺めて – requestから組み立てたBaseStringを確認す れば – 違いに気づける
27.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 27272727 知ってると便利な小技 • net-http-spy – Net::HTTPにloggerを仕込む irb > require "net-http-spy" irb > Hase.container.handler("john.doe").person CONNECT: ["localhost", 8080] GET /social/rest/people/@me/@self?fields=id,name,displayName,thumbnai lUrl,gender,dateOfBirth&xoauth_requestor_id=john.doe&oauth_consumer_k ey=http%3A%2F%2Flocalhost%3A8080%2Fsamplecontainer%2Fexamples%2FSocia lHelloWorld.xml&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1290 204829&oauth_nonce=ROb9UmacNPtJYnaPtE7C7n7yWU8TpMWfHDI4EbY0yY&oauth_v ersion=1.0&oauth_signature=8Cl2X%2FVDiwVd6gglSZX0s9aWaa4%3D BODY: Net::HTTPOK # => {"container_user_id"=>"john.doe", "nickname"=>"Johnny", "thumbnail_url"=>nil, "gender"=>1, "birthday"=>nil}
28.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 28282828 知ってると便利な小技 • WEBrick::HTTPProxyServer – Proxyを通せる環境なら便利 • tcpflow – tcpdumpの保存しないバージョン – webサーバに来るアクセスを覗き見したいと きとか
29.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 29292929 agenda • API利用 – デバッグの勘所 • 人口爆発 – 負荷を想定する – 正しくwebアプリを作る • 短納期 – 何を犠牲にして何を得るか – 超高速でPDCAサイクルを回す
30.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 30303030 負荷を想定する アクセス数 データ量
31.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 31313131 アクセス数 巨大SNSだから ソーシャルだから スモールスタートさせてくれない 口コミや招待インセンティブの力は異常 リロードするたびにユーザが増加 いきなりオススメに載ったりも……
32.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 32323232 アクセス数 リリース1週間で10万ユーザ突破 1ヶ月で30万ユーザも視野に 1ユーザ平均100クリック/Dayとして 10万ユーザで1,000万imp
33.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 33333333 いきなり 1,000万imp = 230 imp/sec (ピーク時は平均の2倍)
34.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 34343434 230 imp/sec どれぐらいのサーバ台数が必要なのか • web/ap – 230 Throughput / sec – レスポンスを1秒で返すなら230worker必要 – Railsが200MB弱使うので40GBのメモリが 必要 – メモリ8GBが5台
35.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 35353535 230 imp/sec • cache – 5query/impとして1,150 QPS出ればOK – メモリに載っているなら1台で十分 • db – 10query/impとして2,300 QPS出ればOK – それなりなマシンなら1台で十分かも? – 足りないならmaster/slave分散必須 – 更新に耐えられないならpartitioningも必要
36.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 36363636 データ量 1Clickで1レコード増加するアクション – あしあと帳とか – 課金ログとか 1秒1クリック=2,592,000クリック/月 1ヶ月で数千万レコード超に成長するDB
37.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 37373737 データ量 • 捨てられないデータがあるとすぐに 数十GB突破 • メモリに載りきらない
38.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 38383838 まずはDBをなんとかする
39.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 39393939 メモリに載らないなら メモリを増やせば いいじゃない
40.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 40404040 master/slave分散 • 更新系のクエリはmasterに、参照系のク エリはslaveに行くよう分散する
41.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 41414141 master/slave分散 • 代表的なgem – acts_as_readonlyable – multi_db – masochizm – db-charmer – data_fabric – octopus
42.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 42424242 master/slave分散 • 実装はそこまで難しくない • Rails 2.2でConnectionPoolingを導入 • initialize – ActiveRecord::Base.establish_connection – @connection_poolsにconnectionを保存 • find_by_sql – ActiveRecord::ConnectionAdapters::Connec tionHandler#retrieve_connection
43.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 43434343 Partitioning • ゲームは更新系のクエリが多い – 体力が減った – 経験値が増えた – 対戦してアイテムを奪った • 参照系のクエリをslaveに逃がしても 更新系のクエリだけでmasterのDiskIOが 限界に達する
44.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 44444444 垂直分割 • カテゴリごとに別のDBへ
45.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 45454545 垂直分割 テーブル単位で別のDB JOIN不能
46.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 46464646 垂直分割 Modelから has_many has_one belongs_to が消滅
47.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 47474747 RDBMSを リレーショナルに使わない
48.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 48484848 水平分割 • 複数のテーブルにデータを分散
49.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 49494949 Replication+Partitioning= Sharding
50.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 50505050 Sharding • 代表的なgem – db-charmer – data_fabric – octopus
51.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 51515151 MongoDBにすれば解決
52.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 52525252 負荷テスト 以上のようなことが必要かどうかを把握 するために,またどのぐらい改善された かを確認するために負荷テストは必須な のです。 どこまで耐えられるのかを知っておくた めに過負荷テストも必須なのです。
53.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 53535353 負荷テスト リリース前に 50万ユーザが3ヶ月 遊んだ想定のデータを作り 本番想定と同じアクセス負荷をかける • テストデータ生成に便利なgem – faker
54.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 54545454 負荷テスト • 何に注目する? – ThroughPut – DiskIO – connection数
55.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 55555555 ThroughPutの改善
56.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 56565656 最速でユーザに レスポンスを返す
57.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 57575757 最速でレスポンスを返す • 時間がかかる処理はレスポンスだけ返し 裏で重い処理を実行するという手法 – 画像/Flashの合成 – APIを叩く – ポイント付与 – クエスト達成判定 – 農園の作物が育ったかどうか
58.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 58585858 5秒制限 5秒以内にレスポンスを返せなかったら アプリをメンテナンス状態にされる
59.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 59595959 例えば • 経営シミュレーションアプリで TOPページ→マイページ という遷移 • TOPページへのアクセスを検知して 非同期に売買処理をしながら TOPページというレスポンスを返す • マイページに行ったときには完売になっ た品物の姿が!
60.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 60606060 非同期処理 • ユーザのアクセスをトリガーとして動作 • レスポンスは最速で返して裏で処理する • 代表的なgem – resque – delayed_job
61.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 61616161 Resque • 管理画面が秀逸 – キューの状況 – workerの状況 – 失敗したjobの把握や再実行 • Resque Scheduler – バッチ処理もRailsで管理 • cronの管理から開放 – 毎回Railsの起動をしなくても良い
62.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 62626262 その他の工夫 • BULK INSERT – 複数レコードのINSERTを1回で行う INSERT INTO `example_table` VALUES (1, 'aaa', 11), (2, 'bbb', 22), (3, 'ccc', 33), (4, 'ddd', 44);
63.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 63636363 BULK INSERT • いつ使う? – 友だち関係をDBに保存したい – 友だち全員に通知を飛ばしたい • 便利なgem – activerecord-import
64.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 64646464 正しくwebアプリを作る 手抜きかな? と思いながら 作ったところは 必ず ボトルネックになります
65.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 65656565 例えば • 1日の回復数の上限に達しているかどうか を調べるのに履歴テーブルのcountを 取っているとか – カウンターキャッシュを随所で使う • ユーザ数×アイテム数だけレコードがで きるとか – 間違いなく水平分割必須になる – 1レコードにJSON化して入れてみる • like 検索厳禁は当然
66.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 66666666 ユーザ数数万程度を 想定しているコードは 全てNG
67.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 67676767 正しくwebアプリを作る • GAEでの制限の意味が分かってくる – リクエスト処理時間30秒制限 – 関連が存在しない – 1,000件しか取れない
68.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 68686868 正しくwebアプリを作る • 巨大SNSから流れてくるユーザ数は エンジニアの甘えを許してくれない • 自らの技術的水準を飛躍的に向上させる チャンス
69.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 69696969 agenda • API利用 – デバッグの勘所 • 人口爆発 – 負荷を想定する – 正しくwebアプリを作る • 短納期 – 何を犠牲にして何を得るか – 超高速でPDCAサイクルを回す
70.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 70707070 何を犠牲にして速度を得るか • ドキュメントは最小限に – Railsっぽい設計ならばER図を見れば中身が 分かる – RESTっぽい設計ならばURLを見れば中身が 分かる ER図とURL設計書以外のドキュメントは (開発中は)管理しない
71.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 71717171 何を犠牲にして速度を得るか • ドキュメントは最小限に
72.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 72727272 何を犠牲にして速度を得るか • 迷う時間を最小限に – Railsっぽいかどうかを考える Do You Ride on Rails?
73.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 73737373 超高速でPDCAサイクルを回す • 売上=DAU*Daily ARPU*継続日数 • 注視KPI – DAU – ARPU/Day – 継続日数 – Install数 – バイラル率
74.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 74747474 超高速でPDCAサイクルを回す • Plan, Do, Check, Action • Do, Actionは速度を上げるのが難しいの でPとCを最速にすることを考える
75.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 75757575 PDCAサイクルを超高速で回す • Plan最速 – 考えなくても施策が出てくる – 常に施策を考え続けられる環境を作る • Check最速 – 何もしなくてもデータが手元に集まってくる – 常に施策の結果を閲覧できる環境を作る
76.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 76767676 いつでも見られる環境を作る
77.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 77777777 いつでも見られる環境を作る
78.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 78787878 いつでも見られる環境を作る • ログの集約・収集 • ログ? – ユーザの行動を記録したもの • ログインした • ガチャを回した • コメントした • 友達にアイテムを渡した
79.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 79797979 いつでも見られる環境を作る • 1日3GB分のログが溜まっていく • 数十サーバに分散されているので 集約や収集がとても面倒 • rsync? • syslog-ng? • scribe!
80.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 80808080 scribe • facebook++ • scribeサーバ間で勝手に転送してくれる • エラー時の再送の面倒も見てくれたり
81.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 81818181 scribe • 転送量が心配になってきたので MessagePackを使おうかなぁと 考えています
82.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 82828282 まとめ • APIには – 送受信している内容の確認が鉄則 • 人口爆発には – 負荷試験と監視大事 – データ量に耐えうる設計 – 正しく作ることを常に意識する • 短納期には – The Rails Way に任せる – 動向把握を最速で行うことで意思決定速度UP
83.
Copyright © DRECOM
Co., Ltd All Rights Reserved. 83838383 ご清聴ありがとうございました
Jetzt herunterladen