33
ISUCON の話 概要編 2015/08/19 ISUCON 夏期講習 Treasure Data, Inc. 田籠聡 (tagomoris)

ISUCON夏期講習2015_1 概要編

Embed Size (px)

Citation preview

Page 1: ISUCON夏期講習2015_1 概要編

ISUCONの話 概要編

2015/08/19 ISUCON夏期講習

Treasure Data, Inc. 田籠聡(tagomoris)

Page 2: ISUCON夏期講習2015_1 概要編

www.slideshare.net/tagomoris

Page 3: ISUCON夏期講習2015_1 概要編

Satoshi "Moris" Tagomori (@tagomoris)

Fluentd, Norikra, MessagePack-Ruby,... Docker logging driver for Fluentd (docker v1.8)

Treasure Data, Inc.

Page 4: ISUCON夏期講習2015_1 概要編
Page 5: ISUCON夏期講習2015_1 概要編

で、誰?

• ISUCON1 (2011): 出題

• ISUCON2 (2012): 出題

• ISUCON3 (2013): 優勝

• ISUCON4 (2014): 優勝

• ISUCON5 (2015): 出題

Page 6: ISUCON夏期講習2015_1 概要編

Qualify: Sep 26,27 (online) Final: Oct 31 (Hikarie)

Page 7: ISUCON夏期講習2015_1 概要編

ISUCONとは• Webアプリケーション高速化コンテスト

• 1: blog

• 2: チケット販売サイト

• 3予選: wiki的サイト, 3決勝: 画像SNS

• 4予選: 不正ログイン検出, 4決勝: 動画広告配信

• ベンチマークで最高スコアを出せば勝利

Page 8: ISUCON夏期講習2015_1 概要編

user4

user3

user2

user1

※イメージ

serverserver

server

serverserver

server

serverserver

serverserverserver

server

bench

高負荷アクセス 動作チェック

Page 9: ISUCON夏期講習2015_1 概要編
Page 10: ISUCON夏期講習2015_1 概要編

ぼくらのお仕事について• Webサービス/インターネットサービスの提供

• サーバサイドの環境構築・プログラミング

• ネットワーク, サーバ, OS

• Webサーバ,RDBMS, KVS 等のミドルウェア

• SQL, プログラムコード

• 要するにISUCONの作業対象ほとんど

Page 11: ISUCON夏期講習2015_1 概要編

普段の仕事

• ネットワーク・サーバ・OS・ミドルウェア

• 環境の選定、セットアップ

• モニタリング、トラブル対応

• そのためのツール作り、自動化

• データセンタ設計、広域ネットワーク、セキュリティ、などなど

Page 12: ISUCON夏期講習2015_1 概要編

ISUCON参加者の人々• インターネットサービス関連の人が多いが、様々

• 会社の同僚同士のチームが多い

• ほか、勉強会などでの知り合いなど

• スキル的にはいろいろ

• ITインフラ専門の人ばかりのチーム

• ITインフラ + アプリな人のチーム

Page 13: ISUCON夏期講習2015_1 概要編

Webサービスにおけるパフォーマンス

• 「パフォーマンス」とは

• レスポンスタイム:

• 1リクエスト → 1レスポンス の時間

• スループット:

• 1秒間に返せるレスポンスの数

• 短いレスポンスタイム、高いスループット

• == 「良いパフォーマンス」

Page 14: ISUCON夏期講習2015_1 概要編

パフォーマンス向上の重要性

• ユーザ体験の向上

• ユーザのアクションにすぐに反応する

• 入力内容が遅れず反映される

• 運用コストの低減

• 必要なサーバ台数の減少

• 高負荷サーバ減少→メンテナンス手間の削減

Page 15: ISUCON夏期講習2015_1 概要編

ISUCONにおける パフォーマンス

is スコア

Page 16: ISUCON夏期講習2015_1 概要編

スコア向上のためなら (レギュレーションの許す範囲内で)

何をやってもOK!

Page 17: ISUCON夏期講習2015_1 概要編

スコア向上のためなら (レギュレーションの許す範囲内で)

何をやってもOK!

Page 18: ISUCON夏期講習2015_1 概要編

