30

ISUCONの話(夏期講習2014)

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: ISUCONの話(夏期講習2014)

ISUCONの話

2014/08/20ISUCON夏期講習

LINE株式会社田籠聡(tagomoris)

Page 2: ISUCONの話(夏期講習2014)

で、誰?

tagomoris

kazeburo

sugyan

LINE社員(t,k,s)

ISUCON出題(t,k)

ISUCON優勝(s)

ISUCON2出題(t,k,s)

ISUCON3優勝(t,k,s)

Page 3: ISUCONの話(夏期講習2014)

ISUCON4

予選: 9/27, 28

決勝: 11/8

Page 4: ISUCONの話(夏期講習2014)

ISUCONとは

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

1: blog, 2: チケット販売サイト

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

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

Page 5: ISUCONの話(夏期講習2014)

user4

user3

user2

user1

※イメージ

serverserver

server

serverserver

server

serverserver

serverserverserver

server

bench

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

Page 6: ISUCONの話(夏期講習2014)
Page 7: ISUCONの話(夏期講習2014)

ぼくらのお仕事について

Webサービス/インターネットサービスの提供

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

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

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

SQL, プログラムコード

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

Page 8: ISUCONの話(夏期講習2014)

普段の仕事

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

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

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

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

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

Page 9: ISUCONの話(夏期講習2014)

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

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

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

スキル的にはいろいろ

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

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

Page 10: ISUCONの話(夏期講習2014)

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

「パフォーマンス」とは

レスポンスタイム:

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

スループット:

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

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

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

Page 11: ISUCONの話(夏期講習2014)

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

ユーザ体験の向上

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

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

運用コストの低減

必要なサーバ台数の減少

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

Page 12: ISUCONの話(夏期講習2014)

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

isスコア

Page 13: ISUCONの話(夏期講習2014)

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

何をやってもOK!

Page 14: ISUCONの話(夏期講習2014)

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

何をやってもOK!

Page 15: ISUCONの話(夏期講習2014)

レギュレーション

よく読もう

ISUCON3 予選レギュレーション

https://gist.github.com/acidlemon/2c7d4e2e5b4e24007e39

ISUCON3 決勝レギュレーション

https://gist.github.com/acidlemon/049fe8c9a790a52814fc

Page 16: ISUCONの話(夏期講習2014)

Web Applicationとは

Page 17: ISUCONの話(夏期講習2014)

benchmark tools

server

web server

application server

database server

Page 18: ISUCONの話(夏期講習2014)

benchmark tools

serverweb server

serverapplication

server serverapplication

server

serverdatabase server

Page 19: ISUCONの話(夏期講習2014)

Web Server

Apache httpd, Nginx, etcServing static contents

html, js/css, jpg/png, ...Reverse proxy for dynamic contents

session controlload balancingauthenticationcaching

serverweb server

serverapplication

serverapplication

server

serverdatabase server

Page 20: ISUCONの話(夏期講習2014)

Application Server

Server process executes application codehtml, HTTP API endpoint

generating viewscalling SQLcalling external apireferring caches

serverweb server

serverapplication

serverapplication

server

serverdatabase server

Page 21: ISUCONの話(夏期講習2014)

Database Server

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

storing data

search/respond data

serverweb server

serverapplication

serverapplication

server

serverdatabase server

Page 22: ISUCONの話(夏期講習2014)

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 23: ISUCONの話(夏期講習2014)

ISUCONで何をやるか

Page 24: ISUCONの話(夏期講習2014)

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

普段どおりやる

普段やれないことをやる

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

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

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

Page 25: ISUCONの話(夏期講習2014)

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

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

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

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

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

相談内容の記録

Page 26: ISUCONの話(夏期講習2014)

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

HTTPD? connections? cpu? memory?

Application? connections? cpu? memory?

RDBMS? read? write?

Network? data size? latency?

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

Page 27: ISUCONの話(夏期講習2014)

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

スコア算出ルールを見る

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

スコアの揺れ

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

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

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

Page 28: ISUCONの話(夏期講習2014)

制限時間時間があります

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

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

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

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

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

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

Page 29: ISUCONの話(夏期講習2014)

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

(コードのバージョン管理、初期データ保存)

2.実際にブラウザから触ってみる

3.ベンチマークツールを動かしてみる(アクセスログの確認、データ量の確認)

4.コードを読んで内容を把握

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

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

Page 30: ISUCONの話(夏期講習2014)

Enjoy ISUCON!