SlideShare uma empresa Scribd logo
1 de 35
[ 大図解 ] ピグライフはこう動いている 株式会社サイバーエージェント アメーバ事業本部プラットフォームディビジョン システムディベロップメントグループ CA Developers Connect                       桑野 章弘
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],自己紹介
ピグライフ
ピグライフ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ピグライフ ,[object Object],[object Object],[object Object],[object Object]
ピグライフのアーキテクチャ [ リリース直後 ] ,[object Object]
ピグライフのアーキテクチャ [ リリース直後 ] ,[object Object],[object Object],[object Object],[object Object],[object Object]
ピグライフのアーキテクチャ[現在] ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ピグライフのアーキテクチャ [ リリース直後 ] ,[object Object]
アーキテクチャ構成 ,[object Object],[object Object],[object Object],[object Object],[object Object]
アーキテクチャ構成[アメーバピグ] Web+AP サーバ Socket サーバ Storage サーバ DB サーバ KVS サーバ HTTP 独自プロトコル Socket サーバ ユーザ (ブラウザ) FrontEnd BackEnd Flash データ リクエスト / 取得 ・ユーザ情報 ・チャットデータ ・ゲームデータ リクエスト / 取得 必要なデータの取得 ユーザの Flash データの保存など ユーザ / エリア等の状態データ ユーザ / エリア等の状態データ(現在は無)
アーキテクチャ構成[ピグライフ] stat サーバ Socket サーバ mongodb サーバ HTTP WebSocket 接続 Node.js サーバ ユーザ (ブラウザ) FrontEnd BackEnd Flash データ -> リクエスト / 取得 ・ユーザ情報 ・チャットデータ -> リクエスト / 取得 必要なデータの取得 ユーザ / エリア等の状態データ
ピグライフのアーキテクチャ [ リリース直後 ] ,[object Object]
リリース前構成 Stat サーバ Node.js サーバ MongoDB Log MongoDB ×6 行動ログの保存 mongos テストオープン時に実装
リリース時構成 Stat サーバ Node.js サーバ MongoDB Log MongoDB ×41 行動ログの保存 サーバにも取得 1 シャード追加 大量追加 mongos
リリース時構成 Stat サーバ Node.js サーバ MongoDB Log MongoDB ×41 行動ログの保存 サーバにも取得 1 シャード追加 大量追加 mongos ×3
現在時構成 Stat サーバ Node.js サーバ MongoDB Log MongoDB ×41 行動ログの保存 サーバにも取得 3 シャード追加 ( 合計 7 シャード ) 大量追加 mongos ・・・・・ ×3
node.js サーバ : アーキテクチャ ,[object Object],[object Object]
node.js サーバ : アーキテクチャ ,[object Object],[object Object],[object Object],[object Object]
node.js サーバ : アーキテクチャ ,[object Object],[object Object]
node.js サーバ:クラスタ構成 ,[object Object],[object Object],[object Object]
node.js サーバ:旧クラスタ構成 Nap サーバ 各サーバでの通信 リング間での通信 Nap サーバ Nap サーバ Nap サーバ サーバ 1   OK サーバ 2   OK サーバ 3   NG サーバ 4   OK サーバ 1   OK サーバ 2   OK サーバ 3   NG サーバ 4   OK
node.js サーバ:現クラスタ構成 Nap サーバ 各サーバの状態は mongodb 側に持つ Nap サーバ Nap サーバ MongoDB 各サーバの死活監視は相互に行う サーバ 1   OK サーバ 2   OK サーバ 3   NG サーバ 4   OK
静的配信サーバ ,[object Object],[object Object]
静的配信サーバ:着せ替えサムネイル ,[object Object],[object Object],[object Object]
静的配信サーバ:着せ替えサムネイル stat サーバ stat サーバ stat サーバ WebDAV でアップロード heartbeat
mongodb サーバ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
mongodb サーバ:アーキテクチャ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
mongodb サーバ:バックアップ・リストア ,[object Object],[object Object],バックアップサーバ MongoDB mongos mongodump mongodump -v --host 127.0.0.1 --port 27020 --out /backup/mongodb/data/testdatabase バックアップ
mongodb サーバ:バックアップ・リストア ,[object Object],[object Object],バックアップサーバ MongoDB mongos mongorestore mongorestore -v --host 127.0.0.1 --port 27020 --db testdatabase --drop /backup/mongodb/data/testdatabase/ リストア
mongodb サーバ:バックアップ・リストア ,[object Object],[object Object],use admin  switched to db admin  > db.runCommand({fsync:1,lock:1})   ロック > db.$cmd.sys.unlock.findOne();   アンロック
mongodb サーバ:いろんな問題 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
その他 ,[object Object],[object Object],[object Object],[object Object]
まとめ ,[object Object],[object Object]
まとめ ,[object Object],[object Object]

