Download - 18 a-6 ameba pigg backend practice 20110217

Transcript

Ameba Ameba Ameba Ameba Ameba Ameba Ameba Ameba PiggPiggPiggPiggPiggPiggPiggPigg Backend PracticeBackend PracticeBackend PracticeBackend PracticeBackend PracticeBackend PracticeBackend PracticeBackend Practice

株式会社株式会社株式会社株式会社サイバーエージェントサイバーエージェントサイバーエージェントサイバーエージェントアメーバアメーバアメーバアメーバ事業本部事業本部事業本部事業本部プラットフォームディビジョンプラットフォームディビジョンプラットフォームディビジョンプラットフォームディビジョン

システムディベロップメントグループシステムディベロップメントグループシステムディベロップメントグループシステムディベロップメントグループ

CA Developers ConnectCA Developers ConnectCA Developers ConnectCA Developers Connect

桑野桑野桑野桑野 章弘章弘章弘章弘

2222

� 桑野章弘桑野章弘桑野章弘桑野章弘

�サイバーエージェントサイバーエージェントサイバーエージェントサイバーエージェント�Ameba Ameba Ameba Ameba をををを運営運営運営運営していますしていますしていますしています。。。。

- BlogBlogBlogBlogをををを中心中心中心中心としてとしてとしてとして様様様様々々々々ななななサービスサービスサービスサービスがありますがありますがありますがあります。。。。

�アメーバピグアメーバピグアメーバピグアメーバピグのののの運用運用運用運用////構築構築構築構築をををを担当担当担当担当

� TwitterTwitterTwitterTwitter� http://http://http://http://twitter.com/kuwa_twtwitter.com/kuwa_twtwitter.com/kuwa_twtwitter.com/kuwa_tw

� BlogBlogBlogBlog� http://http://http://http://d.hatena.ne.jp/akuwanod.hatena.ne.jp/akuwanod.hatena.ne.jp/akuwanod.hatena.ne.jp/akuwano////

�著書著書著書著書////活動活動活動活動� 「「「「MySQLMySQLMySQLMySQLによるによるによるによるタフタフタフタフななななサイトサイトサイトサイトのののの作作作作りりりり方方方方」」」」

�勉強会勉強会勉強会勉強会((((hbstudyhbstudyhbstudyhbstudy, , , , qpstudyqpstudyqpstudyqpstudyほかほかほかほか))))などでのなどでのなどでのなどでの発表発表発表発表などなどなどなど

自己紹介自己紹介

3333

自己紹介自己紹介

� このこのこのこの人人人人がががが来来来来るはずだったんですがるはずだったんですがるはずだったんですがるはずだったんですが。。。。

4444

AmebaAmeba

5555

アジェンダアジェンダ

� アメーバピグアメーバピグアメーバピグアメーバピグってってってって????

� アメーバピグアメーバピグアメーバピグアメーバピグののののアーキテクチャアーキテクチャアーキテクチャアーキテクチャ

�全体構成全体構成全体構成全体構成

� アメーバピグアメーバピグアメーバピグアメーバピグののののデータストアデータストアデータストアデータストア

�データストアデータストアデータストアデータストアのののの構成構成構成構成

�データストアデータストアデータストアデータストアののののプラクティスプラクティスプラクティスプラクティス

6666

アメーバピグって?アメーバピグって?

� アメーバピグアメーバピグアメーバピグアメーバピグ

� 2D2D2D2Dアバターサービスアバターサービスアバターサービスアバターサービス�着着着着せせせせ替替替替ええええ

�ペットペットペットペット

�ゲームゲームゲームゲーム((((釣釣釣釣りりりり、、、、カジノカジノカジノカジノなどなどなどなど))))

�動画動画動画動画

7777

アメーバピグって?アメーバピグって?

8888

アメーバピグって?アメーバピグって?

� アメーバピグアメーバピグアメーバピグアメーバピグ

� 2009/02/192009/02/192009/02/192009/02/19オープンオープンオープンオープン

�会員数会員数会員数会員数600600600600万人万人万人万人((((2011/022011/022011/022011/02現在現在現在現在))))

9999

アメーバピグのアーキテクチャ:全体構成アメーバピグのアーキテクチャ:全体構成

� 通常通常通常通常ののののWebWebWebWebサービスサービスサービスサービスとはとはとはとは大大大大きくきくきくきく異異異異なっていますなっていますなっていますなっています

�通常通常通常通常ののののWebWebWebWebアプリケーションアプリケーションアプリケーションアプリケーション�Web AP DBWeb AP DBWeb AP DBWeb AP DBのののの3333層構造層構造層構造層構造

