Presentation is loading. Please wait.

Presentation is loading. Please wait.

© 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます はてなの開発 / 運用体制 株式会社はてな 伊藤 直也.

Similar presentations


Presentation on theme: "© 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます はてなの開発 / 運用体制 株式会社はてな 伊藤 直也."— Presentation transcript:

1 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます はてなの開発 / 運用体制 株式会社はてな 伊藤 直也

2 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます お話したいこと はてなブックマークのシステム概要 ソフトウェア ハードウェア LVS はてなの開発体制

3 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます はてなブックマーク

4 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます はてなブックマークの数字 66,000 ユーザー del.icio.us 30 万人 ( 被買収時点 ) digg 60 万人 (2006.10 時点 ) サーバー 30 台強 開発者 1 + 数名 LAMP

5 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます proxy MP master bot / feed 通常のリクエスト 他サービス slave 画像 API etc. LVS proxy LVS

6 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます ソフトとハード

7 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます ソフトウェア Linux 2.6 (FC4) Perl / Ruby LVS Apache 2.2 / 2.0 rev proxy (mod_proxy_balancer) app server (mod_perl) memcached MySQL 4.0 MyISAM

8 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます そのほか Subversion Capistrano Nagios Observer ( 自社開発 )

9 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます Perl Perl 5.8 CPAN モジュールは自由に Capistrano でまとめてインストール

10 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます はてなフレームワーク M + C V は基本 TT / H:T:Pro (JSON / YAML) mini httpd (server.pl) スケルトンジェネレータ DI Pluggable

11 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます Hatena Framework Apache Trans Handler Access Handler Engine Factory Engine Function … PageMaker Factory PageMaker Content Maker Content Maker … Object Oriented Perl Module 各種処理(あれやこれや) HTML 生成 ( associate object )

12 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます Model - Hatena2::TableObject ORM + Array like Ruby my $bookmarks = App::Bookmark->search( where => ["name = ?", 'naoya'], order => 'id desc', with => 'entry', ); print $bookmark->collect(sub { $_->entry->url })->join("\n");

13 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます はてなフレームワークの公開 ? やろうやろうと思ってたら時期を逃した

14 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます Ruby Rails dRuby ブックマークの一部機能 はてなセリフ はてな SNS

15 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます JavaScript / ActionScript JavaScript 部 prototype.js ( 老 ) MochiKit ( 若 ) Flash 重要 flv プレイヤーとか 2.0 時代の...

16 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます 低レベル層 C / C++ Apache modules XS modules 自社開発のツール、ミドルウェア

17 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます Perl にこだわるか ? 技術を一つに絞る利点よりも、幅が広が ることにより得られるメリットが大きい フレームワークの普及などにより人材の 交換コストは昔ほど高くない Perl プログラマは Ruby が嫌じゃないけ ど Ruby 厨は Perl が嫌

18 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます Capistrano ベリー便利 % ruby bookmark/script/switchtower -e users shell cap> uptime [establishing connection(s) to...] [192.168.0.XXX] 13:35:20 up 121 days, 5:10, 1 user, load average: 1.89, 1.65, 1.09 [192.168.0.XXX] 13:35:20 up 121 days, 5:12, 1 user, load average: 1.88, 1.40, 0.89 [192.168.0.XXX] 13:35:19 up 121 days, 5:08, 1 user, load average: 1.98, 1.40, 0.90 [192.168.0.XXX] 13:35:20 up 109 days, 13:54, 1 user, load average: 1.53, 1.33, 0.90 [192.168.0.XXX] 13:35:22 up 121 days, 5:18, 1 user, load average: 1.41, 1.47, 1.15 [192.168.0.XXX] 13:35:20 up 109 days, 13:52, 1 user, load average: 1.88, 1.43, 0.93 command finished cap> ps auxw | grep httpd | wc -l [192.168.0.XXX] 26 [192.168.0.XXX] 31 [192.168.0.XXX] 25 [192.168.0.XXX] 27 [192.168.0.XXX] 29 command finished

19 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます 監視 Observer like Plagger Notify::IRC Notify::Mail Nagios nagios-bot POE

20 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます ハードウェア #1

21 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます ハードウェア #2 サーバーが増えてきた (300 台弱 ) データセンター引越し さくらインターネットへ

22 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます LVS

23 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます LVS って ? Linux Virtual Server ipvs Linux カーネル組み込みのロードバランサ ipvsadm

