Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kentaro Matsui
PDF, PPTX
139,034 views
PHPで大規模ブラウザゲームを開発してわかったこと
2010年6月26日に行われたイベント、オープンソースカンファレンス2010 Hokkaido内のセミナーで使われた発表スライド「PHPで大規模ブラウザゲームを開発してわかったこと」
Read more
191
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 28
2
/ 28
3
/ 28
4
/ 28
5
/ 28
6
/ 28
7
/ 28
8
/ 28
Most read
9
/ 28
10
/ 28
11
/ 28
12
/ 28
13
/ 28
14
/ 28
15
/ 28
16
/ 28
17
/ 28
Most read
18
/ 28
19
/ 28
Most read
20
/ 28
21
/ 28
22
/ 28
23
/ 28
24
/ 28
25
/ 28
26
/ 28
27
/ 28
28
/ 28
Recommended
PPTX
Power BI をアプリに埋め込みたい? ならば Power BI Embedded だ!
by
Teruchika Yamada
PDF
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
by
infinite_loop
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
by
infinite_loop
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PDF
Where狙いのキー、order by狙いのキー
by
yoku0825
PDF
マルチテナント化で知っておきたいデータベースのこと
by
Amazon Web Services Japan
PDF
Fluentdのお勧めシステム構成パターン
by
Kentaro Yoshida
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
PDF
多要素認証による Amazon WorkSpaces の利用
by
Amazon Web Services Japan
PDF
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
by
MorioImai
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
by
infinite_loop
PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
by
Trainocate Japan, Ltd.
PDF
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
by
Uptime Technologies LLC (JP)
PDF
例外設計における大罪
by
Takuto Wada
PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
by
Amazon Web Services Japan
PDF
分散トレーシング技術について(Open tracingやjaeger)
by
NTT Communications Technology Development
PDF
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
by
kwatch
PPTX
Amazon Athena で実現する データ分析の広がり
by
Amazon Web Services Japan
PDF
Serverless時代のJavaについて
by
Amazon Web Services Japan
PDF
NTT研究所におけるYammerの取り組みと、社内Twitterの統計解析
by
Tokoroten Nakayama
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
by
JustSystems Corporation
PDF
nginx入門
by
Takashi Takizawa
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
PDF
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
by
Yuusuke Takeuchi
PDF
しごとで使うTitanium 第2版
by
忠利 花崎
More Related Content
PPTX
Power BI をアプリに埋め込みたい? ならば Power BI Embedded だ!
by
Teruchika Yamada
PDF
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
by
infinite_loop
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
by
infinite_loop
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PDF
Where狙いのキー、order by狙いのキー
by
yoku0825
PDF
マルチテナント化で知っておきたいデータベースのこと
by
Amazon Web Services Japan
PDF
Fluentdのお勧めシステム構成パターン
by
Kentaro Yoshida
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
Power BI をアプリに埋め込みたい? ならば Power BI Embedded だ!
by
Teruchika Yamada
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
by
infinite_loop
ソーシャルゲーム案件におけるDB分割のPHP実装
by
infinite_loop
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
Where狙いのキー、order by狙いのキー
by
yoku0825
マルチテナント化で知っておきたいデータベースのこと
by
Amazon Web Services Japan
Fluentdのお勧めシステム構成パターン
by
Kentaro Yoshida
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
What's hot
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
PDF
多要素認証による Amazon WorkSpaces の利用
by
Amazon Web Services Japan
PDF
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
by
MorioImai
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
by
infinite_loop
PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
by
Trainocate Japan, Ltd.
PDF
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
by
Uptime Technologies LLC (JP)
PDF
例外設計における大罪
by
Takuto Wada
PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
by
Amazon Web Services Japan
PDF
分散トレーシング技術について(Open tracingやjaeger)
by
NTT Communications Technology Development
PDF
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
by
kwatch
PPTX
Amazon Athena で実現する データ分析の広がり
by
Amazon Web Services Japan
PDF
Serverless時代のJavaについて
by
Amazon Web Services Japan
PDF
NTT研究所におけるYammerの取り組みと、社内Twitterの統計解析
by
Tokoroten Nakayama
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
by
JustSystems Corporation
PDF
nginx入門
by
Takashi Takizawa
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
多要素認証による Amazon WorkSpaces の利用
by
Amazon Web Services Japan
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
by
MorioImai
マイクロサービス 4つの分割アプローチ
by
増田 亨
Redisの特徴と活用方法について
by
Yuji Otani
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
by
infinite_loop
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
by
Trainocate Japan, Ltd.
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
by
Uptime Technologies LLC (JP)
例外設計における大罪
by
Takuto Wada
20190514 AWS Black Belt Online Seminar Amazon API Gateway
by
Amazon Web Services Japan
分散トレーシング技術について(Open tracingやjaeger)
by
NTT Communications Technology Development
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
by
kwatch
Amazon Athena で実現する データ分析の広がり
by
Amazon Web Services Japan
Serverless時代のJavaについて
by
Amazon Web Services Japan
NTT研究所におけるYammerの取り組みと、社内Twitterの統計解析
by
Tokoroten Nakayama
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
by
JustSystems Corporation
nginx入門
by
Takashi Takizawa
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
Viewers also liked
PDF
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
by
Yuusuke Takeuchi
PDF
しごとで使うTitanium 第2版
by
忠利 花崎
PPTX
Fuelphp1.8を始めたい
by
運営 sollastudio
PDF
PHP超入門@LL温泉
by
Sotaro Karasawa
PDF
負荷テストを行う際に知っておきたいこと 初心者編
by
まべ☆てっく運営
PDF
オンラインゲームの仕組みと工夫
by
Yuta Imai
PDF
負荷がたかいいんだから~♪(仮)
by
Yohei Hamada
PDF
自宅で出来る!ゲームサーバの作り方
by
光晶 上原
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
by
Takahiro Moteki
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
by
Yuusuke Takeuchi
しごとで使うTitanium 第2版
by
忠利 花崎
Fuelphp1.8を始めたい
by
運営 sollastudio
PHP超入門@LL温泉
by
Sotaro Karasawa
負荷テストを行う際に知っておきたいこと 初心者編
by
まべ☆てっく運営
オンラインゲームの仕組みと工夫
by
Yuta Imai
負荷がたかいいんだから~♪(仮)
by
Yohei Hamada
自宅で出来る!ゲームサーバの作り方
by
光晶 上原
[社内勉強会]ELBとALBと数万スパイク負荷テスト
by
Takahiro Moteki
Similar to PHPで大規模ブラウザゲームを開発してわかったこと
PDF
地方企業がソーシャルゲーム開発を成功させるための10のポイント
by
Kentaro Matsui
PPTX
LAMP技術者でも無理なくツカエルWindowsAzureで運営するソーシャルアプリの裏側
by
gipwest
PDF
オープニングセッション
by
konekto
KEY
Web Operations and Perl kansai.pm#14
by
Masahiro Nagano
PDF
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
by
Masakazu Matsushita
PDF
目指せ1秒切り!ECサイト表示高速化のワザ
by
Kohei MATSUSHITA
PPTX
初心者向け負荷軽減のはなし
by
Oonishi Takaaki
PDF
Enter the-dolphine
by
Mikiya Okuno
PDF
データマイニング+WEB勉強会資料第6回
by
Naoyuki Yamada
PPT
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
by
Kazuho Oku
PDF
Cloudian nosql casestudy_20120318
by
CLOUDIAN KK
PDF
ソーシャルゲームにおけるAWS/MongoDB利用事例
by
Masakazu Matsushita
PDF
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
by
infinite_loop
PPT
081108huge_data.ppt
by
Naoya Ito
KEY
1台から500台までのMySQL運用(YAPC::Asia編)
by
Masahiro Nagano
PDF
AWSを利用した中規模Webシステム構築運用事例
by
ina128
KEY
ゆるかわPhp
by
Ryota Mochizuki
PDF
Ajn24
by
Katsuyuki Seino
PDF
Windows Azure Community Open Day 2012
by
Microsoft Openness Japan
PDF
CommunityOpenDay2012名古屋セッション資料
by
Shinichiro Isago
地方企業がソーシャルゲーム開発を成功させるための10のポイント
by
Kentaro Matsui
LAMP技術者でも無理なくツカエルWindowsAzureで運営するソーシャルアプリの裏側
by
gipwest
オープニングセッション
by
konekto
Web Operations and Perl kansai.pm#14
by
Masahiro Nagano
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
by
Masakazu Matsushita
目指せ1秒切り!ECサイト表示高速化のワザ
by
Kohei MATSUSHITA
初心者向け負荷軽減のはなし
by
Oonishi Takaaki
Enter the-dolphine
by
Mikiya Okuno
データマイニング+WEB勉強会資料第6回
by
Naoyuki Yamada
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
by
Kazuho Oku
Cloudian nosql casestudy_20120318
by
CLOUDIAN KK
ソーシャルゲームにおけるAWS/MongoDB利用事例
by
Masakazu Matsushita
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
by
infinite_loop
081108huge_data.ppt
by
Naoya Ito
1台から500台までのMySQL運用(YAPC::Asia編)
by
Masahiro Nagano
AWSを利用した中規模Webシステム構築運用事例
by
ina128
ゆるかわPhp
by
Ryota Mochizuki
Ajn24
by
Katsuyuki Seino
Windows Azure Community Open Day 2012
by
Microsoft Openness Japan
CommunityOpenDay2012名古屋セッション資料
by
Shinichiro Isago
More from Kentaro Matsui
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PDF
20201113_バーチャルキャストが創り出すVRの未来
by
Kentaro Matsui
PDF
Virtual Cast 設立資料
by
Kentaro Matsui
PDF
札幌移住計画夏の企業見学会2018説明資料
by
Kentaro Matsui
PDF
札幌移住計画夏の企業見学会2017説明会
by
Kentaro Matsui
PDF
札幌移住計画のご紹介
by
Kentaro Matsui
PDF
Skypeボット マザーゆっくり
by
Kentaro Matsui
PDF
チーム開発をうまく行うためのコーディング規約論
by
Kentaro Matsui
PDF
地方企業がリモートで首都圏のお仕事をこなすための10個のポイント
by
Kentaro Matsui
PDF
「Html sql」で図書館hpにアクセスしてみよう
by
Kentaro Matsui
PDF
Gps座標を短い文字列で扱えるGeo Hashが面白い
by
Kentaro Matsui
PDF
PHPを使って3分で作る3キャリア対応ケータイサイト
by
Kentaro Matsui
PDF
20090828 Webconlocal
by
Kentaro Matsui
PDF
モバイル版Googleマップのちょっと進んだ使い方
by
Kentaro Matsui
PDF
ケータイサイトのはなし(入門編)
by
Kentaro Matsui
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
20201113_バーチャルキャストが創り出すVRの未来
by
Kentaro Matsui
Virtual Cast 設立資料
by
Kentaro Matsui
札幌移住計画夏の企業見学会2018説明資料
by
Kentaro Matsui
札幌移住計画夏の企業見学会2017説明会
by
Kentaro Matsui
札幌移住計画のご紹介
by
Kentaro Matsui
Skypeボット マザーゆっくり
by
Kentaro Matsui
チーム開発をうまく行うためのコーディング規約論
by
Kentaro Matsui
地方企業がリモートで首都圏のお仕事をこなすための10個のポイント
by
Kentaro Matsui
「Html sql」で図書館hpにアクセスしてみよう
by
Kentaro Matsui
Gps座標を短い文字列で扱えるGeo Hashが面白い
by
Kentaro Matsui
PHPを使って3分で作る3キャリア対応ケータイサイト
by
Kentaro Matsui
20090828 Webconlocal
by
Kentaro Matsui
モバイル版Googleマップのちょっと進んだ使い方
by
Kentaro Matsui
ケータイサイトのはなし(入門編)
by
Kentaro Matsui
PHPで大規模ブラウザゲームを開発してわかったこと
1.
PHPで大規模ブラウザゲームを 開発してわかったこと
LOCAL PHP部 株式会社インフィニットループ ke-tai.org 松井 健太郎
2.
自己紹介松井 健太郎・ LOCAL PHP部 部長・
株式会社インフィニットループ 代表・ ke-tai.org 管理人・ コーラが好き
3.
自己紹介(2)http://ke-tai.org/
4.
本日の内容1. ソーシャルゲーム大流行2. 困った!ゲームなんて作ったことないぞ!?
- 通常の案件とゲーム製作の違い3. なぜPHPを使ってるの?4. ゲーム向けの基本設計とサーバ構成5. PHP実装のポイント6. データベース設計で注意するところ7. これが一番の問題!負荷対策について8. その他こんなところに苦労した
5.
ソーシャルゲーム大流行・ それまでも兆しはあった
→ ブラウザゲームというジャンルは以前から存在していた → 海外での利用者数増加・ はじまりはmixiアプリから → 2009年8月mixiアプリオープン → 2009年10月mixiアプリモバイルオープン サンシャイン牧場・ 国内ウェブコンテンツ制作の業者がこぞってゲーム開発に参入・ モバゲー、GREE、大手ゲーム会社などを巻き込んでの大戦争に・ 2010年には1000億円市場になると言われている 2010 mixi IR資料より
6.
ブラウザ三国志について運営(株)AQインタラクティブ開発ONE-UP(株)プログラム開発を(株)インフィニットループが担当2009年6月サービス開始2010年8月mixi版サービス開始会員数約80万人以上(2010年5月現在)月間PV数 約2億6千万PV(2010年5月の実績)
(http://donnamedia.shoeisha.jp/site/detail/4392より)
7.
ブラウザ三国志について(2)特徴・ インストール不要でブラウザ上だけで遊べるゲーム・ 他のプレイヤーと同盟を組み、都市を育てたり戦争を行う・
いわゆる村ゲーと言われるジャンル・ HTML(PHP)とJavaScriptのみで製作されている
8.
困った!ゲームなんて 作ったことないぞ!?・ 弊社にとっても初のゲーム開発
- それまでに作ったことがあるもの ▼ウェブサイト向けの動的コンテンツ ▼業務用のウェブアプリケーション・ 調べてみると基本動作は同じ ▼HTMLとCSSで作られたページの遷移 ▼DBへの登録・修正・削除 ▼JavaScriptによる装飾処理・ サーバ構成もウェブアプリケーションと大差は無い ▼通常のLAMP構成 ▼ただし負荷対策にはしっかりとした考慮が必要 通常のウェブアプリケーションの基礎が → 通常のウェブアプリケーションの基礎が しっかり出来ていれば しっかり出来ていれば大丈夫 しっかり出来ていれば大丈夫
9.
なぜPHPを使ってるの?・ もちろん弊社がPHPが得意というのはあるが…・ 数多くの高負荷運用の実績がある・
開発スタッフ集めが容易(開発スピードが求められる)・ 処理速度がわりと高速、APCなどのアクセラレータで更 にスピードアップ・ プログラム更新の容易さ。メンテナンスなしでゲームを動 かしながら柔軟にアップ作業ができる・ PHPだけが特段ゲーム向きの言語というわけではない
10.
基本設計で気をつけたいところ・ 特に通常案件と大きく変わるわけではない -
いわゆるLAMP構成(Linux, Apache, MySQL, PHP)・ 運用後どれだけ利用者が増えるか予測がしにくいので、 いつ人が増えても破綻をきたさない設計 - 「利用者数が増えてきてから対処」では間に合わない - サーバを追加することで対処可能なように・ 利用数の増加スピードには大きな波がある - ソーシャルアプリならではのクチコミやランキング入りなど - サーバ追加の容易さが求められる・ 落とさないサーバ作りは大変 - 重要サーバのみを守り、他はどんどん落とすという方針
11.
サーバ構成例Amazon EC2上に構築
上 HTTPアクセス・ squid(ロードバランサー) ロードバランサ・ Apache (squid) HTTP振り分け・ PHP+APC ・ ・ ・ バッチ処理サーバ Webサーバ Webサーバ Webサーバ・ MySQL (Apache) (Apache) (Apache) DBアクセス EC2によるオー EC2によるオー トスケーリング・ memcached キャッシュサーバ (memcached) 負荷に で、負荷に応じ 台数が て台数が自動・ syslogd(ログサーバ) ログサーバ DBマスター (MySQL) 増減する 増減する レプリケーション (syslogd) ・ ・ ・ DBスレイブ DBスレイブ DBスレイブ (MySQL) (MySQL) (MySQL)
12.
PHP実装のポイント(1)・ 既成フレームワークは使っていない →
負荷が高すぎた際に手が出せない恐れがあるため → ただし工数削減のために導入もあり・ テンプレートエンジンにはSmartyを利用 → 遅いと言われているがベンチを取ったところ別に遅くない → デザイン連携がしやすい・ クラス化が重要 → 通常の案件と比べると、遥かにクラス化の効果が高い → ゲームは再利用が多いので、クラス化と相性が良いと思われる → 例えばポーションクラスを継承してハイポーションのアイテムを作成など
13.
PHP実装のポイント(2)・ ログはしっかり取る →
PEAR::Logを使用している → ログレベルを可変にできるように → 規模が大きくなるほどバグの把握と再現が難しくなる・ 実行されるSQLはすべて管理できるようにする → ごく一部の遅いSQLが、DBサーバの負荷の大半を占める → O/Rマッパーなど自動でSQLが生成されるようなものは利用しない・ DBのロックはしっかり行う → 当たり前だがテーブルロックは使えない → 行ロック(FOR UPDATE)を使用 → しっかり行わないと同時操作や高負荷時にのみ起こるバグが残ってしまう・ その他大きく変わったことはしていない、とにかく基本が大事
14.
データベース設計の注意(1)・ 基本的には通常の案件と同じでOK→ ゲームならではの特殊な設計があるわけではない→
負荷を意識して設計することが必要・ テーブルは必ずしもキレイに正規化されるわけではない→ 高負荷の部分は、あえて冗長な構造にしたり、キャッシュテーブルを設ける・ DB容量の増加はなるべく抑えるようにする→ データ量を少なくするのは、地味なようで効果がある→ なるべくオンメモリで動作するように→ DBスレイブをRAMディスク上で動作させることができる→ ログテーブルなどはバッチで定期的に書き出して削除する
15.
データベース設計の注意(2)・ ロックを考慮して設計 →
ロックの使用方法によってはCPUパワーを使いきれない → ロック待ちをなるべく減らすように → 使用するデータベースソフトや分離レベルによって挙動が微妙に異なるのを 理解する例:プレイヤーのステータス(HP, MP)を格納するテーブルがあったとして、左のように設計してしまうと、 player_id単位で行ロックがかかるため、HPとMPを同時に更新できない。 (下記の例だと魔法を使いながら他者から攻撃を受けることができない)SELCT * FROM player_tbl WHER player_id = x FOR UPDATE; player_tbl player_hp_tbl ・player_id ・player_id ・name ・hp ・hp それぞれに対して ・mp player_mp_tbl 行ロック&更新が可能 ・player_id MP更新中は、HP更 新が待たされる ・mp
16.
これが一番の問題! 負荷対策について・
負荷対策にも色々ある・ ウェブサーバの負荷対策→ CPU負荷の軽減→ 転送量軽減・ DBサーバの負荷対策→ DBスレイブの負荷対策→ DBマスターの負荷対策・ キーバリューストアの導入→ memcached導入の悩ましい問題
17.
負荷対策について ウェブサーバの負荷対策(1)・
Apacheのチューニング → httpd.confなどの設定値を見直しチューニングする・ PHPアクセラレータを導入 → これ無しの運用は考えられない(入れない理由がない) → 比較・評価の結果、APCを利用している・ スケールアウトで対応 → ウェブサーバの台数を増やし、それをLBで振り分けることで対応 → セッションの共有はmemcachedを利用 (他にもDBで共有、LB側で対応などの方法がある)・ PHPプログラムの改善でウェブサーバの負荷を下げるのは 結構難しく、地道な作業が必要
18.
負荷対策について ウェブサーバの負荷対策(2)・
アプリサーバとは別に専用の画像サーバを用意する → 画像、CSS、JavaScriptはアプリサーバとは別に設置する → アプリ側で画像参照先を切り替えられるようにしておく 例:<img src=“{$IMG_DIR}/img/example.jp” />・ 転送量を減らす → ob_gzhandlerで出力を圧縮 → 画像のサイズを小さく → CSSやJSはツールを利用して圧縮する → HTMLのコメントやインデントは削除 ※Smartyのコメント化してしまうと良い 例: <!– comment -> → {*<!– comment ->*}
19.
負荷対策について ウェブサーバの負荷対策(3)・
画像などのキャッシュは強めに設定する例:ExpiresActive OnExpiresDefault "access plus 3 days"・ 任意でキャッシュクリアできる仕掛けを用意する例:<img src=“/20100401-01/img/sample.jpg” />のように画像パスに変更可能な文字列を入れておく画像更新のタイミングでインクリメント <IfModule mod_rewrite.c> RewriteEngine Onシンボリックリンクをはるか、mod_rewriteで RewriteBase /日付の部分を無視するようにしておく。 RewriteRule ^[0-9]{8}-[0-9]+/(.*) $1 </IfModule>
20.
負荷対策 DBスレイブの負荷対策・
MySQLのチューニング → my.cnfなどの設定値を見直しチューニングする・ スケールアウトで対応 → MySQLのレプリケーション機能で台数を増やして対応・ マスターサーバからスレイブサーバの伝達遅延対策 → これが起こるのは非同期レプリケーションの宿命 → データベースの容量はなるべく小さく、オンメモリ内に収まるように → RAMディスクやSSD上にDB領域を作成して対応・ 重いクエリを修正する → スロークエリのログをチェックし、重い順に対策していく → これをひたすら繰り返す(最初のうちは負荷はみるみる下がる)
21.
負荷対策 DBマスターの負荷対策・
DBマスターの負荷対策は難しい → スケールアウトがしずらい → マスターサーバだけ強化しても、スレイブがついていけない・当たり前のことを淡々と → 不要なクエリが実行されていないかを調査 → スロークエリのログを取って、重い順に対策していく → トランザクションの時間をなるべく短くなるようにプログラムを調整・ それでもダメなら → ゲームの仕様で調整できる部分がないか検討する → マスター分割を検討、ただし開発工数の増加を招きやすい → MySQL Clusterってどうなんだろう
22.
キーバリューストアの導入・ キーバリューストア(memcachedなど)の導入は意外と悩ましい・ ゲームではキャッシュが使いづらい
→ 参照がほとんどのWebコンテンツ(例えばニュース、掲示板など)とは違う → キャッシュするのは簡単だが、キャッシュクリア処理が難しい・ トランザクション中はキャッシュを使いづらい → トランザクション中はmemcached上のデータをあてにできない → 利用できるのは変更が入らないマスタ類だけ → DBマスターサーバの負荷軽減にはあまり繋がらない → DBのロールバックに対する対処が必要・ 実装やデバッグのコストが増えやすい → サーバ代と開発とどちらにコストをかけるかの問題 → 実はDBもうまく使えば結構早い → DeNAもMySQLメインのアプローチでやってるらしい? 参考: @IT Special PR:600億PVもMySQLで! モバゲーのインフラ底力(http://www.atmarkit.co.jp/ad/dena/dena1004/index.html)
23.
その他こんなところに苦労した・ APCの不可解な挙動 →
APCのキャッシュが更新されず、プログラムがアップされない → touchコマンドでタイムスタンプを更新すると直る → rsyncに「--no-times」オプションを付けることでひとまず解決・ プログラム規模が大きくなることへの対処 → コーディング規約とルールをしっかりと策定することが大事・ AmazonEC2のトラブル → ゲームとクラウドの相性は良いが、まだまだ安定していない → 国内含め他のクラウドも似たりよったり、まだまだこれから・ 技術者としてのこだわりと、実装のコストと妥協 → プログラムが汚くなることもあるよね → 基本動いているものがえらい → 時には仕様を曲げてもらうことも必要かも
24.
FAQ(1)Q. ゲーム開発は難しくないですか?A. 簡単か難しいかと言われたら、結構難しいです。
テスト環境で動かすだけなら比較的簡単ですが、実際にユーザを 入れてちゃんと動くものを作るのは大変です。 今もわからないことがいっぱいです。Q. AmazonEC2を使用しているそうですが、使ってみてどうですか?A. サーバがすぐに増設できる、負荷に合わせて自動でサーバを増 減させることができる、など長所も多くありますが、安定度という点 ではまだまだと思います。 適材適所で使い分ける必要があるのではないでしょうか。
25.
FAQ(2)Q. ゲーム開発は面白いですか?A. はい、通常案件の倍増しくらいで面白いです。
技術的な面はもちろんですが、コミュニティなどで利用者の反応が すぐに見られる点が特に楽しいです。仕事中に堂々とゲームがで きるというメリットもあります(笑)Q. バグ技を教えてくださいA. バグの内容にもよりますが、悪用できるようなバグはすぐ対処さ れるため、知りません。 もしバグ技を見つけたらブログなどには書かないで、どうかこっそ りと運営までご連絡をお願いします m(_ _)m
26.
FAQ(3)Q. ゲームを作る上で一番重要なことは何ですか?A. クライアントから言われた一言をご紹介します。
「既存WEBエンジニアからのゲーム転身で大事なのは、 参考ゲームをやって面白さを理解してくれること。 ゲームは仕様を読んでもわからない。」
27.
まとめ・ ソーシャルゲーム開発は難しいところもあるが面白い。
ゲーム開発の経験がない人でも意外と何とかなる。・ 負荷対策が大変。基本は台数でカバーできる作りに、そ れ以外はできることから淡々と。・ 設計は開発コストとサーバコストのバランスの見極めが 重要。・ 基礎が大事、負荷対策やロックなどの基本的なところを しっかりと身につけることが必要。
28.
最後に
LOCAL PHP部のご紹介LOCALの一部のメンバでPHPのイベントをゆるく、ながくやっていこうか、という会です。大体二ヶ月に一度くらいのペースで、札幌市内で勉強会を開催しています。LOCAL PHP部のページ:http://php.local.gr.jp/Googleグループ: http://groups.google.co.jp/group/local-php
Download
[8]
ページ先頭
©2009-2025
Movatter.jp