�アメーバピグアメーバピグアメーバピグアメーバピグ�Adobe FlashAdobe FlashAdobe FlashAdobe Flashをををを使用使用使用使用したしたしたしたリアルタイムリアルタイムリアルタイムリアルタイム処理処理処理処理

�FlashFlashFlashFlashからからからから直接直接直接直接TCPTCPTCPTCP通信通信通信通信をををを行行行行うううう事事事事によってによってによってによって実現実現実現実現していますしていますしていますしています

10101010

アメーバピグのアーキテクチャ:全体構成アメーバピグのアーキテクチャ:全体構成

Web+APWeb+APWeb+APWeb+APサーバサーバサーバサーバ SocketSocketSocketSocketサーバサーバサーバサーバ StorageStorageStorageStorageサーバサーバサーバサーバ

DBDBDBDBサーバサーバサーバサーバ

KVSKVSKVSKVSサーバサーバサーバサーバ

HTTPHTTPHTTPHTTP

独自独自独自独自プロトコルプロトコルプロトコルプロトコル

SocketSocketSocketSocketサーバサーバサーバサーバ

ユーザユーザユーザユーザ((((ブラウザブラウザブラウザブラウザ))))

FrontEndFrontEndFrontEndFrontEndBackEndBackEndBackEndBackEnd

FlashFlashFlashFlashデータデータデータデータリクエストリクエストリクエストリクエスト////取得取得取得取得

・・・・ユーザユーザユーザユーザ情報情報情報情報・・・・チャットデータチャットデータチャットデータチャットデータ・・・・ゲームデータゲームデータゲームデータゲームデータリクエストリクエストリクエストリクエスト////取得取得取得取得

必要必要必要必要ななななデータデータデータデータのののの取得取得取得取得

ユーザユーザユーザユーザののののFlashFlashFlashFlashデータデータデータデータのののの

保存保存保存保存などなどなどなど

ユーザユーザユーザユーザ////エリアエリアエリアエリア等等等等のののの状態状態状態状態デーデーデーデー

タタタタ

ユーザユーザユーザユーザ////エリアエリアエリアエリア等等等等のののの状態状態状態状態デーデーデーデータタタタ((((現在現在現在現在はははは無無無無))))

11111111

アメーバピグのアーキテクチャ:全体構成アメーバピグのアーキテクチャ:全体構成

Web+APWeb+APWeb+APWeb+APサーバサーバサーバサーバ SocketSocketSocketSocketサーバサーバサーバサーバ StorageStorageStorageStorageサーバサーバサーバサーバ

DBDBDBDBサーバサーバサーバサーバ

KVSKVSKVSKVSサーバサーバサーバサーバ

HTTPHTTPHTTPHTTP

独自独自独自独自プロトコルプロトコルプロトコルプロトコル

SocketSocketSocketSocketサーバサーバサーバサーバ

ユーザユーザユーザユーザ((((ブラウザブラウザブラウザブラウザ))))

FrontEndFrontEndFrontEndFrontEndBackEndBackEndBackEndBackEnd

FlashFlashFlashFlashデータデータデータデータリクエストリクエストリクエストリクエスト////取得取得取得取得

・・・・ユーザユーザユーザユーザ情報情報情報情報・・・・チャットデータチャットデータチャットデータチャットデータ・・・・ゲームデータゲームデータゲームデータゲームデータリクエストリクエストリクエストリクエスト////取得取得取得取得

必要必要必要必要ななななデータデータデータデータのののの取得取得取得取得

ユーザユーザユーザユーザののののFlashFlashFlashFlashデータデータデータデータのののの

保存保存保存保存などなどなどなど

ユーザユーザユーザユーザ////エリアエリアエリアエリア等等等等のののの状態状態状態状態デーデーデーデー

タタタタ

ユーザユーザユーザユーザ////エリアエリアエリアエリア等等等等のののの状態状態状態状態デーデーデーデータタタタ((((現在現在現在現在はははは無無無無))))

このあたりの話をしていきます

12121212

アメーバピグのデータストアアメーバピグのデータストア

� 運用運用運用運用するうちにするうちにするうちにするうちに一番大一番大一番大一番大きくきくきくきく変変変変わったわったわったわった部分部分部分部分

� サービスサービスサービスサービス当初当初当初当初はははは自作自作自作自作KVSKVSKVSKVSをををを使用使用使用使用////運用運用運用運用

� 現在現在現在現在ははははRDBMS(MySQLRDBMS(MySQLRDBMS(MySQLRDBMS(MySQL))))のみでのみでのみでのみで運用運用運用運用

�前面前面前面前面ににににキャッシュキャッシュキャッシュキャッシュありありありあり

13131313

アメーバピグのデータストア:アメーバピグのデータストア:KVSKVS構成構成