24 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます LVS (ipvsadm) % sudo /sbin/ipvsadm -Ln -t 192.168.2.9:3306 Password: Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.9:3306 lc -> 192.168.0.43:3306 Route 1 0 370 -> 192.168.0.158:3306 Route 1 1 369 -> 192.168.1.31:3306 Route 1 2 362 -> 192.168.1.9:3306 Route 1 2 367 -> 192.168.1.17:3306 Route 1 1 256

25 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます LVS + keepalived keepalived LVS の冗長化 (VRRP) Real Server の稼動監視 ipvs のフロントエンド

26 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます LVS + keepalived 図 ipvs + keepalived#1 Real Server#1Real Server#2Real Serve#3 ipvs + keepalived#2 VRRP ACTIVEBACKUP TCP CHECK

27 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます LVS++ DSR (Dynamic Server Return) も可能 バランシングアルゴリズムもいろいろ lc (least connection) 負荷がほとんどない

28 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます DSR LVS Real Server クライアント 1 2 3 VIP RIP

29 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます keepalived++ 2 台 LVS を用意すればどっちかが壊れても 勝手に自動復帰できる (VRRP) Real Server が死んでも勝手にバランサ から外してくれる Real Server のチェックは自前のスクリ プトでも可能

30 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます LVS-- いくつかのソフトを組み合わせて使うの で操作を覚えるのが面倒 ( 難しくはない ) ipvsadm keepalived iptables DSR してるとネットワークパケットの動 きが特殊なのでちゃんと理解してないと はまる Martian Source 問題

31 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます MySQL の手前に LVS スレーブ群への振り分けを LVS に任せる http://d.hatena.ne.jp/naoya/20060901/1 157109663 http://d.hatena.ne.jp/naoya/20060901/1 157109663

32 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます メリット #1 Perl 側から見ると DB 群が大きなスレーブ 群に見える (Flickr の中の人も言って いた ) Perl が LVS 以外のアドレスを知らなくてい い DB の追加 / 削除をアプリケーションを考慮せ ずに可能 ウェブアプリケーションの再起動必要なし

33 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます メリット #2 負荷にあわせて分散できる 分散アルゴリズム色々 うちでは lc or wlc (wlc は重み付けを加 えられる ) Perl から MySQL の負荷を低コストに知 るのはおそらく難しい

34 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます メリット #3 故障したリアルサーバーを確実に切り離 せる Perl でやるとアプリケーションと稼動監視 が切り離せてないため、予想しない問題が起 こりやすい LVS の品質は高い

35 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます メリット #4 Perl に依存しない 仮に Ruby やそのほかの言語から接続する場 合でも振り分けのロジックは気にしなくて良 い

36 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます 使用感 便利、丈夫 メンテナンスコストが下がった サーバー構成の変更に強くなった ノウハウは結構必要 ネットワーク周りではまりがち 今のところ商用製品要らず 普通に zsh と vim でメンテとかできて◎

37 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます おすすめ

38 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます 開発体制

39 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます 開発者と企画者 開発者が企画 / 運用 新しいことの正しさは本人にしか分からない 苦手なことは人の手を借りられる デザイン ユーザインタフェース ハードウェア、負荷分散

40 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます 開発者のモチベーション 新しい機能を思いついたらおもむろに でかい機能は合宿などで 重い腰をあげられるかどうかがすべて 不具合などは見つけたら直す Web App はてなアイデア " 自分の頭で考えろ "

41 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます 生産性を高めよう 会議 less フリーアドレス デュアルモニタ購入サポート ノート PC ( ポケット 1 個の法則 ) 自宅オフィス / 離れオフィス 休日選択制 ( 水 or 土 ) 20% ルール g.hatena.ne.jp + IRC

42 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます サービス開発者の哲学 正しいことはあなたにしか分からない。 それが正しいかどうかは自分の手で証明する Show us the CODE 自分の頭で考える。自分を信じる。 半年続けると流行るの法則。継続は力。 「はてならしさ」 スルー力なんて要らない。

43 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます まとめ 最近のシステム構成を紹介しました。 日々改善しております。 ソフトでがんばるのでも結構いけます。 LVS は激しくおすすめです。 プログラマのモチベーションは会社の原 動力です。

44 © 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます Thanks!


Download ppt "© 2006 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます はてなの開発 / 運用体制 株式会社はてな 伊藤 直也."

Similar presentations


Ads by Google