Mais conteúdo relacionado

Mais procurados

キャパシティ プランニング
キャパシティ プランニングキャパシティ プランニング
キャパシティ プランニング
外道 父
 

Mais procurados (20)

Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
 
JavaScript GIS ライブラリ turf.js 入門
JavaScript GIS ライブラリ turf.js 入門JavaScript GIS ライブラリ turf.js 入門
JavaScript GIS ライブラリ turf.js 入門
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
 
RDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考えるRDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考える
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
キャパシティ プランニング
キャパシティ プランニングキャパシティ プランニング
キャパシティ プランニング
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
 
実践!Django + GraphQL 実装
実践!Django + GraphQL 実装実践!Django + GraphQL 実装
実践!Django + GraphQL 実装
 
プラネタリウム映像をUnityで
プラネタリウム映像をUnityでプラネタリウム映像をUnityで
プラネタリウム映像をUnityで
 
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
 
脱 Excel設計書
脱 Excel設計書脱 Excel設計書
脱 Excel設計書
 
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
 
みんな大好き“全文検索 on AWS”を試してみました!
みんな大好き“全文検索 on AWS”を試してみました!みんな大好き“全文検索 on AWS”を試してみました!
みんな大好き“全文検索 on AWS”を試してみました!
 
NGSI によるデータ・モデリング - FIWARE WednesdayWebinars
NGSI によるデータ・モデリング - FIWARE WednesdayWebinarsNGSI によるデータ・モデリング - FIWARE WednesdayWebinars
NGSI によるデータ・モデリング - FIWARE WednesdayWebinars
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 

Semelhante a [大図解]ピグライフはこう動いている

泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
 
インストールマニアックス5中間セミナー Windows Azureって何? インストールする前に相手を知ろう!
インストールマニアックス5中間セミナー Windows Azureって何? インストールする前に相手を知ろう!インストールマニアックス5中間セミナー Windows Azureって何? インストールする前に相手を知ろう!
インストールマニアックス5中間セミナー Windows Azureって何? インストールする前に相手を知ろう!
満徳 関
 
AmebaのMongoDB活用事例
AmebaのMongoDB活用事例AmebaのMongoDB活用事例
AmebaのMongoDB活用事例
Akihiro Kuwano
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
SORACOM, INC
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
 
Mashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in FukuokaMashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in Fukuoka
Kazumi Hirose
 
Moot2013 moca ver0.3
Moot2013 moca ver0.3Moot2013 moca ver0.3
Moot2013 moca ver0.3
科 黄
 
Windows azureって何
Windows azureって何Windows azureって何
Windows azureって何
Kana SUZUKI
 
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
Akihiro Kuwano
 
Hatena's Infrastructure from the beginning
Hatena's Infrastructure from the beginningHatena's Infrastructure from the beginning
Hatena's Infrastructure from the beginning
Shinji Tanaka
 

Semelhante a [大図解]ピグライフはこう動いている (20)