Web+APWeb+APWeb+APWeb+APサーバサーバサーバサーバ

DBDBDBDBサーバサーバサーバサーバ

KVSKVSKVSKVSサーバサーバサーバサーバ

更新更新更新更新

参照参照参照参照

SocketSocketSocketSocketサーバサーバサーバサーバ

DBDBDBDBへのへのへのへの更新更新更新更新確認後確認後確認後確認後ににににKVSKVSKVSKVS

更新更新更新更新

オンメモリオンメモリオンメモリオンメモリ処処処処理理理理

14141414

アメーバピグのデータストア:アメーバピグのデータストア:RDBMSRDBMS構成構成

DBDBDBDBサーバサーバサーバサーバ

KVSKVSKVSKVSサーバサーバサーバサーバ

更新更新更新更新

参照参照参照参照Web+APWeb+APWeb+APWeb+APサーバサーバサーバサーバ

SocketSocketSocketSocketサーバサーバサーバサーバ

更新更新更新更新、、、、参照共参照共参照共参照共ににににDBDBDBDBサーバサーバサーバサーバででででのののの処理処理処理処理にににに変更変更変更変更

FusionIOFusionIOFusionIOFusionIO搭載搭載搭載搭載したしたしたしたサーバサーバサーバサーバ

KVSKVSKVSKVSサーバサーバサーバサーバはははは一時撤廃一時撤廃一時撤廃一時撤廃

15151515

データストアのプラクティスデータストアのプラクティス

� バックエンドバックエンドバックエンドバックエンドにににに依存依存依存依存しないしないしないしないモデルモデルモデルモデル

� 正確正確正確正確なななな負荷負荷負荷負荷テストテストテストテスト!!!!差分差分差分差分テストテストテストテスト!!!!

� プロダクトプロダクトプロダクトプロダクトのののの選定基準選定基準選定基準選定基準

16161616

バックエンドに依存しないモデルバックエンドに依存しないモデル

� サービスサービスサービスサービスのののの開始開始開始開始ははははスモールスタートスモールスタートスモールスタートスモールスタート

�最初最初最初最初はははは流行流行流行流行るかるかるかるか分分分分からないからないからないからない

�将来的将来的将来的将来的なななな事事事事をををを考考考考えるとえるとえるとえるとスケールアウトスケールアウトスケールアウトスケールアウトのののの仕組仕組仕組仕組みはみはみはみは欲欲欲欲しいしいしいしい�とととと、、、、思思思思ってってってって作作作作ってもってもってもっても負荷負荷負荷負荷がいきなりがいきなりがいきなりがいきなり10101010倍倍倍倍になってもになってもになってもになっても上手上手上手上手くくくく動動動動くかはわくかはわくかはわくかはわ

からないからないからないからない!!!!

�同同同同じじじじ物物物物をををを使使使使っていくっていくっていくっていく訳訳訳訳にはにはにはには行行行行かないこともあるかないこともあるかないこともあるかないこともある

17171717

バックエンドに依存しないモデルバックエンドに依存しないモデル

� アメーバピグアメーバピグアメーバピグアメーバピグのののの場合場合場合場合

�前述前述前述前述したしたしたした自作自作自作自作KVSKVSKVSKVS「「「「NDINDINDINDI」」」」

�オープンオープンオープンオープン当初当初当初当初((((2009/022009/022009/022009/02))))はははは機能面機能面機能面機能面でででで大大大大きなきなきなきなメリットメリットメリットメリットがあったがあったがあったがあった�スケールアウトスケールアウトスケールアウトスケールアウトのののの仕組仕組仕組仕組みみみみ((((AutoBalancingAutoBalancingAutoBalancingAutoBalancing))))

�キーキーキーキーののののソートソートソートソートがががが保証保証保証保証されるされるされるされる====KVSKVSKVSKVSでありながらでありながらでありながらでありながらレンジレンジレンジレンジ取得取得取得取得がががが可能可能可能可能

�MySQLMySQLMySQLMySQL側側側側にににに保証保証保証保証されたされたされたされたデータデータデータデータがががが存在存在存在存在((((MySQLMySQLMySQLMySQLからのからのからのからのデータデータデータデータのののの再構再構再構再構築機能築機能築機能築機能))))これによるこれによるこれによるこれによる運用側運用側運用側運用側のののの安心安心安心安心

� 2010/072010/072010/072010/07にににに入入入入りりりりデータデータデータデータ増大増大増大増大によるによるによるによるDBDBDBDB---->KVS>KVS>KVS>KVS再構築時間再構築時間再構築時間再構築時間もももも長長長長期化期化期化期化�遅遅遅遅いいいい時時時時にはにはにはには数時間数時間数時間数時間

