Comments
Description
Transcript
PDFダウンロード
いままでの苦労はなんだったんだ! KVS を使って 明日からでも始められる 驚きの パフォーマンス改善手法を 一挙に公開 株式会社神戸デジタル・ラボ 1 自己紹介 ! 山本浩生 Yamamoto Kose 株式会社 神戸デジタル・ラボ KVS(okuyama) 関連業務 関数型言語 / Emacs / サーバ環境 株式会社神戸デジタル・ラボ 2 目次 ! KVS とは? ! WEB システム と ボトルネック ! 対策具体例 株式会社神戸デジタル・ラボ 3 そもそも…… KVS とは? 株式会社神戸デジタル・ラボ 4 KVS お使いですか? 株式会社神戸デジタル・ラボ 5 KVS とは? 株式会社神戸デジタル・ラボ 6 KVS とは? ! Key Value Store 株式会社神戸デジタル・ラボ 7 KVS とは? ! Key Value Store 『 と値の倉庫』 データとその目印の組合せを 蓄えておくためのソフトウェア。 株式会社神戸デジタル・ラボ 8 KVS とは? ! 特徴 株式会社神戸デジタル・ラボ 9 KVS とは? ! 特徴 単純な構造でデータを蓄えているため、 データの取得・保管処理が 一般的に RDB に比べて高速! 株式会社神戸デジタル・ラボ 10 KVS のメリット・デメリット 株式会社神戸デジタル・ラボ 11 KVS のメリット・デメリット ! メリット データの出し入れが速い ! デメリット 複雑な処理には向かない 株式会社神戸デジタル・ラボ 12 KVS の特徴を活かす 株式会社神戸デジタル・ラボ 13 KVS の特徴を活かす ! 速度を求められる処理に利用する ! 複雑な処理の「結果」を貯めておく 株式会社神戸デジタル・ラボ 14 KVS の特徴を活かす ! 速度を求められる処理に利用する ! 複雑な処理の「結果」を貯めておく → キャッシュや データの一時的な利用 株式会社神戸デジタル・ラボ 15 memcached 株式会社神戸デジタル・ラボ 16 memcached ! 揮発性 ! 冗長性 株式会社神戸デジタル・ラボ 17 memcached だけじゃない KVS ! 揮発性 データの保存が可能なもの ! 冗長性 レプリケーションが可能なもの 株式会社神戸デジタル・ラボ 18 memcached だけじゃない KVS ! 揮発性 データの保存が可能なもの ! 冗長性 レプリケーションが可能なもの →分散 KVS 株式会社神戸デジタル・ラボ 19 分散 KVS ! 複数のサーバで運用される KVS 株式会社神戸デジタル・ラボ 20 分散 KVS ! 複数のサーバで運用される KVS →レプリケーション可能 →スケール性が高い 株式会社神戸デジタル・ラボ 21 分散 KVS ! 複数のサーバで運用される KVS →レプリケーション可能 →スケール性が高い okuyama, Riak, Hbase などなど 株式会社神戸デジタル・ラボ 22 分散 KVS ! 複数のサーバで運用される KVS →レプリケーション可能 →スケール性が高い okuyama, Riak, Hbase などなど 株式会社神戸デジタル・ラボ 23 次に・・・ WEB システムと ボトルネック 株式会社神戸デジタル・ラボ 24 WEB システム 株式会社神戸デジタル・ラボ 25 WEB システム 株式会社神戸デジタル・ラボ 26 WEB システム 株式会社神戸デジタル・ラボ 27 WEB システム 株式会社神戸デジタル・ラボ 28 WEB システムのボトルネック 株式会社神戸デジタル・ラボ 29 WEB システムのボトルネック RDB からのデータ取得 株式会社神戸デジタル・ラボ 30 WEB システムのボトルネック アプリケーションの処理 株式会社神戸デジタル・ラボ 31 WEB システムのボトルネック 静的ファイル配信 株式会社神戸デジタル・ラボ 32 WEB システムのボトルネック 商品検索 株式会社神戸デジタル・ラボ 33 WEB システムのボトルネック アプリケーションの処理 静的ファイル配信 商品検索 RDB からのデータ取得 株式会社神戸デジタル・ラボ 34 WEB システムのボトルネック アプリケーションの処理 商品検索 処理が集中してしまう箇所 = ボトルネック 静的ファイル配信 (画像など) RDB からのデータ取得 株式会社神戸デジタル・ラボ 35 WEB システムのボトルネック アプリケーションの処理 商品検索 処理が集中してしまう箇所 = ボトルネック 静的ファイル配信 (画像など) RDB からのデータ取得 → KVS の出番! 株式会社神戸デジタル・ラボ 36 それでは…… 対策具体例 株式会社神戸デジタル・ラボ 37 負荷対策例 基本編 キャッシュ 株式会社神戸デジタル・ラボ 38 キャッシュ 株式会社神戸デジタル・ラボ 39 キャッシュ ! ボトルネックとなる処理の結果を キャッシュしておく 株式会社神戸デジタル・ラボ 40 キャッシュ ! ボトルネックとなる処理の結果を キャッシュしておく → RDB の問合せ結果 SQL を Key にして保存 株式会社神戸デジタル・ラボ 41 キャッシュ ! ボトルネックとなる処理の結果を キャッシュしておく → RDB の問合せ結果 SQL を Key にして保存 → ページ内容 リクエストパラメータを Key にして保存 株式会社神戸デジタル・ラボ 42 キャッシュ(RDB) ! RDB の問合せ結果を保存しておく 株式会社神戸デジタル・ラボ 43 キャッシュ(RDB) ! RDB の問合せ結果を保存しておく RDB からのデータ取得 株式会社神戸デジタル・ラボ 44 キャッシュ(RDB) ! RDB の問合せ結果を保存しておく KVS 画面側で利用しやすい形式 (json など) 株式会社神戸デジタル・ラボ 45 キャッシュ(ページ) ! HTML をそのまま保存する 株式会社神戸デジタル・ラボ 46 キャッシュ(ページ) ! HTML をそのまま保存する アプリケーションの処理 株式会社神戸デジタル・ラボ 47 キャッシュ(ページ) ! HTML をそのまま保存する KVS リクエストパラメータの組合せ 株式会社神戸デジタル・ラボ 48 キャッシュ ! 問題点 株式会社神戸デジタル・ラボ 49 キャッシュ ! 問題点 リアルタイム性が落ちる 株式会社神戸デジタル・ラボ 50 キャッシュ ! 問題点 リアルタイム性が落ちる →問題の無いデータをキャッシュする 株式会社神戸デジタル・ラボ 51 キャッシュ ! 運用 株式会社神戸デジタル・ラボ 52 キャッシュ ! 運用 実機 株式会社神戸デジタル・ラボ 53 キャッシュ ! 運用 実機 →用意が手間 →必要な時だけ運用しにくい 株式会社神戸デジタル・ラボ 54 キャッシュ ! 運用 VM・クラウド 株式会社神戸デジタル・ラボ 55 キャッシュ ! 運用 VM・クラウド →環境をコピーして用意 →繁忙期のみ運用可能 株式会社神戸デジタル・ラボ 56 キャッシュ ! 運用 VM・クラウド →環境をコピーして用意 →繁忙期のみ運用可能 スケールアウトが容易 株式会社神戸デジタル・ラボ 57 キャッシュ ! 運用例 AWS EC2 利用 株式会社神戸デジタル・ラボ 58 キャッシュ ! 運用例 AWS EC2 利用 セール対応 株式会社神戸デジタル・ラボ 59 キャッシュ ! 運用例 AWS EC2 利用 通常対応 株式会社神戸デジタル・ラボ 60 キャッシュ ! 運用例 AWS EC2 利用 停止 株式会社神戸デジタル・ラボ 61 キャッシュ ! 運用例 AWS EC2 利用 分散 KVS を使えば スケールアウトも簡単! 株式会社神戸デジタル・ラボ 62 キャッシュ(分散 KVS) ! 分散 KVS を使えば…… 株式会社神戸デジタル・ラボ 63 キャッシュ(分散 KVS) ! 分散 KVS を使えば…… →データのレプリケーション 耐障害性向上 株式会社神戸デジタル・ラボ 64 キャッシュ ! まとめ 株式会社神戸デジタル・ラボ 65 キャッシュ ! まとめ →リアルタイム性の低い情報が対象 →VM やクラウドを使って 負荷に応じた環境構築 株式会社神戸デジタル・ラボ 66 キャッシュ ! DB への問合せをキャッシュで解決 株式会社神戸デジタル・ラボ 67 キャッシュ ! DB への問合せをキャッシュで解決? ……速くならない 株式会社神戸デジタル・ラボ 68 キャッシュ ! DB への問合せをキャッシュで解決 ……速くならない → 新なボトルネックの発覚 株式会社神戸デジタル・ラボ 69 負荷対策例 中級編 ストレージ 株式会社神戸デジタル・ラボ 70 ストレージ ! 画像や CSS などに集中してしまう 株式会社神戸デジタル・ラボ 71 ストレージ ! 画像や CSS などに集中してしまう 静的ファイル配信 株式会社神戸デジタル・ラボ 72 ストレージ ! 画像や CSS などに集中してしまう 静的ファイル配信 l 容量圧迫 l ディスクアクセス l 帯域圧迫 株式会社神戸デジタル・ラボ 73 ストレージ ! 画像や CSS などに集中してしまう 静的ファイル配信 l 容量圧迫 l ディスクアクセス l 帯域圧迫 KVS 利用に 置き換え 株式会社神戸デジタル・ラボ 74 ストレージ ! 画像や CSS などに集中してしまう l 容量圧迫 l ディスクアクセス l 帯域圧迫 株式会社神戸デジタル・ラボ 75 ストレージ ! 画像や CSS などに集中してしまう KVS l 容量圧迫 l ディスクアクセス l 帯域圧迫 画像など 株式会社神戸デジタル・ラボ 76 ストレージ ! 画像や CSS などに集中してしまう KVS l 容量圧迫 l ディスクアクセス l 帯域圧迫 画像など 分散配置 株式会社神戸デジタル・ラボ 77 ストレージ ! 画像や CSS などに集中してしまう l 容量圧迫 l ディスクアクセス l 帯域圧迫 株式会社神戸デジタル・ラボ 78 ストレージ ! 画像や CSS などに集中してしまう l 容量圧迫 l ディスクアクセス l 帯域圧迫 株式会社神戸デジタル・ラボ 79 ストレージ ! 画像や CSS などに集中してしまう KVS l 容量圧迫 l ディスクアクセス l 帯域圧迫 画像など 株式会社神戸デジタル・ラボ 80 ストレージ ! 画像や CSS などに集中してしまう l 容量圧迫 帯域分散 l ディスクアクセス l 帯域圧迫 KVS 画像など 株式会社神戸デジタル・ラボ 81 ストレージ ! まとめ 株式会社神戸デジタル・ラボ 82 ストレージ ! まとめ →KVS を使ってリソースを分散する →ネットワークも分散する 株式会社神戸デジタル・ラボ 83 ストレージ ! リソースへのアクセスを ストレージで解決 株式会社神戸デジタル・ラボ 84 ストレージ ! リソースへのアクセスを ストレージで解決? ……すごく速くならない 株式会社神戸デジタル・ラボ 85 ストレージ ! リソースへのアクセスを ストレージで解決? ……すごく速くならない → 新なボトルネックの発覚 株式会社神戸デジタル・ラボ 86 負荷対策例 上級編 検索エンジン 株式会社神戸デジタル・ラボ 87 検索エンジン ! 商品検索が遅い 株式会社神戸デジタル・ラボ 88 検索エンジン ! 商品検索が遅い 商品検索 株式会社神戸デジタル・ラボ 89 検索エンジン ! 商品検索が遅い 商品検索 l DB への問合せ l データ処理 株式会社神戸デジタル・ラボ 90 検索エンジン ! 商品検索が遅い 商品検索 l DB への問合せ l データ処理 KVS 利用に 置き換え 株式会社神戸デジタル・ラボ 91 検索エンジン ! 商品検索が遅い 商品検索 検索エンジン l DB への問合せ l データ処理 株式会社神戸デジタル・ラボ 92 検索エンジン ! 商品検索が遅い 商品検索 データの インポート 検索エンジン l DB への問合せ l データ処理 株式会社神戸デジタル・ラボ 93 検索エンジン ! 商品検索が遅い 商品データ参照 データの インポート 検索エンジン l DB への問合せ l データ処理 商品検索 株式会社神戸デジタル・ラボ 94 検索エンジン ! まとめ 株式会社神戸デジタル・ラボ 95 検索エンジン ! まとめ →KVS 製検索エンジンで速度向上 →DB の負荷も下がる 株式会社神戸デジタル・ラボ 96 さいごに まとめ 株式会社神戸デジタル・ラボ 97 まとめ 株式会社神戸デジタル・ラボ 98 まとめ ! ボトルネック部分に KVS を導入 株式会社神戸デジタル・ラボ 99 まとめ ! ボトルネック部分に KVS を導入 キャッシュ →可能なところから ストレージ スタート! 検索エンジン 株式会社神戸デジタル・ラボ 100