クックパッドのスケーリング       クックパッド株式会社             高田悟史
自己紹介  ■ 高田悟史(たかださとし)  ■ 787万人を支えるインフラチーム   ■ スケール関連を担当中
目次 ■ キャパシティプランニング ■ サーバ増設のスピードアップ
キャパシティプランニング
キャパシティプランニングとは ユーザがいつまでも快適に 使い続けるためにやるべき こと
キャパシティプランニング          ■ 分析          ■ 予測          ■ 配置
キャパシティプランニング - 分析  ■ 現在のキャパシティを知る   ■ 長期に渡るデータの記録   ■ サーバ特性に合わせて、キャパシティ    を計る指標を決める
キャパシティプランニング - 予測  ■ キャパシティを越える日を予測する   ■ 指標と計測データの結びつけ   ■ 上限を特定して対策をする時期を確定
キャパシティプランニング - 配置  ■ 迅速にサービスインできるようになる   ■ 自動インストール   ■ 自動設定
キャパシティプランニング          ■ 分析          ■ 予測          ■ 配置
サーバ増設のスピードアップ
クックパッドのサーバー増設の流れ                           サーバ管理ツール                                Rails                                  ...
OSインストール時の問題■ 手間がかかる ■ 電源をOn ■ OSのCDROMからインストール  ■ 次へ次へ
OSインストールまでの流れを改善■ 自作のサーバ管理ツールにサーバ情報を登録■ 電源をOn■ PXE Bootでネットブート■ 動的生成されたkickstart.cfgを使ってKickstart ■ インストール終了まで待つだけ
サーバ情報を登録
kickstart.cfgを自動生成■ http://ブートサーバ/deployment/kickstart ■ ホスト名      network --device eth0 --bootproto dhcp --hostname test1...
PXE BootとKickstartとPuppet                          サーバ管理ツール                              Rails                            ...
OSインストール後の問題■ ソフトウェアインストール/設定用スクリプトの メンテナンスコスト■ パッケージの統一■ サーバー毎に異なる設定の反映 ■ database.yml ■ my.cnf
Puppetを導入した ■ Puppetとは  ■ サーバの状態管理ツール  ■ Manifestに状態を記述することで反映  ■ サーバ / クライアント構成
Puppetの構成                        puppetmasterd    (1)Manifestを取得              puppetd                   puppetd (2)Manifes...
パッケージの統一(Passengerの例)    package {     passenger:       provider => gem,       notify => Service[httpd],        ensure => ...
サーバごとに異なる設定(/etc/my.cnfの例) ■ Manifest     $mysql_server_id = $hostname ? {      db1 => 10001,      db2 => 10002,      db3 ...
PXE BootとKickstartとPuppet                           サーバ管理ツール                                Rails                         ...
Puppet導入の副作用 ■ 学習コスト ■ インストール/設定の手間を0にするまでには  それなりに時間がかかる ■ manifestにもリファクタリングが必要
まとめ
まとめ ■ サーバ増設のスピードは重要 ■ OSのインストールにかかる時間は変わらな  いが、手間がかからなくなった ■ Puppetを導入して、ソフトウェアのインス  トール/設定の手間がほぼ0になった
ご清聴ありがとう ございました
Upcoming SlideShare
Loading in …5
×

クックパッドのスケーリング

4,168 views
4,106 views

Published on

Published in: Business, Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,168
On SlideShare
0
From Embeds
0
Number of Embeds
2,760
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • \n \n
  • クックパッドのスケーリング

    1. 1. クックパッドのスケーリング クックパッド株式会社 高田悟史
    2. 2. 自己紹介 ■ 高田悟史(たかださとし) ■ 787万人を支えるインフラチーム ■ スケール関連を担当中
    3. 3. 目次 ■ キャパシティプランニング ■ サーバ増設のスピードアップ
    4. 4. キャパシティプランニング
    5. 5. キャパシティプランニングとは ユーザがいつまでも快適に 使い続けるためにやるべき こと
    6. 6. キャパシティプランニング ■ 分析 ■ 予測 ■ 配置
    7. 7. キャパシティプランニング - 分析 ■ 現在のキャパシティを知る ■ 長期に渡るデータの記録 ■ サーバ特性に合わせて、キャパシティ を計る指標を決める
    8. 8. キャパシティプランニング - 予測 ■ キャパシティを越える日を予測する ■ 指標と計測データの結びつけ ■ 上限を特定して対策をする時期を確定
    9. 9. キャパシティプランニング - 配置 ■ 迅速にサービスインできるようになる ■ 自動インストール ■ 自動設定
    10. 10. キャパシティプランニング ■ 分析 ■ 予測 ■ 配置
    11. 11. サーバ増設のスピードアップ
    12. 12. クックパッドのサーバー増設の流れ サーバ管理ツール Rails boot用サーバ (2-1)kickstart.cfgの取得 DHCP (1)PXE Boot tftp New(3)puppetd Apache (2-2)パッケージ取得 puppetmasterd
    13. 13. OSインストール時の問題■ 手間がかかる ■ 電源をOn ■ OSのCDROMからインストール ■ 次へ次へ
    14. 14. OSインストールまでの流れを改善■ 自作のサーバ管理ツールにサーバ情報を登録■ 電源をOn■ PXE Bootでネットブート■ 動的生成されたkickstart.cfgを使ってKickstart ■ インストール終了まで待つだけ
    15. 15. サーバ情報を登録
    16. 16. kickstart.cfgを自動生成■ http://ブートサーバ/deployment/kickstart ■ ホスト名 network --device eth0 --bootproto dhcp --hostname test1 ■ %post に出力される # eth0 cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet IPADDR=192.168.0.1 NETMASK=255.255.255.0 EOF
    17. 17. PXE BootとKickstartとPuppet サーバ管理ツール Rails boot用サーバ (2-1)kickstart.cfgの取得 DHCP (1)PXE Boot tftp New(3)puppetd Apache (2-2)パッケージ取得 puppetmasterd
    18. 18. OSインストール後の問題■ ソフトウェアインストール/設定用スクリプトの メンテナンスコスト■ パッケージの統一■ サーバー毎に異なる設定の反映 ■ database.yml ■ my.cnf
    19. 19. Puppetを導入した ■ Puppetとは ■ サーバの状態管理ツール ■ Manifestに状態を記述することで反映 ■ サーバ / クライアント構成
    20. 20. Puppetの構成 puppetmasterd (1)Manifestを取得 puppetd puppetd (2)Manifestを実行
    21. 21. パッケージの統一(Passengerの例) package { passenger: provider => gem, notify => Service[httpd], ensure => 2.2.5; }
    22. 22. サーバごとに異なる設定(/etc/my.cnfの例) ■ Manifest $mysql_server_id = $hostname ? { db1 => 10001, db2 => 10002, db3 => 10003, db4 => 10004, default => error } ■ Template server-id = <%= mysql_server_id %>
    23. 23. PXE BootとKickstartとPuppet サーバ管理ツール Rails boot用サーバ (2-1)kickstart.cfgの取得 DHCP (1)PXE Boot tftp New(3)puppetd Apache (2-2)パッケージ取得 puppetmasterd
    24. 24. Puppet導入の副作用 ■ 学習コスト ■ インストール/設定の手間を0にするまでには それなりに時間がかかる ■ manifestにもリファクタリングが必要
    25. 25. まとめ
    26. 26. まとめ ■ サーバ増設のスピードは重要 ■ OSのインストールにかかる時間は変わらな いが、手間がかからなくなった ■ Puppetを導入して、ソフトウェアのインス トール/設定の手間がほぼ0になった
    27. 27. ご清聴ありがとう ございました

    ×