やめましょうやめましょうやめましょうやめましょう!!!!

18181818

バックエンドに依存しないモデルバックエンドに依存しないモデル

� IndexPersisterIndexPersisterIndexPersisterIndexPersister

�アメーバピグアメーバピグアメーバピグアメーバピグののののデータデータデータデータ取得部分取得部分取得部分取得部分のののの仕組仕組仕組仕組みみみみ

�データストアデータストアデータストアデータストア部分部分部分部分がががが抽象化抽象化抽象化抽象化されているためされているためされているためされているため労力労力労力労力をかけずにをかけずにをかけずにをかけずに切替切替切替切替がががが可能可能可能可能((((Get,Put,RengeGet,Put,RengeGet,Put,RengeGet,Put,Renge取得取得取得取得などもなどもなどもなども変変変変わらずわらずわらずわらず行行行行えるえるえるえる))))

�実際実際実際実際にににに2222ヶヶヶヶ月程度月程度月程度月程度でででで、、、、分散分散分散分散KVSKVSKVSKVSをををを全全全全ててててMySQLMySQLMySQLMySQLのみののみののみののみのアクセアクセアクセアクセススススへへへへ置置置置きききき換換換換えるえるえるえる事事事事ができたができたができたができた

19191919

IndexPersisterIndexPersisterIndexPersisterIndexPersister

アメーバピグのデータストア:アメーバピグのデータストア: IndexPersisterIndexPersister

Web+APWeb+APWeb+APWeb+APサーバサーバサーバサーバ

MySQLMySQLMySQLMySQL

更新更新更新更新

参照参照参照参照

SocketSocketSocketSocketサーバサーバサーバサーバ

NDINDINDINDI

mongoDBmongoDBmongoDBmongoDB

このこのこのこの部分部分部分部分ははははアクセアクセアクセアクセスススス側側側側からはからはからはからは意識意識意識意識しししし

ていないていないていないていない

データストアデータストアデータストアデータストア部分部分部分部分のののの選択選択選択選択はははは自由自由自由自由

20202020

バックエンドに依存しないモデルバックエンドに依存しないモデル

� いざといざといざといざと言言言言うときにすぐにうときにすぐにうときにすぐにうときにすぐに他他他他ののののプロダクトプロダクトプロダクトプロダクトにににに移行移行移行移行できるよできるよできるよできるようにしておくうにしておくうにしておくうにしておく

でもそんなこといってもでもそんなこといってもでもそんなこといってもでもそんなこといっても怖怖怖怖いじゃいじゃいじゃいじゃんんんん

21212121

正確な負荷テスト!差分テスト!正確な負荷テスト!差分テスト!

� テストデータテストデータテストデータテストデータでいくらやってもでいくらやってもでいくらやってもでいくらやっても不安不安不安不安はぬぐえないはぬぐえないはぬぐえないはぬぐえない、、、、、、、、、、、、

�正確正確正確正確なななな負荷負荷負荷負荷テストテストテストテストがががが選定選定選定選定のののの後押後押後押後押しをするしをするしをするしをする

� ピグピグピグピグのののの負荷負荷負荷負荷テストテストテストテスト用用用用フレームワークフレームワークフレームワークフレームワークをををを作成作成作成作成

�実実実実サーバサーバサーバサーバででででデータデータデータデータ操作操作操作操作ののののログログログログをををを取得取得取得取得

�本番本番本番本番にににに限限限限りなくりなくりなくりなく近近近近いいいい環境環境環境環境をををを作成作成作成作成ししししログログログログをををを完全完全完全完全トレーストレーストレーストレース実行実行実行実行

22222222

アメーバピグのデータストア:アメーバピグのデータストア: ログ取得ログ取得

テストテストテストテスト環境環境環境環境

SocketSocketSocketSocket

更新更新更新更新////参照参照参照参照SocketSocketSocketSocketサーバサーバサーバサーバ

本番環境本番環境本番環境本番環境

操作操作操作操作ログログログログをををを取取取取得得得得

操作操作操作操作ログログログログをををを元元元元にににに負荷負荷負荷負荷テストテストテストテスト

をををを実行実行実行実行

23232323

正確な負荷テスト!差分テスト!正確な負荷テスト!差分テスト!

� 置換前置換前置換前置換前にはにはにはには本番本番本番本番でのでのでのでの差分差分差分差分テストテストテストテストをををを実施実施実施実施

� KVS & RDBMSKVS & RDBMSKVS & RDBMSKVS & RDBMSのののの両者両者両者両者にににに書書書書きききき込込込込みをみをみをみを行行行行いいいい差分差分差分差分ををををチェックチェックチェックチェック�確認確認確認確認<=><=><=><=>修正修正修正修正ののののフェイズフェイズフェイズフェイズをををを2222週間以上毎日繰週間以上毎日繰週間以上毎日繰週間以上毎日繰りりりり返返返返しししし

