タグ

ブックマーク / surgo.jp (11)

  • Disqus のスケール - Django で月間80億PVを処理する

    私が把握してる限り Django で一番大きなサービス Disqus のスケール (執筆時点ではサービスダウンしてる)。元ネタは Scaling Django to 8 Billion Page Views です。月間80億PV、45k req/s のほぼすべてのトラフィックを Django で処理しているとのこと。抄訳になるかな。 WAF は高速開発とパフォーマンス、新しい人が入ってすぐに開発に参加できることとカスタマイズ等のトレードオフがあります。この記事ではそのトレードオフである高速開発とパフォーマンスをどう両立させるか、Disqus のノウハウが紹介されています。 >>> なぜ WAF (Web Application Framework) は遅いのか 最初に思い浮かぶのは、アプリケーションに必要ではないボイラープレート (django.contrib とか?) や不要なコードがあ

  • Dropbox のスケールとか

    Python なサービス みんな大好き Dropbox のスケールとかメモ。以下のページ辺りからピックアップ。Parted? みたいなので、続編がでたら追記するかも。 Scaling lessons learned at Dropbox, part 1 (comment) Dropbox - Startup Lessons Learned (slideshare) Dropbox -Yコンビネーターが生んだスタートアップの軌跡と未来 - スケール関係ないですが、2006 年当時はオンラインストレージサービスがいっぱいあったようで、VC から資金調達したときのやり取りがおもしろい VC "クラウドストレージサービスなんて腐るほどある" Drew "なにか使ってるのありますか?" VC "NO" Drew "..." 完璧で、スケーラブルで、クロスプラットフォームなクラウドストレージ!当時、プ

    Dropbox のスケールとか
  • Pinterest のスケール

    V 先生から教えて頂いたので、Instagram 同様 Django/AWS 構成の Pinterest のスケールをメモ。Pinterest はいつものアカウント名が初めて 先取 されたサービスなので、今後使わないと思います。 題に入る前に、Python には The Zen of Python (日語) という思想があります。私はこの思想を Python でのプログラミングだけでなく、インフラの構築の際も意識するように心がけています。"Simple is better than complex" です。Instagram や Pinterest のスケールを見て、この思想がもっと好きになりました。 Instagram はよりシンプルなインフラに更改していくことで、ただスケールするだけでなく、運用や変更のコストも最小限になるように最適化していると思います。結果的に Android

  • Instagram のスケール正攻法 -- Kosei Kitahara's Blog

    Instagram がどこに買収されたとかは他のニュースサイトにお任せして、Django アプリケーションを正攻法でスケールして "成功" してるのがとても興味深いです。現時点で Instagram Engineering で紹介されていることと TechCrunch にも掲載されたスライドから個人的なメモとしてまとめてみました。 Instagram の哲学は シンプルであること オペレーション負荷を最小化すること すべて装備 とのこと。 Instagram は以下の OSS, サービスで構築されているようです。 >>> OS / ホスティング Ubuntu Linux 11.04 を Amazon EC2 にホスティング。以前のバージョンは高トラフィックになると固まる問題があったようです。運用は 3 人。EC2 にホスティングしている理由は、調査結果によるものではなく、"まだ進化途中だか

  • PyPy! - PyPy Advend Calendar

    今年も Advent Calendar の季節が始まりました。この記事は Python を高速化するソリューション PyPy の Advent Calendar の記事です。最初なので、簡単に PyPy の概要と PyPy-ja のご紹介をしたいと思います。 >>>> PyPy ってなんなの? @nati nati ueno PyPyは日語で、おっぱいの意味なんだよ ってUSのpythonやってるエンジニアに教えたら「今日ほどいい日はない!って大喜びしてた」 Oct 06 via webFavoriteRetweetReply PyPy は Python 2.7.1 互換の高速な処理系です。現在、着々と py3k 対応の開発も進んでいます。Python 標準処理系である CPython と比較して以下のような特徴があります。 速度: とにかく速いです。JIT パワーです。CPython

  • ubuntu で nginx から memcache を利用する

    memcached, python-memcache のインストールと起動 sudo apt-get install memcached python-memcache sudo /etc/init.d/memcached start 初期設定だと 11211 番ポートで起動しています。変えたい場合は /etc/memcached.conf で。 memcached とお話してみる (telnet 編) まずは telnet 経由でお話してみる。プロトコルについては official wiki を見ればいいと思います。 telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 'foo' という key で フラグ 0、無期限 (0)、 3 byte のデータ '

  • 高可用性ロードバランサーを nginx + heartbeat で作る

    インストールと設定 パッケージ類のインストール (nginx と heartbeat) ロードバランサーとして利用する nginx と、クラスタリングするための heartbeat をインストールする sudo aptitude install nginx heartbeat nginx の自動起動をやめる sysv-rc-conf などを利用し、各ランレベルでの自動起動を停止しておく ※ sysv-rc-conf をインストールしていない場合は以下でインストールできる sudo sptitude install sysv-rc-conf hosts ファイルに各サーバを登録する sudo vi /etc/hosts 192.168.0.2 lb01 192.168.0.3 lb02 ※ お互い ping 試験 /etc/ha.d/ha.cf の作成 テンプレートがあるので、作業用ディレク

  • fastcgi-nginx vs mod_wsgi-apache

    "mod_python 終了のお知らせ" を受け、もともとリソース不足だった既存の Django アプリケーション郡のサーバをリプレイスすることにしました。リプレイス要件↓ パフォーマンスが高いのにしたい アプリケーションの変更は必要最小限にしたい URL 類は既存のアプリケーションを引継ぐ: 複数プロジェクトをサブディレクトリーで運用していて、 "django.root" で複数プロジェクトを切り分けている 環境設定について これは apache - mod_wsgi が簡単すぎます。 nginx - fastcgi nginx - fastcgi 構成の場合は、init.d への登録、 daemontools を利用 (弊社は mod_python 以外はこれ)。 nginx の設定 /etc/nginx/fastcgi_params fastcgi_read_timeout 180;

  • パーフェクトな Django の設定ファイル

    "DAMON BLOGONS" の、 "The Perfect Django Settings File" という記事で紹介されていた Django の設定 (settings.py) が面白かったので、私が利用しているものと併せて紹介したいと思います。 環境による DEBUG の切り分け 開発環境では "DEBUG = True" と書くと幸せになれます。Django のデバッガーは強力です。ただし、番環境にそのままデプロイしてしまうと・・・。デプロイを楽にするためにも、失敗を防ぐためにも自動的に切り分けるのが望ましいですよね。Damon 氏は以下のようなコードで切り分けているようです。 # Set DEBUG = True if on the production server if socket.gethostname() == 'your.domain.com': DEBUG =

  • Kosei Kitahara's Blog

    やり直し。2010 年の Django Con のスライド より。 Disqus は多くのサイトに組み込まれているサービスのため、メンテナンスによる停止が難しい。 >>> サーバの構成 エッジロードバランサーに HAProxy: heartbeat 構成。レポートが素敵。 HTTP ゲートウェイキャッシュに Varnish Django サーバとして Apache + mod_wsgi: 30 台ぐらい。メモリリークを防ぐために maximum-requests をセット。Ganglia で監視 キャッシュに memcached: 25 台ぐらい PostgreSQL ロードバランサーに HAProxy/ PgBouncer : コネクションプール用。 PostgreSQL: 10 台ぐらい。 Slony-I で非同期レプリケーションとフェイルオーバー。 ログは syslog-ng: pg

    Kosei Kitahara's Blog
  • PyQt でクロスプラットフォームなデスクトップアプリケーションを

    ここ何ヶ月かデスクトップアプリケーションにどっぷりな感じです。パッケージングをもっと簡単にしたい!ということで色々と試行錯誤しておりました。linux, mac はいい感じですが、Windows は・・・ py2exe でフリージングのみしかしていませんでした。配布とインストールは自動解凍書庫、アップデート、アンインストールは・・・。そこで今回 (やっと) 覚えたのが Inno Setup や WiX といった Windows 用のパッケージビルダです。備忘録がてら、Python でのパッケージングをまとめてみました。 パッケージングについて 大きく 2 つのフェーズに分かれています。 フリージング: Python バンドルや他の必要なライブラリーを寄せ集め、実行可能形式にまとめます。 Windows と OS X については以下のライブラリでフリージングします。 Windows 用: p

  • 1