ソーシャルゲームログ解析基盤のMongoDB活用事例
ソーシャルゲームログ解析基盤のMongoDB活用事例ソーシャルゲームログ解析基盤のMongoDB活用事例
ソーシャルゲームログ解析基盤のMongoDB活用事例
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
インストールマニアックス5中間セミナー Windows Azureって何? インストールする前に相手を知ろう!
インストールマニアックス5中間セミナー Windows Azureって何? インストールする前に相手を知ろう!インストールマニアックス5中間セミナー Windows Azureって何? インストールする前に相手を知ろう!
インストールマニアックス5中間セミナー Windows Azureって何? インストールする前に相手を知ろう!
 
AmebaのMongoDB活用事例
AmebaのMongoDB活用事例AmebaのMongoDB活用事例
AmebaのMongoDB活用事例
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
 
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
 
Mashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in FukuokaMashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in Fukuoka
 
20121115 オープンソースでハイアベイラビリティ! ~クラスタ管理の設計構築ハウツー&エンジニア思考力~
20121115 オープンソースでハイアベイラビリティ! ~クラスタ管理の設計構築ハウツー&エンジニア思考力~20121115 オープンソースでハイアベイラビリティ! ~クラスタ管理の設計構築ハウツー&エンジニア思考力~
20121115 オープンソースでハイアベイラビリティ! ~クラスタ管理の設計構築ハウツー&エンジニア思考力~
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
 
Nginx
NginxNginx
Nginx
 
Moot2013 moca ver0.3
Moot2013 moca ver0.3Moot2013 moca ver0.3
Moot2013 moca ver0.3
 
Windows azureって何
Windows azureって何Windows azureって何
Windows azureって何
 
JavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjugJavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjug
 
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
 
Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築
 
Hatena's Infrastructure from the beginning
Hatena's Infrastructure from the beginningHatena's Infrastructure from the beginning
Hatena's Infrastructure from the beginning
 
Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話
 
東北クラウド実践カンファレンス2011
東北クラウド実践カンファレンス2011東北クラウド実践カンファレンス2011
東北クラウド実践カンファレンス2011
 

Mais de Akihiro Kuwano

アメーバピグにおける自作サーバ運用それからどうなった
アメーバピグにおける自作サーバ運用それからどうなったアメーバピグにおける自作サーバ運用それからどうなった
アメーバピグにおける自作サーバ運用それからどうなった
Akihiro Kuwano
 
CyberAgentにおけるMongoDB
CyberAgentにおけるMongoDBCyberAgentにおけるMongoDB
CyberAgentにおけるMongoDB
Akihiro Kuwano
 
勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。
勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。
勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。
Akihiro Kuwano
 
MongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキストMongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキスト
Akihiro Kuwano
 
やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)
やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)
やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)
Akihiro Kuwano
 
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
 

Mais de Akihiro Kuwano (20)

今日はMongoDBの話はしない
今日はMongoDBの話はしない今日はMongoDBの話はしない
今日はMongoDBの話はしない
 
銀河レベルのLT(とは)
銀河レベルのLT(とは)銀河レベルのLT(とは)
銀河レベルのLT(とは)
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
AWSのNoSQL入門
AWSのNoSQL入門AWSのNoSQL入門
AWSのNoSQL入門
 
ログ管理のベストプラクティス
ログ管理のベストプラクティスログ管理のベストプラクティス
ログ管理のベストプラクティス
 
ビックデータ最適解とAWSにおける新しい武器
ビックデータ最適解とAWSにおける新しい武器ビックデータ最適解とAWSにおける新しい武器
ビックデータ最適解とAWSにおける新しい武器
 
MongoDBの可能性の話
MongoDBの可能性の話MongoDBの可能性の話
MongoDBの可能性の話
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
 
インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)
 
WiredTigerストレージエンジン楽しい
WiredTigerストレージエンジン楽しいWiredTigerストレージエンジン楽しい
WiredTigerストレージエンジン楽しい
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
 