�チェックチェックチェックチェック方法方法方法方法もももも複数実施複数実施複数実施複数実施しましたしましたしましたしました�書書書書きききき込込込込みみみみ時時時時ののののデータチェックデータチェックデータチェックデータチェック((((両者両者両者両者にににに書書書書きききき込込込込んでいるんでいるんでいるんでいるデータデータデータデータがががが同同同同じじじじ

かどうかかどうかかどうかかどうか))))

�書書書書きききき込込込込みみみみ後後後後ののののデータチェックデータチェックデータチェックデータチェック((((新旧新旧新旧新旧DBDBDBDBののののデータデータデータデータ比較比較比較比較))))

�読読読読みみみみ込込込込みみみみ時時時時ののののデータチェックデータチェックデータチェックデータチェック((((負荷考慮負荷考慮負荷考慮負荷考慮してしてしてしてサンプルサンプルサンプルサンプル抽出抽出抽出抽出1/10001/10001/10001/1000))))

ここまでやってここまでやってここまでやってここまでやって安心安心安心安心できましたできましたできましたできました

24242424

アメーバピグのデータストア:差分テストアメーバピグのデータストア:差分テスト

DBDBDBDBサーバサーバサーバサーバ

KVSKVSKVSKVSサーバサーバサーバサーバ

更新更新更新更新

参照参照参照参照

SocketSocketSocketSocketサーバサーバサーバサーバ

DBDBDBDBサーバサーバサーバサーバ

KVSKVSKVSKVSサーバサーバサーバサーバ

両者両者両者両者のののの取得取得取得取得データデータデータデータがががが正正正正しいかしいかしいかしいかチェックチェックチェックチェック((((動的動的動的動的チェックチェックチェックチェック::::1/10001/10001/10001/1000ランダムランダムランダムランダム))))

両者両者両者両者ののののデータデータデータデータがががが正正正正しいかのしいかのしいかのしいかのチェックチェックチェックチェック((((静的静的静的静的チェックチェックチェックチェック))))

両者両者両者両者ののののデータデータデータデータがががが正正正正しいかのしいかのしいかのしいかのチェックチェックチェックチェック((((動的動的動的動的チェックチェックチェックチェック))))

25252525

プロダクトの選定基準プロダクトの選定基準

� プロダクトプロダクトプロダクトプロダクトのののの選定基準選定基準選定基準選定基準

�今回今回今回今回ははははMySQL+FusionIOMySQL+FusionIOMySQL+FusionIOMySQL+FusionIOというというというという構成構成構成構成をとっていますをとっていますをとっていますをとっています

�分散分散分散分散KVSKVSKVSKVSでやっていたでやっていたでやっていたでやっていた頃頃頃頃にににに比比比比べるとべるとべるとべるとコストコストコストコストとしてはとしてはとしてはとしては掛掛掛掛かってかってかってかっていますいますいますいます

�今回今回今回今回でもでもでもでも、、、、CassandraCassandraCassandraCassandra等等等等のののの分散分散分散分散KVSKVSKVSKVSをををを選択選択選択選択するするするする可能性可能性可能性可能性ももももあったはずですがあったはずですがあったはずですがあったはずですが、、、、選選選選んでいませんんでいませんんでいませんんでいません�バックエンドバックエンドバックエンドバックエンドはははは何何何何でもいいんじゃでもいいんじゃでもいいんじゃでもいいんじゃねねねねーーーーのかのかのかのかフフフブ゙゙゙ーフーフーフーブ゙゙゙ーーーー

決決決決めてはめてはめてはめては実現性実現性実現性実現性とととと理想形理想形理想形理想形ですですですです

26262626

プロダクトの選定基準プロダクトの選定基準

� 事業事業事業事業としてとしてとしてとして、、、、サービスサービスサービスサービス視点視点視点視点をををを重視重視重視重視するするするする

�理想的理想的理想的理想的ななななプロダクトプロダクトプロダクトプロダクトかどうかかどうかかどうかかどうか

�実現性実現性実現性実現性、、、、実現工数実現工数実現工数実現工数がががが高高高高いかどうかいかどうかいかどうかいかどうか

27272727

プロダクトの選定基準プロダクトの選定基準

� プロダクトプロダクトプロダクトプロダクトのののの選定基準選定基準選定基準選定基準

問題外問題外問題外問題外△△△△理想形理想形理想形理想形::::遠遠遠遠

××××○○○○理想形理想形理想形理想形::::近近近近

