SlideShare a Scribd company logo
AWS
クックパッドでの
              運用事例
COOKPAD Inc. / Satoshi Takada
About me

• 高田悟史 (@satoship)
• 前職ではJavaプログラマ
• 2008/04 クックパッド株式会社 入社
 • フィーチャーフォン用サイト開発
 • インフラエンジニアデビュー
COOKPAD
COOKPAD
- Mission
「毎日の料理を楽しみにすることで
   心からの笑顔をふやす」
インフラグループも同様です
毎日の料理を楽しみにするために



「すべてのサービスを常に快適に
  使える状態を保ち続ける」
「常に快適に」

• 使いたいときに使える
 • 稼働率を上げる
• 快適に使える
 • サーバサイド応答速度 200ms
「保ち続ける」



• ボトルネックはすぐにつぶす
• スケーラビリティの確保
COOKPAD
- Access
昼食前と夕食前




0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
バレンタインデー




4   5   6   7   8   9   10   11   12   1   2   3   4
バレンタインデイ前日は
年間でもっともアクセス数が
多い日
5日前 !
2012/02/13(月)

• 今までで最大級のアクセス数
• 僕が見た中で一番安定していた
 • 話題にもあがらなかった
• 当日もAppを増やしてた
COOKPADでは
AWSをどう
使っているか?
今日のおはなし
AWSへのみちのり

• 2010/05 検証を開始
• 2011/03 本格的に移行準備開始
• 2011/08 メインサービス移行
• 2011/10 完全移行完了
AWS クックパッドの運用事例
サーバ構成
Reverse Proxy   Apache




    App         Nginx + Unicorn




  Slave DB      MySQL
[PR]

• ウェブオペレーション by @hmsk
 • 18章 日本の料理のインフラ
• WEB+DB PRESS vol.66 by @mirakui
 • 200ミリ秒を切るインフラ
APIを活用して
サーバ設定の
自動化とバージョン管理
• git
• Puppet
• Capistrano
サーバ増設の例
Roleタグでクラスを指定すると
Puppet適用対象となる
Capistranoタスクを実行して
Puppet Masterのnodeファイルを
生成する
Puppetを適用する
その他にも
いろいろな設定変更を
自動化しています

• Nagios
• Apache
• Varnish
Puppet Dashboard 使い始めました
こんな時に便利

• このサーバに最後に適用したのいつ
 だっけ?

• 間違えてファイルを上書きしちゃった
• 適用失敗しちゃったから見てみてよ
• 適用忘れの監視
[おまけ]手元のマシンでも動きます。
インスタンスストレージ
(Ephemeral Storage)
使ってます

• インスタンスを落とすと消える領域
• 別途料金かからない
• LVMでまとめて大容量ディスク
• ログ出力に便利
ディスクは遅いので
メモリを有効活用

• RAMディスク(/dev/shm)
 • スロウクエリが出やすいテーブル
 • 集計処理
Availability Zoneを
そろえる

• はじめ冗長化のために分けていたが、
 パフォーマンスのためにそろえた

• 10msくらい違った
リアルタイムモニタリング

• 漏れなく、でも多すぎず
• エラー時は目立つように
• 見やすい場所にディスプレイを設置
 • VNCでも見れて便利
AWS クックパッドの運用事例
いつも気にしている数字


• 同時アクセス数 (pv / sec)
• 応答速度 (msec / req)
• HTTP Codeの割合
ほぼ全スレーブDBの
Seconds_Behind_Master
もモニタリング
リアルタイムモニタリング
のメリット
• 俯瞰的な状況が分かりやすい
 • PCとアプリでだけ重くなった
 • レプリケーションが全体で遅れた
 • 特定のDBがつまった
スケーラビリティ
• スレーブDB
 • /var/lib/mysql以下を
  定期的にEBSでバックアップ

 • 増やすときはEBSをアタッチするだけ
• キャパシティ計測
 • rps(request/sec)を
  Muninでグラフ化
何rpsを越えると
応答速度が著しく悪化するか
が分かりやすい
冗長性はまだ
試行錯誤中

• EIP
 • スムーズに切り替わらない
• murakumo (菅原作)
 • 検証中
その他にも泥臭い
最適化

• マスタへ発行されるSELECTを排除
• スロウクエリをキャッシュ
• テーブル数を減らす
そんなわけで無事
バレンタインを終えました
別の意味で
ハッピー
バレンタイン
AWSのおかげで
Rails3移行も楽できました
• 2011/11
• Appサーバを2倍準備して
 いつでもロールバックできるようにした

 • 力業
• 何か大きな変更をする時に便利
まとめ
• AWSに移行後初めてのバレンタインデーを
 無事終えることができました

• すぐにサーバ増設ができるので
 チューニングに集中できました

• 大きな変更をする時に使える
 大きな武器になりました
[PR]最後に
AWS クックパッドの運用事例
まだ見ぬ問題を
楽しく解決したい
エンジニアを
お待ちしています。
ご静聴ありがとうございました

More Related Content

AWS クックパッドの運用事例