開発担当のKです。
「ソー シャルゲームの作り方」というテーマで、5回に分けてお話ししています。
※↑↑ いいね!ボタンを押していただければとってもうれしいです。
今回(第2回め)のテーマは「基 本設計」と、「サーバ構成」で す。
基本設計で気をつけた3つのポイント
1:フレームワークの規約に則した開発を行うこと。
フレームワークの規約に則した開発を行うこと。
また、すでにフレームワークに存在する基本機能をなるべく使用するようにすること。
逆にフレームワークでは機能が不十分な部分を見極め、独自開発とすること。
2:拡張、追加をある程度予想した設計を行うこと。
後に拡張、追加する可能性のある機能があるかあらかじめ調査を 行い、
なるべく変更が少なくなるよう考慮して設計を行うこと。
3:後からの変更がしやすい設計を行 うこと。
ゲーム中の制限となる数値(かかる時間、使用ポイントなど定数 で定義される数値)は
比率により後から、変更できるように、係数を定数として用意すること。
とりあえず、基本設計では、この3つのポイントを抑えておくことが必須です よ。
サーバ構成は?
☆基本的にはLAMP構成!
※LAMPとは?
OSであるLinux、
WebサーバであるApache HTTP Server、
データベースであるMySQL、
スクリプト言語であるPerl、PHP、Python
を総称した頭文字から成る造語です。
※ 「CentOS」とは?
Red Hat Enterprise Linux(以下「RHEL」と呼ぶ)との完全互換を目指した
フリーのLinuxディストリビューション(頒布形態)です。
※「64bit」とは?
コンピュータにおいて、連続した64個(桁)のビット(8オクテット)であ り、バイナリで
最大18,446,744,073,709,551,616(16E)までの数を表現できます。
※「Apache」とは?
人気の高いWebサーバソフトウェアの一つ。1995年にNCSA httpd 1.3をベースに開発が始まり、
UNIX系OSを中心に幅広い人気を獲得しました。Apacheはフリーソフトウェアとして無償で公開され、
世界中のボランティアのプログラマたちの手によって長年に渡って開発が続けられています。
※「PHP」とは?
動的にHTMLデータを生成することによって、動的なウェ ブページを実現することを
主な目的としたプログラミング言語、およびその言語処理系のことです。
※ 「APC」とは?
PHP:_Hypertext_Preprocessor のモジュールの一つの Alternative PHP Cacheの略。
PHPの実行コードをキャッシュ(高速化)します。
※ 「eAccelerator」とは?
コンパイルされたPHPスクリプトを保存し、PHPスクリプトに変化がなけ れば保存されたものから
実行してやろうというもので、つまり毎回コンパイルする必要がなくなるのでPHPが高速に実行
できるという仕組みです。
※「FreeBSD」とは?
UNIXライクなオープンソースのオペレーティングシステ ムです。
※ 「MySQL」とは?
オラクルが開発するRDBMS(リレーショナルデータベースを管理、運用す るためのシステム)の実装の一つです。
☆ロードバランサとしてPoundを選択
負 荷対策と、冗 長化を考慮した結果、L7ソフトウエアロード バランサとして
「Pound」が良いと考えました。
※冗長化とは?
システムの一部に何らかの障害が発生した場合に備えて、障 害発生後でもシステム全体の機能を
維持し続けられるように予備装置を平常時からバックアップとして配置し運用しておくこと。
※L7ソフトウエアロードバランサとは?
レイヤーセブン(第7階層)のア プリケーション層でソフトウエ ア的にロードバランス(負荷分散)させるしくみのこと。
☆Poundを選択した理由
L7ソフトウエアロードバランサとして「Pound」を選択した理由は
1:負荷が非常に低く、低スペックマシンでも処理速度が速いた め。
2:バランシング能力が高い(Squidの キャッシュ機能を必要としない) ためです。
☆FreeBSDを選択した理由
データベースサーバのOSと して、FreeBSDを選んだのは
Linux(特 定のディストリビューション:頒布形態)に固執しての構成検討は行っておらず
用途に応じたOSの選択を柔軟に行っているため。
※「Pound」とは?
リバースプロキシ & ロードバランサ(reverse-proxy and load-balancer)で、
1 リバースプロキシ : ブラウザからのリクエストを1台以上のバックエンド・サーバに渡す
(バックエンド・サーバからは、Pound が動作しているマシンからのリクエストにみえる)。
2 ロードバランサ : 複数台のバックエンド・サーバにリクエストを分配する(優先順位の設定可)。
3 SSLラッパ : ブラウザからのHTTPSリクエストをHTTPでバックエンド・サーバにリクエストする
(HTTPしかサポートしていないサーバをHTTPS対応にできる)。
4 HTTP/HTTPS サニタイザー : 要求の正当性を確認し、正しいもののみを受け入れる。
5 フェイルオーバー : バックエンド・サーバのヘルスチェックを行い、ダウンしているサーバには
リクエストを送らない。復帰を検出したら自動的に通信を再開する。
6 リクエスト・リダイレクター : リクエストされたURLやヘッダ情報(正規表現で指定)によって
どのバックエンド・サーバに渡すか指定できる(バーチャルホストやアクセス拒否も可能)。
などの機能があり、サイズも小さく、設定も簡単。
但し、以下の機能は持っていません。
1 Webサーバ : 自身ではコンテンツを持ちません。
2 Webアクセラレータ : キャッシングはしません。
※「Squid」とは?
プロキシ (Proxy) サーバ、ウェブキャッシュサーバなどに利用されるフリーソフトウェア。
Squidの用途は重複しているリクエストに対したキャッシュ応答によるウェブサーバの高速動作や、
ネットワーク資源を共有する人々が行うWorld Wide WebやDNSなどの様々なネットワーククエリの
キャッシュなど多岐にわたります。
※「Linux」とは?
一般的にはUNIXライクなコンピュータ用オペレーティン グシステム(OS)の一群を指し、
厳密にはその中核となる部分であるカーネル(階層型に設計されたOSの中核となる部分)のことです。
第2回は、これで終了です。
次回(3回目)は、「PHP 実装のポイント」と「データベース設計で留意点」
についてお話しできればと思います。
なお、ご意見、ご質問などは、こ ちら(フォーム)から、お願いいたします。
※ご意見、ご質問の本文内に「ソーシャルゲームの作り 方(その2)」について
と、記入いただけるとうれしいです。
ソーシャルゲーム虎の 巻Facebookページはこちらです。
ではまた。
「ソー シャルゲームの作り方」というテーマで、5回に分けてお話ししています。
※↑↑ いいね!ボタンを押していただければとってもうれしいです。
今回(第2回め)のテーマは「基 本設計」と、「サーバ構成」で す。
基本設計で気をつけた3つのポイント
1:フレームワークの規約に則した開発を行うこと。
フレームワークの規約に則した開発を行うこと。
また、すでにフレームワークに存在する基本機能をなるべく使用するようにすること。
逆にフレームワークでは機能が不十分な部分を見極め、独自開発とすること。
2:拡張、追加をある程度予想した設計を行うこと。
後に拡張、追加する可能性のある機能があるかあらかじめ調査を 行い、
なるべく変更が少なくなるよう考慮して設計を行うこと。
3:後からの変更がしやすい設計を行 うこと。
ゲーム中の制限となる数値(かかる時間、使用ポイントなど定数 で定義される数値)は
比率により後から、変更できるように、係数を定数として用意すること。
とりあえず、基本設計では、この3つのポイントを抑えておくことが必須です よ。
サーバ構成は?
☆基本的にはLAMP構成!
※LAMPとは?
OSであるLinux、
WebサーバであるApache HTTP Server、
データベースであるMySQL、
スクリプト言語であるPerl、PHP、Python
を総称した頭文字から成る造語です。
※ 「CentOS」とは?
Red Hat Enterprise Linux(以下「RHEL」と呼ぶ)との完全互換を目指した
フリーのLinuxディストリビューション(頒布形態)です。
※「64bit」とは?
コンピュータにおいて、連続した64個(桁)のビット(8オクテット)であ り、バイナリで
最大18,446,744,073,709,551,616(16E)までの数を表現できます。
※「Apache」とは?
人気の高いWebサーバソフトウェアの一つ。1995年にNCSA httpd 1.3をベースに開発が始まり、
UNIX系OSを中心に幅広い人気を獲得しました。Apacheはフリーソフトウェアとして無償で公開され、
世界中のボランティアのプログラマたちの手によって長年に渡って開発が続けられています。
※「PHP」とは?
動的にHTMLデータを生成することによって、動的なウェ ブページを実現することを
主な目的としたプログラミング言語、およびその言語処理系のことです。
※ 「APC」とは?
PHP:_Hypertext_Preprocessor のモジュールの一つの Alternative PHP Cacheの略。
PHPの実行コードをキャッシュ(高速化)します。
※ 「eAccelerator」とは?
コンパイルされたPHPスクリプトを保存し、PHPスクリプトに変化がなけ れば保存されたものから
実行してやろうというもので、つまり毎回コンパイルする必要がなくなるのでPHPが高速に実行
できるという仕組みです。
※「FreeBSD」とは?
UNIXライクなオープンソースのオペレーティングシステ ムです。
※ 「MySQL」とは?
オラクルが開発するRDBMS(リレーショナルデータベースを管理、運用す るためのシステム)の実装の一つです。
☆ロードバランサとしてPoundを選択
負 荷対策と、冗 長化を考慮した結果、L7ソフトウエアロード バランサとして
「Pound」が良いと考えました。
※冗長化とは?
システムの一部に何らかの障害が発生した場合に備えて、障 害発生後でもシステム全体の機能を
維持し続けられるように予備装置を平常時からバックアップとして配置し運用しておくこと。
※L7ソフトウエアロードバランサとは?
レイヤーセブン(第7階層)のア プリケーション層でソフトウエ ア的にロードバランス(負荷分散)させるしくみのこと。
☆Poundを選択した理由
L7ソフトウエアロードバランサとして「Pound」を選択した理由は
1:負荷が非常に低く、低スペックマシンでも処理速度が速いた め。
2:バランシング能力が高い(Squidの キャッシュ機能を必要としない) ためです。
☆FreeBSDを選択した理由
データベースサーバのOSと して、FreeBSDを選んだのは
Linux(特 定のディストリビューション:頒布形態)に固執しての構成検討は行っておらず
用途に応じたOSの選択を柔軟に行っているため。
※「Pound」とは?
リバースプロキシ & ロードバランサ(reverse-proxy and load-balancer)で、
1 リバースプロキシ : ブラウザからのリクエストを1台以上のバックエンド・サーバに渡す
(バックエンド・サーバからは、Pound が動作しているマシンからのリクエストにみえる)。
2 ロードバランサ : 複数台のバックエンド・サーバにリクエストを分配する(優先順位の設定可)。
3 SSLラッパ : ブラウザからのHTTPSリクエストをHTTPでバックエンド・サーバにリクエストする
(HTTPしかサポートしていないサーバをHTTPS対応にできる)。
4 HTTP/HTTPS サニタイザー : 要求の正当性を確認し、正しいもののみを受け入れる。
5 フェイルオーバー : バックエンド・サーバのヘルスチェックを行い、ダウンしているサーバには
リクエストを送らない。復帰を検出したら自動的に通信を再開する。
6 リクエスト・リダイレクター : リクエストされたURLやヘッダ情報(正規表現で指定)によって
どのバックエンド・サーバに渡すか指定できる(バーチャルホストやアクセス拒否も可能)。
などの機能があり、サイズも小さく、設定も簡単。
但し、以下の機能は持っていません。
1 Webサーバ : 自身ではコンテンツを持ちません。
2 Webアクセラレータ : キャッシングはしません。
※「Squid」とは?
プロキシ (Proxy) サーバ、ウェブキャッシュサーバなどに利用されるフリーソフトウェア。
Squidの用途は重複しているリクエストに対したキャッシュ応答によるウェブサーバの高速動作や、
ネットワーク資源を共有する人々が行うWorld Wide WebやDNSなどの様々なネットワーククエリの
キャッシュなど多岐にわたります。
※「Linux」とは?
一般的にはUNIXライクなコンピュータ用オペレーティン グシステム(OS)の一群を指し、
厳密にはその中核となる部分であるカーネル(階層型に設計されたOSの中核となる部分)のことです。
第2回は、これで終了です。
次回(3回目)は、「PHP 実装のポイント」と「データベース設計で留意点」
についてお話しできればと思います。
なお、ご意見、ご質問などは、こ ちら(フォーム)から、お願いいたします。
※ご意見、ご質問の本文内に「ソーシャルゲームの作り 方(その2)」について
と、記入いただけるとうれしいです。
ソーシャルゲーム虎の 巻Facebookページはこちらです。
ではまた。