実現性実現性実現性実現性::::低低低低実現性実現性実現性実現性::::高高高高

例例例例ええええ泥臭泥臭泥臭泥臭いいいい方法方法方法方法でもそれがでもそれがでもそれがでもそれが解決解決解決解決にににに一番近一番近一番近一番近いのであればいのであればいのであればいのであれば

それをそれをそれをそれを選択選択選択選択するするするする事事事事がががが事業事業事業事業へのへのへのへの貢献貢献貢献貢献

28282828

プロダクトの選定基準プロダクトの選定基準

理想理想理想理想とのとのとのとの乖離乖離乖離乖離

理想理想理想理想とのとのとのとの乖離乖離乖離乖離

事業事業事業事業としてとしてとしてとして必要必要必要必要なななな仕様仕様仕様仕様ののののラインラインラインライン

ソリューションソリューションソリューションソリューションAAAA ソリューションソリューションソリューションソリューションBBBB

実現実現実現実現までのまでのまでのまでの工数工数工数工数

実現実現実現実現までのまでのまでのまでの工数工数工数工数

この場合ソリューションBの方が事業貢献できている

29292929

プロダクトの選定基準プロダクトの選定基準

� データストアデータストアデータストアデータストアののののプロダクトプロダクトプロダクトプロダクト選定基準選定基準選定基準選定基準

�今今今今のののの形形形形ははははデータストアデータストアデータストアデータストアとしてのとしてのとしてのとしての理想形理想形理想形理想形とはとはとはとは思思思思っていないっていないっていないっていない

�MySQLMySQLMySQLMySQLというというというというプロダクトプロダクトプロダクトプロダクトはははは他他他他とととと比比比比べてべてべてべて格段格段格段格段にににに安定安定安定安定していたしていたしていたしていた

�適材適所適材適所適材適所適材適所のののの考考考考ええええ方方方方�安心安心安心安心できないできないできないできないプロダクトプロダクトプロダクトプロダクトはははは部分的部分的部分的部分的からからからから適用適用適用適用するするするする

� FusionIOFusionIOFusionIOFusionIOのののの選定基準選定基準選定基準選定基準

�使使使使わなくてもわなくてもわなくてもわなくても出来出来出来出来たたたた

�ただただただただ使使使使わなければわなければわなければわなければサーバサーバサーバサーバ台数台数台数台数がががが膨膨膨膨れれれれ上上上上がっていたがっていたがっていたがっていた�運用運用運用運用コストコストコストコスト改善改善改善改善はははは見見見見えないけどえないけどえないけどえないけど重要重要重要重要

�実際実際実際実際ににににテストテストテストテストしてのしてのしてのしての信頼性信頼性信頼性信頼性のののの高高高高ささささ

30303030

まとめまとめ

� 柔軟柔軟柔軟柔軟ななななプロダクトプロダクトプロダクトプロダクトにににに対応対応対応対応するためのするためのするためのするための仕組仕組仕組仕組みをみをみをみを用意用意用意用意すすすすることでることでることでることで事業事業事業事業、、、、システムシステムシステムシステムのののの未来未来未来未来がががが開開開開けるけるけるける

� 最後最後最後最後までまでまでまで確認確認確認確認したそのもうしたそのもうしたそのもうしたそのもう一歩先一歩先一歩先一歩先をををを確認確認確認確認するするするする事事事事がががが安安安安定定定定したしたしたしたシステムシステムシステムシステム改善改善改善改善にににに必要必要必要必要

� 事業貢献事業貢献事業貢献事業貢献できるできるできるできる中中中中でのでのでのでの一番理想的一番理想的一番理想的一番理想的ななななソリューションソリューションソリューションソリューションのののの選択選択選択選択をををを行行行行うううう

31313131

この後はこの後は

� 弊社根本弊社根本弊社根本弊社根本へへへへ

� アメーバアメーバアメーバアメーバののののストレージストレージストレージストレージにににに関関関関するするするするプラクティスプラクティスプラクティスプラクティスをををを語語語語ってもってもってもってもらいますらいますらいますらいます

さあどさあどさあどさあどーーーーぞぞぞぞ!!!!

Ameba Ameba PiggPigg Best PracticeBest Practice~画像ストレージ構築・運用編~~画像ストレージ構築・運用編~

株式会社株式会社 サイバーエージェントサイバーエージェントアメーバ事業本部プラットフォームアメーバ事業本部プラットフォームDivDiv

システムディベロップメントグループシステムディベロップメントグループ根本英明根本英明

33333333

� 根本 英明� 2008.4入社(中途)� 担当システム�画像ストレージシステム�Amebaピグ/ブログ/MBゲーム

� HW周りが多少得意