Chef環境の闇
Chef環境の闇Chef環境の闇
Chef環境の闇
 
アメーバピグにおける自作サーバ運用それからどうなった
アメーバピグにおける自作サーバ運用それからどうなったアメーバピグにおける自作サーバ運用それからどうなった
アメーバピグにおける自作サーバ運用それからどうなった
 
CyberAgentにおけるMongoDB
CyberAgentにおけるMongoDBCyberAgentにおけるMongoDB
CyberAgentにおけるMongoDB
 
後悔しないもんごもんごの使い方 〜サーバ編〜
後悔しないもんごもんごの使い方 〜サーバ編〜後悔しないもんごもんごの使い方 〜サーバ編〜
後悔しないもんごもんごの使い方 〜サーバ編〜
 
勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。
勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。
勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。
 
MongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキストMongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキスト
 
MongoDBのアレをアレする
MongoDBのアレをアレするMongoDBのアレをアレする
MongoDBのアレをアレする
 
やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)
やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)
やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)
 
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
 

[大図解]ピグライフはこう動いている

  • 1. [ 大図解 ] ピグライフはこう動いている 株式会社サイバーエージェント アメーバ事業本部プラットフォームディビジョン システムディベロップメントグループ CA Developers Connect                       桑野 章弘
  • 2.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. アーキテクチャ構成[アメーバピグ] Web+AP サーバ Socket サーバ Storage サーバ DB サーバ KVS サーバ HTTP 独自プロトコル Socket サーバ ユーザ (ブラウザ) FrontEnd BackEnd Flash データ リクエスト / 取得 ・ユーザ情報 ・チャットデータ ・ゲームデータ リクエスト / 取得 必要なデータの取得 ユーザの Flash データの保存など ユーザ / エリア等の状態データ ユーザ / エリア等の状態データ(現在は無)
  • 12. アーキテクチャ構成[ピグライフ] stat サーバ Socket サーバ mongodb サーバ HTTP WebSocket 接続 Node.js サーバ ユーザ (ブラウザ) FrontEnd BackEnd Flash データ -> リクエスト / 取得 ・ユーザ情報 ・チャットデータ -> リクエスト / 取得 必要なデータの取得 ユーザ / エリア等の状態データ
  • 13.
  • 14. リリース前構成 Stat サーバ Node.js サーバ MongoDB Log MongoDB ×6 行動ログの保存 mongos テストオープン時に実装
  • 15. リリース時構成 Stat サーバ Node.js サーバ MongoDB Log MongoDB ×41 行動ログの保存 サーバにも取得 1 シャード追加 大量追加 mongos
  • 16. リリース時構成 Stat サーバ Node.js サーバ MongoDB Log MongoDB ×41 行動ログの保存 サーバにも取得 1 シャード追加 大量追加 mongos ×3
  • 17. 現在時構成 Stat サーバ Node.js サーバ MongoDB Log MongoDB ×41 行動ログの保存 サーバにも取得 3 シャード追加 ( 合計 7 シャード ) 大量追加 mongos ・・・・・ ×3
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. node.js サーバ:旧クラスタ構成 Nap サーバ 各サーバでの通信 リング間での通信 Nap サーバ Nap サーバ Nap サーバ サーバ 1   OK サーバ 2   OK サーバ 3   NG サーバ 4   OK サーバ 1   OK サーバ 2   OK サーバ 3   NG サーバ 4   OK
  • 23. node.js サーバ:現クラスタ構成 Nap サーバ 各サーバの状態は mongodb 側に持つ Nap サーバ Nap サーバ MongoDB 各サーバの死活監視は相互に行う サーバ 1   OK サーバ 2   OK サーバ 3   NG サーバ 4   OK
  • 24.
  • 25.
  • 26. 静的配信サーバ:着せ替えサムネイル stat サーバ stat サーバ stat サーバ WebDAV でアップロード heartbeat
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.