52
クックパッドでの 運用事例 COOKPAD Inc. / Satoshi Takada AWS

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

Embed Size (px)

Citation preview

Page 1: AWS クックパッドの運用事例

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

COOKPAD Inc. / Satoshi Takada

AWS

Page 2: AWS クックパッドの運用事例

About me

•高田悟史 (@satoship)•前職ではJavaプログラマ•2008/04 クックパッド株式会社 入社•フィーチャーフォン用サイト開発•インフラエンジニアデビュー

Page 3: AWS クックパッドの運用事例

COOKPAD

Page 4: AWS クックパッドの運用事例

COOKPAD- Mission

Page 5: AWS クックパッドの運用事例

「毎日の料理を楽しみにすることで心からの笑顔をふやす」

Page 6: AWS クックパッドの運用事例

インフラグループも同様です

Page 7: AWS クックパッドの運用事例

毎日の料理を楽しみにするために

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

Page 8: AWS クックパッドの運用事例

「常に快適に」

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

Page 9: AWS クックパッドの運用事例

「保ち続ける」

•ボトルネックはすぐにつぶす•スケーラビリティの確保

Page 10: AWS クックパッドの運用事例

COOKPAD- Access

Page 11: AWS クックパッドの運用事例

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

昼食前と夕食前

Page 12: AWS クックパッドの運用事例

4 5 6 7 8 9 10 11 12 1 2 3 4

バレンタインデー

Page 13: AWS クックパッドの運用事例

バレンタインデイ前日は年間でもっともアクセス数が多い日

Page 14: AWS クックパッドの運用事例

5日前 !

Page 15: AWS クックパッドの運用事例

2012/02/13(月)

•今までで最大級のアクセス数•僕が見た中で一番安定していた•話題にもあがらなかった•当日もAppを増やしてた

Page 16: AWS クックパッドの運用事例

COOKPADではAWSをどう使っているか?

Page 17: AWS クックパッドの運用事例

今日のおはなし

Page 18: AWS クックパッドの運用事例

AWSへのみちのり

•2010/05 検証を開始•2011/03 本格的に移行準備開始•2011/08 メインサービス移行•2011/10 完全移行完了

Page 19: AWS クックパッドの運用事例
Page 20: AWS クックパッドの運用事例

サーバ構成

Page 21: AWS クックパッドの運用事例

Reverse Proxy

App

Slave DB

Apache

MySQL

Nginx + Unicorn

Page 22: AWS クックパッドの運用事例

[PR]

•ウェブオペレーション by @hmsk•18章 日本の料理のインフラ•WEB+DB PRESS vol.66 by @mirakui•200ミリ秒を切るインフラ

Page 23: AWS クックパッドの運用事例

•git•Puppet•Capistrano

APIを活用してサーバ設定の自動化とバージョン管理

Page 24: AWS クックパッドの運用事例

サーバ増設の例

Page 25: AWS クックパッドの運用事例

Roleタグでクラスを指定するとPuppet適用対象となる

Page 26: AWS クックパッドの運用事例

Capistranoタスクを実行してPuppet Masterのnodeファイルを生成する

Page 27: AWS クックパッドの運用事例

Puppetを適用する

Page 28: AWS クックパッドの運用事例

•Nagios•Apache•Varnish

その他にもいろいろな設定変更を自動化しています

Page 29: AWS クックパッドの運用事例

Puppet Dashboard 使い始めました

Page 30: AWS クックパッドの運用事例

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

•間違えてファイルを上書きしちゃった•適用失敗しちゃったから見てみてよ•適用忘れの監視

こんな時に便利

Page 31: AWS クックパッドの運用事例

[おまけ]手元のマシンでも動きます。

Page 32: AWS クックパッドの運用事例

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

インスタンスストレージ(Ephemeral Storage)使ってます

Page 33: AWS クックパッドの運用事例

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

ディスクは遅いのでメモリを有効活用

Page 34: AWS クックパッドの運用事例

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

•10msくらい違った

Availability Zoneをそろえる

Page 35: AWS クックパッドの運用事例

•漏れなく、でも多すぎず•エラー時は目立つように•見やすい場所にディスプレイを設置•VNCでも見れて便利

リアルタイムモニタリング

Page 36: AWS クックパッドの運用事例
Page 37: AWS クックパッドの運用事例

•同時アクセス数 (pv / sec)•応答速度 (msec / req)•HTTP Codeの割合

いつも気にしている数字

Page 38: AWS クックパッドの運用事例

ほぼ全スレーブDBのSeconds_Behind_Masterもモニタリング

Page 39: AWS クックパッドの運用事例

•俯瞰的な状況が分かりやすい•PCとアプリでだけ重くなった•レプリケーションが全体で遅れた•特定のDBがつまった

リアルタイムモニタリングのメリット

Page 40: AWS クックパッドの運用事例

•スレーブDB•/var/lib/mysql以下を定期的にEBSでバックアップ

•増やすときはEBSをアタッチするだけ•キャパシティ計測•rps(request/sec)をMuninでグラフ化

スケーラビリティ

Page 41: AWS クックパッドの運用事例

何rpsを越えると応答速度が著しく悪化するかが分かりやすい

Page 42: AWS クックパッドの運用事例

•EIP•スムーズに切り替わらない•murakumo (菅原作)•検証中

冗長性はまだ試行錯誤中

Page 43: AWS クックパッドの運用事例

•マスタへ発行されるSELECTを排除•スロウクエリをキャッシュ•テーブル数を減らす

その他にも泥臭い最適化

Page 44: AWS クックパッドの運用事例

そんなわけで無事バレンタインを終えました

Page 45: AWS クックパッドの運用事例

別の意味でハッピーバレンタイン

Page 46: AWS クックパッドの運用事例

•2011/11•Appサーバを2倍準備していつでもロールバックできるようにした

•力業•何か大きな変更をする時に便利

AWSのおかげでRails3移行も楽できました

Page 47: AWS クックパッドの運用事例

まとめ

Page 48: AWS クックパッドの運用事例

•AWSに移行後初めてのバレンタインデーを無事終えることができました

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

•大きな変更をする時に使える大きな武器になりました

Page 49: AWS クックパッドの運用事例

[PR]最後に

Page 50: AWS クックパッドの運用事例
Page 51: AWS クックパッドの運用事例

まだ見ぬ問題を楽しく解決したいエンジニアをお待ちしています。

Page 52: AWS クックパッドの運用事例

ご静聴ありがとうございました