自己紹介自己紹介

34343434

こんなところで使われているストレージです・・・(ピグとの関連は、ちょっと薄いです)

アメーバピグと画像ストレージアメーバピグと画像ストレージ

35353535

アメーバピグと画像ストレージアメーバピグと画像ストレージ

36363636

メインはブログのユーザ画像ストレージです

アメーバピグと画像ストレージアメーバピグと画像ストレージ

37373737

アメーバピグと画像ストレージアメーバピグと画像ストレージ

38383838

� 2008年10月リリース� 当初は鬼の不安定さ!!� 障害件数多数� データロストもしましたm(__)m� 過去最も夜中に起こされた� 過去最もDC対応をしたシステム

画像画像ストレージストレージシステム紹介システム紹介

39393939

とっても印象の悪いシステムです

40404040

�なぜリリースしたか�当時のストレージ容量 >70%だった

�HW選定~検証まで2カ月しかとれず・・・

�可能な限りの検証を実施�ご迷惑をおかけして大変申し訳ありません

画像ストレージシステム紹介画像ストレージシステム紹介

41414141

が、

42424242

苦節2年安定化させることが

できました

43434343

得られた「Practice」を紹介します

44444444

どのくらい捌いてますか?どのくらい捌いてますか?

�TrafficTrafficTrafficTraffic

�???????????? GbpsGbpsGbpsGbps

�投稿容量投稿容量投稿容量投稿容量

�約約約約???????????? GB/dayGB/dayGB/dayGB/day

�アクセスアクセスアクセスアクセス数数数数

�約約約約????????????億億億億/day/day/day/day((((ユーザユーザユーザユーザ画像画像画像画像))))

45454545

どのくらい捌いてますか?どのくらい捌いてますか?

�TrafficTrafficTrafficTraffic

�3 3 3 3 GbpsGbpsGbpsGbps弱弱弱弱

�投稿容量投稿容量投稿容量投稿容量

�約約約約120 GB/day120 GB/day120 GB/day120 GB/day

�アクセスアクセスアクセスアクセス数数数数

�約約約約3333億億億億~~~~4444億億億億/day/day/day/day((((ユーザユーザユーザユーザ画像画像画像画像))))

46464646

Total user image uploaded per day

0

20

40

60

80

100

120

140

2008/9/1

2008/10/1

2008/11/1

2008/12/1

2009/1/1

2009/2/1

2009/3/1

2009/4/1

2009/5/1

2009/6/1

2009/7/1

2009/8/1

2009/9/1

2009/10/1

2009/11/1

2009/12/1

2010/1/1

2010/2/1

2010/3/1

2010/4/1

2010/5/1

2010/6/1

2010/7/1

2010/8/1

2010/9/1

2010/10/1

2010/11/1

2010/12/1

2011/1/1

2011/2/1

2008/10 2009/3

Siz

e [

GB

]

2009/12

2011/1

投稿容量の成長投稿容量の成長

47474747

�コンポーネントコンポーネントコンポーネントコンポーネントをををを列挙列挙列挙列挙するするするする�怪怪怪怪しいしいしいしい部品部品部品部品はははは交換交換交換交換するするするする!!!!�思思思思いいいい切切切切るるるる!!!!!!!!�複数対策同時進行複数対策同時進行複数対策同時進行複数対策同時進行�データデータデータデータのののの流流流流れをれをれをれを考考考考えるえるえるえる�物物物物をよくをよくをよくをよく見見見見るるるる!!!!!!!!!!!!

ストレージ構築の実践ストレージ構築の実践PracticePractice

48484848

ストレージ構成ストレージ構成

�Server�RAID Controller�Mini-SAS cable�Enclosure�HDD(SATA)�1TB x 8(RAID6)

49494949

ストレージ構成ストレージ構成

�Server�RAID Controller�Mini-SAS cable�Enclosure�HDD(SATA)�1TB x 8(RAID6)

この構成の至るところ(全部)

に不安定要因が・・・

50505050

障害内容障害内容

�Server – RAID間の通信断�からのFS破壊�によるデータロスト

�突然HDDを認識しなくなる�障害。あわわ。

51515151

改善内容改善内容

安定化まで、、、

�サーバ改善�RAIDカード改善�mini-SASケーブル改善�Enclosure改善�HDD改善

52525252

改善内容改善内容

安定化まで、、、

�サーバ改善�RAIDカード改善�mini-SASケーブル改善�Enclosure改善�HDD改善

53535353

サーバサーバ改善改善

�リリース当初�DELL PE R200を利用(注)DELL推奨構成での利用ではありません!!!

54545454

サーバサーバ改善改善

