タグ

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

  • Disqus のスケール - Django 編

    やり直し。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: pgFoui

    Disqus のスケール - Django 編
    Surgo
    Surgo 2013/10/07
    Disqus のスケール - Django 編
  • 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 とか?) や不要なコードがあ

    Surgo
    Surgo 2013/10/07
  • virtualenvwrapper でプロジェクト管理とか

    ちょうど 1 年前にリリースされてた機能だけど、恥ずかしながら知らなかった。@t2y 先生が紹介していらっしゃって、後で試してみようと思ってたのですが...。virtualenvwrapper ってインストール時にグローバルな site-packages に放り込んで、後は。。。って感じ。あんま見直したことなかったのですが、プロジェクト管理以外にも結構色んな機能が追加されてるんですね。mkvirtualenv, workon だけじゃない! ドキュメントを和訳してくださっている @t2y さんに多謝。基的な機能やコマンド (と思いこんでいた mkvirtualenv, workon, etc...) についてはvirtualenv, virtualenvwrapper, pip を使う方法 by @IanMLewis さん, Pythonを取り巻く開発環境 (PyCon JP 2012資

    Surgo
    Surgo 2013/03/05
    久しぶりにブログ書いた 'virtualenvwrapper でプロジェクト管理とか'
  • #PySpa アドベント (23 日目)

    PySpa がどんなイベントかは既に紹介されつくした感じですね。そもそも勉強会は "特定のテーマを共有し理解を深める" という目的のものが多いと思っています。PySpa は、それより "勉強したくなるようなテーマを発見する" ってのが大きいと個人的に思っています。私は 勉強したいテーマを見つける 童心に返って技術を楽しむ 煙草エリアのベンチを温める ために行っています。与えられてばかり、お世話になってばかりです。モチベーションしかり、趣味しかり、仕事しかり。 きっかけ 初参加は、5 年前ですかね?当時はフリーで主に某官公庁と某第三セクターの仕事をしていました。その前は九州の某移動体通信会社。仕事は設計とか、ドキュメンテーションとか、ベンダーコントロール (笑) とかがほとんど。ちょっとだけ Java とか Perl とか書いたりしてました。職業プログラマー。知識がないと仕事出来ないと思って

    Surgo
    Surgo 2012/12/23
    @ymotongpoo 書きました! #PySpa アドベント (23 日目)
  • 谷川岳登山 #kabepy

    Hython 部の方から来ました。こんにちは。今回は Python ボルダリング部 (通称 #kabepy) のアドベントカレンダーにお邪魔させて頂きます。もともと Hython 部は Pythonista が廃村に行くとかいうノリで始まったんですが、廃村が山奥にあることが多く、いつの間にかワンダーフォーゲル部になってしまいました。昔の日は林業大国だったんですね。 今年 (2012年) の登山成果は、 谷川岳 - 一ノ倉 - 茂倉岳縦走 富士登山 槍ヶ岳縦走 浅間山縦走 丹沢縦走 です。#kabepy のアドベントカレンダーなので "ロッククライミングのメッカ" と言われている谷川岳について書かせて頂きます。 谷川岳について 谷川岳 - Wikipedia に詳しく書かれていますが、 剣岳、穂高岳と共に日三大岩場のひとつ 日三大急登 (高低差) がある 遭難による死者数が世界一 (ギ

    谷川岳登山 #kabepy
    Surgo
    Surgo 2012/12/08
    なんか日記になってしまった -> 谷川岳登山 #kabepy
  • Django と Python 3 - #python_adv

    Django-ja の方からきました。こんにちわ。さて、昨日の Ian 先生のブログにも書いてある通り、ついに Django にも格的に Python 3 の足音が近づいてきました。ただし現在 alpha 版が公開されている 1.5 では "実験的" なサポートで、1.6 以降で正式にサポートする予定となっています。あくまでも "実験的" であり、プロダクションでの利用は "非推奨" となっています。Django コミュニティでは、この 1.5 でサポートをテストしてもらい、そのフィードバックを呼びかけています。なのでプロダクションでの利用は 1.6 まで待ちでしょうね。また Python 3 サポートと同時に、Django 1.4 では Python 2.4 がサポートから外れ、1.5 では Python 2.5 がサポートから外れます。これで 1.7 以降から django.util

    Surgo
    Surgo 2012/12/04
    Python アドベントカレンダー 4 日目: Django と Python 3 - #python_adv
  • Netflix のスケール - オートメーション編

    遅くなったけど続編。前回 TODO にしてたスケールアウトのオートメーションあたり。AWS のオートスケールについては、家ドキュメントに一通り書いてあります。その機能を大まかにまとめると、 スケールアウト、バランシングが自動化できる 複数のゾーン (Availability Zone) にまたがっていても一元管理できる (AZRebalance ELB を指定してインスタンスを追加できる 不健全なインスタンスを自動的に入れ替えれる >>> オートスケールの設定 大きく分けると 3 つのステップ CPU やメモリ等のリソースを識別する CloudWatch に各リソースをモニタリングするためのメトリクスを作成する デフォルトでモニタリング可能なリソースが用意されている (デフォルトで用意されているリソース EC2 の CPU 負荷、ディスク I/O、ネットワーク I/O ELB のホスト

    Surgo
    Surgo 2012/09/08
    書いたー Netflix のスケール - オートメーション編
  • Netflix のスケール

    現在日でサービスを提供していないため目にすることは少ないですが、AWS のベストプラクティスと呼び名が高い Netflix のスケールをメモ。ベストプラクティスと言われるだけあって、記事も解説も豊富です。まー規模が桁違い過ぎるので読み飛ばしていたってのが正直なところですが、V 先生ドリブンで資料を読み直しました。AWS の How-to 記事は日語でも山ほどあったので、自社データセンターから AWS へ移行した過程を中心に書きたいと思います。Netflixテクノロジーについては以下を参考にしました。 The Netflix Tech Blog @slideshare @github >>> サービスの規模 Netflix は主に北米で VOD と DVD 郵送レンタルサービスを提供している会社です。ほとんど VOD で、今後 DVD 郵送レンタルは縮小するらしい。AWS の資料も

    Netflix のスケール
    Surgo
    Surgo 2012/08/15
    書いたー "Netflix のスケール"
  • 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 のスケールとか
    Surgo
    Surgo 2012/07/17
    Dropbox のスケールとか
  • 実践 Qt4 プログラミング - O'Reilly

    O'Reilly 様から "実践 Qt4 プログラミング" をご献頂きました。有難うございます!!初めての献ということで小躍りしました。このは入門書ではないので、今から Qt4 を触りたいという方は "入門 Qt4プログラミング - O'Reilly" もあります。 中身をどこまで書いていいのかわかりませんが (w、各章で Web アプリケーションクライアント、メディアプレイヤー、データ・モデルビュアー、エディタ等々幅広いデスクトップアプリについて解説されています。データ・モデルビュアーが厚めです。その各章にアプリケーションの作例 (25 ちょい) があり、丁寧にコードリーディングしていくことができます。サンプルコード量約 2 万行w 読み応え十二分です。Qt は (このがカバーしてる Ver.4.6) 800 近いクラスからなっているので、そんなもんなんでしょうね。 クラスの A

    Surgo
    Surgo 2012/04/22
    とりあえず、お礼と簡単なご紹介だけですが。。 実践 Qt4 プログラミング - O'Reilly
  • Pinterest のスケール

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

    Surgo
    Surgo 2012/04/17
    第2段 -> Pinterest のスケール
  • Instagram のスケール正攻法 -- Kosei Kitahara's Blog

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

    Surgo
    Surgo 2012/04/16
    メモ中: Instagram のスケール正攻法
  • Redmine のリポジトリ全文検索プラグイン

    メリークリスマス!でしたね。今年のクリスマスは ruby を書いて過ごしました。えぇ。ついに ruby デビューです。 作ってたのは Redmine のリポジトリ全文検索プラグインです。会社のプロジェクト管理サイトを Trac から乗り換えるにあたり、これ!ってのが見つけられなかった情弱です。 Trac では、full-text サーチエンジンに Hyper Estraier を使う TracRepoSearch という素晴らしいプラグインを使ってました。ということで、便乗して redmine_reposearch というプラグインを作って見ました。バックエンドも同じく Hyper Estraier です。 個人的に欲しかった機能は、 インストールステップが簡単 プロジェクト、サブプロジェクト、全プロジェクト間で検索できる Redmine のアクセス権管理に対応する MIME タイプを限定

    Surgo
    Surgo 2011/12/27
    Redmine のリポジトリ全文検索プラグイン
  • Python の新ユニットテストフレームワーク (or unittest2)

    これは Python3 Advent Calendar の記事です。夢はテストエンジニアです!ということでユニットテストについて書きます。 Python3 縛りとのことですが、この新ユニットテストフレームワークは Python 3.2 以降と 2.7 以降が対象です。これ以前のバージョンでこの新ユニットテストフレームワークを利用したい場合は、それぞれ unittest2py3k (3 系)、 unittest2 (2 系) というバックポートが用意されています。新ユニットテストは mock や IronPython 等の開発者としても知られている Michael Foord 氏を中心に開発されました。 >>> Python とユニットテストの歴史 Python のユニットテストは、1999 年 xUnit ファミリーの PyUnit として開発され、2001 年に公開された Python

    Surgo
    Surgo 2011/12/14
    Python アドベントカレンダー -> Python の新ユニットテストフレームワーク (or unittest2)
  • PyPy における Python のパフォーマンスチューニング

    これは PyPy Advent Calendar の記事です。PyPyのコアディベロッパーである "Maciej Fijalkowski" 氏のブログ "Analysing python's performance under PyPy" の抄訳+αです。 Python の一般的なパフォーマン解析のモデルは、"プロファイラを実行して、ボトルネックを探し出し、それを最適化するか C で書き直す" ことです。しかし PyPy ではこのアプローチだけでは不十分です。なぜなら、 多くの大規模アプリケーションで、プロファイラはフラットです: PyPy のトランスレーションツールチェーン、Twisted、モダンな Web サーバ等が良い例です ボトルネックを発見したとしても、それが特定の関数内でのみ遅いのか、複数の関数が関係しているのか明確になるわけではありません。どうすれば遅くて、どうすれば速くなる

    PyPy における Python のパフォーマンスチューニング
    Surgo
    Surgo 2011/12/14
    PyPy アドベントカレンダー PyPy における Python のパフォーマンスチューニング
  • 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

    Surgo
    Surgo 2011/12/01
    PyPy! - PyPy Advend Calendar
  • PySide チュートリアル - helloworld から ユニットテストまで

    ここ 2 ヶ月ほど PySide でお仕事してました。もともと PyQt で動いてたアプリケーションだったのですが、けっこう仕様変更が大きかったこともあり、どうせなので PySide で作り直してみることにしました。両フレームワークの差異はこのページにまとまっています (id:doloopwhile さんが翻訳されています)。大きくは、 モジュール名が PyQt から PySide に PyQt の API は QString や QVariants 等 Qt が提供する型と、unicode 等 Python のデータ型の両方をサポートしていましたが、PySide では Python のデータ型のみをサポート 画像等のリソースファイルをバイナリに変換したりするツール類の名称がそれぞれ変更 pyuic4 -> pyside-uic pyrcc4 -> pyside-rcc4 pylupdat

    Surgo
    Surgo 2011/08/23
    PySide チュートリアル - helloworld から ユニットテストまで -- Kosei Kitahara\
  • dotcloud いいね!環境編

    引き続き dotcloud。環境の私的覚書など。途中 (必要になったら書くかも)。 CPU Intel(R) Xeon(R) CPU - X5550 @ 2.67GHz * 4 (/proc/cpuinfo) メモリ 35031888 kB (/proc/meminfo) ディスク Filesystem 1K-blocks Used Available Use% Mounted on rootfs 1056888712 66780428 936421464 7% / none 1056888712 66780428 936421464 7% / /dev/sdh1 1056888712 66780428 936421464 7% /home/dotcloud varrun 4096 32 4064 1% /var/run varlock 1024 0 1024 0% /var/lock s

    Surgo
    Surgo 2011/06/26
    dotcloud いいね!環境編 (書きかけ)
  • dotcloud いいね!jenkins 編

    2012/05/11 更新: こっちの方が簡単 プライベートなコードは github, bitbucket などなどのオンライン VCS にホスティングしてますが、CI もホスティングできないかなーと。そこで dotcloud ですよ!しばらく招待待ちでしたけど、今は普通に signup できるようになってます (beta から cli が結構変わってる...) 。 cli のセットアップとかは家ドキュメントに載ってるし、いろんなブログに載ってます。ただファイル転送が rsync ベースなので win ユーザは cygwin いれたりちょっとめんどい。speier さんが win 用 cli のインストーラを github に公開されてる (多謝) ので使うといいと思います。でも動かないので、パッチを当ててコンパイルしたのを dropbox 上においてます。speier さんのやつをイン

    Surgo
    Surgo 2011/06/26
    dotcloud いいね!jenkins 編
  • 10 分で学ぶ Python のチュートリアル

    "Stavros' Stuff" というサイトに掲載されていた "Tutorial - Learn Python in 10 minutes" という記事の妙訳 翻訳です。これから Python をはじめたいという方向けです。ちょっと分かりやすいように ? 補足情報も付加しちゃってます。ついでに私が Python を書くときに意識していることも付加しちゃってます。付加情報が間違ってたらごめんなさい >< プロパティ Python は強い型付け (strongly typed language)、動的型付け (dynamically typed)、暗黙的型付け (implicitly typed)、大文字小文字を区別 (case sensitive)、オブジェクト指向 (object-oriented) です。 強い型付け言語の特徴: 処理や演算が間違った型の引数を受けとることが出来ない (

    Surgo
    Surgo 2011/03/05
    ブログった "10 分で学ぶ Python のチュートリアル"