レギュレーション

• よく読もう

• ISUCON4 予選レギュレーション

• http://isucon.net/archives/39979344.html

• ISUCON4 決勝レギュレーション

• https://gist.github.com/mirakui/4a935053c272469ed349

Page 19: ISUCON夏期講習2015_1 概要編

Web Applicationとは

Page 20: ISUCON夏期講習2015_1 概要編

benchmark tools

server

web server

application server

database server

Page 21: ISUCON夏期講習2015_1 概要編

benchmark tools

serverweb server

serverapplication

server serverapplication

server

serverdatabase server

Page 22: ISUCON夏期講習2015_1 概要編

Web Server• Apache httpd, Nginx, etc

• Serving static contents

• html, js/css, jpg/png, ...

• Reverse proxy for dynamic contents

• session control

• load balancing

• authentication

• caching

serverweb server

serverapplication

serverapplication

server

serverdatabase

server

Page 23: ISUCON夏期講習2015_1 概要編

Application Server

• Server process executes application code

• html, HTTP API endpoint

• generating views

• calling SQL

• calling external api

• referring caches

serverweb server

serverapplication

serverapplication

server

serverdatabase

server

Page 24: ISUCON夏期講習2015_1 概要編

Database Server

• MySQL, PostgreSQL, Oracle DB, MS SQLServer, ... (MongoDB, Cassandra, Redis, ...)

• storing data

• search/respond data serverweb server

serverapplication

serverapplication

server

serverdatabase server

Page 25: ISUCON夏期講習2015_1 概要編

Cache Server

serverweb server

serverapplication

serverapplication

server

serverdatabase

server

cache server

• Memcached, Redis, Varnish cache, Squid, Apache httpd(mod_cache), Nginx

• caching whole page(html)

• caching parts of page(html)

• caching query results(objects)

• ...

• cache everything w/ high costs

Page 26: ISUCON夏期講習2015_1 概要編

ISUCONで何をやるか

Page 27: ISUCON夏期講習2015_1 概要編

教訓ぽいもの• やったことがないことはできない

• 普段どおりやる

• 普段やれないことをやる

• 何をやるべきか最初によく見る

• 何をやったかをちゃんと把握する

• いつでも戻れるようにしておく

Page 28: ISUCON夏期講習2015_1 概要編

安全のために• 最初の状態を保存しておく

• ソースコード、初期データ、初期設定

• 初期スコア(出しておく!)と初期状態

• 何をやったか記録しておく

• ソースコードや設定のバージョン管理

• 相談内容の記録

Page 29: ISUCON夏期講習2015_1 概要編

ボトルネックを見付けて 解決する

• HTTPD? connections? cpu? memory?

• Application? connections? cpu? memory?

• RDBMS? read? write?

• Network? data size? latency?

• ボトルネックは解決するたびに移っていく

Page 30: ISUCON夏期講習2015_1 概要編

スコア• スコアを向上させる

• スコア算出ルールを見る

• 何を改善すべきかを考える

• スコアの揺れ

• 実行時の状況によって多少の揺れが出る

• わずかな差異(誤差)にまどわされない

• 改善は劇的に行う(×1.2倍 ○5倍!)

Page 31: ISUCON夏期講習2015_1 概要編

制限時間• 時間があります

• 7時間で何もかもやるのは不可能

• 最初に落ち着いて内容を把握する

• 時間と相談してやれそうなことを考える

• 大きな改造にいつ手をつけるか

• 早目がよい、ほぼワンチャンス

• 終了時間に動いてなければならない

Page 32: ISUCON夏期講習2015_1 概要編

順番で言うと1.初期状態の保存

(コードや各種設定のバージョン管理、初期データ保存)

2.実際にブラウザから触ってみる、レギュレーションを読み込む

3.ベンチマークツールを動かしてみる

(アクセスログの確認、データ量の確認)

4.コードを読んで内容を把握 (ここまで手分けしても約1時間)

5.改善内容の検討、時間と相談して方針決定

6.実際に改善にとりかかる

Page 33: ISUCON夏期講習2015_1 概要編

Enjoy ISUCON!