�リリース当初�DELL PE R200を利用(注)DELL推奨構成での利用ではありません!!!

障害超超超超多発

55555555

全コンポーネントを列挙・調査

サーバ改善サーバ改善

56565656

全コンポーネントを列挙・調査

サーバ改善サーバ改善

RAID Controller定格温度:55℃

57575757

全コンポーネントを列挙・調査

サーバ改善サーバ改善

RAID Controller定格温度:55℃動作環境:7X℃

58585858

DELL R200温度:7X℃

サーバ改善サーバ改善

59595959

DELL R300

温度:5X℃

DELL R200温度:7X℃

サーバ改善サーバ改善

60606060

DELL R300

温度:5X℃

DELL R200温度:7X℃

サーバ改善サーバ改善

コンポーネントは列挙する!

61616161

諸々の対策を打つも、

その後・・・その後・・・

�突然HDDを認識しなくなる�障害。あわわ。

の完全解決に至らず、最後の対策を・・・

62626262

HDD全入替

最後は、最後は、

1台のストレージあたり、1TB × 8台

が、16セット = 144台入替

63636363

しかも、以前某A社のリコール級問題で、全台リプレイス後・・・

64646464

ちょーやりたくない・・・・

と思いつつリプレイス

65656565

そして・・・・そして・・・・

66666666

安定!!!!安定!!!!

某社製某社製某社製某社製某社製某社製某社製某社製

67676767

安定!!!!安定!!!!

某社製某社製某社製某社製某社製某社製某社製某社製

怪しい部品は交換する!思い切る!!

68686868

苦節2年弱安定するストレージを構築することができた

69696969

苦労した点苦労した点

�安定化するまでのみちのり�沢山対策(効果なしも含め)• RAIDカード交換• FW/Driver update• Enclosure交換• Cable交換

�動作確認、難しいんです

70707070

苦労した点苦労した点

�安定化するまでのみちのり�沢山対策(効果なしも含め)�RAIDカード交換�FW/Driver update�Enclosure交換�Cable交換

�動作確認、難しいんです

複数対策同時進行

71717171

�コンポーネントコンポーネントコンポーネントコンポーネントをををを列挙列挙列挙列挙するするするする�怪怪怪怪しいしいしいしい部品部品部品部品はははは交換交換交換交換するするするする!!!!�思思思思いいいい切切切切るるるる!!!!!!!!�複数対策同時進行複数対策同時進行複数対策同時進行複数対策同時進行�データデータデータデータのののの流流流流れをれをれをれを考考考考えるえるえるえる�物物物物をよくをよくをよくをよく見見見見るるるる!!!!!!!!!!!!

ストレージ構築の実践ストレージ構築の実践PracticePractice

72727272

おしまいおしまいおしまいおしまい

73737373

エンジニア募集中!エンジニア募集中!

� スマートフォンアプリエンジニアスマートフォンアプリエンジニアスマートフォンアプリエンジニアスマートフォンアプリエンジニア

� システムエンジニアシステムエンジニアシステムエンジニアシステムエンジニア

((((AmebaAmebaAmebaAmeba、、、、AmebaPiggAmebaPiggAmebaPiggAmebaPigg、、、、モバイルゲームモバイルゲームモバイルゲームモバイルゲーム))))

� インフラエンジニアインフラエンジニアインフラエンジニアインフラエンジニア((((ネットワークネットワークネットワークネットワーク、、、、プラットフォームプラットフォームプラットフォームプラットフォーム))))

� データベースエンジニアデータベースエンジニアデータベースエンジニアデータベースエンジニア

� R&DR&DR&DR&Dエンジニアエンジニアエンジニアエンジニア

� サーチエンジンディベロッパーサーチエンジンディベロッパーサーチエンジンディベロッパーサーチエンジンディベロッパー

� 社内社内社内社内システムエンジニアシステムエンジニアシステムエンジニアシステムエンジニア

募集要項詳細募集要項詳細募集要項詳細募集要項詳細はははは弊社弊社弊社弊社ののののHPHPHPHPをごをごをごをご確認確認確認確認くださいくださいくださいください。。。。

https://rechttps://rechttps://rechttps://rec----log.jp/site/jobLst.aspx?company_id=5776log.jp/site/jobLst.aspx?company_id=5776log.jp/site/jobLst.aspx?company_id=5776log.jp/site/jobLst.aspx?company_id=5776

※※※※上記以外上記以外上記以外上記以外のののの職種職種職種職種もももも募集募集募集募集しておりますしておりますしておりますしております!!!!

74747474

Ameba Water Ameba Water とと エンジニアの紹介冊子を配布中!!エンジニアの紹介冊子を配布中!!

75757575

質疑応答質疑応答質疑応答質疑応答