yusukebe in Yokohama.pm 090909

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    4 Favorites

    yusukebe in Yokohama.pm 090909 - Presentation Transcript

    1. エロサイト管理者の憂鬱Ⅱ - How I build, operate, monetize, and tune up small web applications - yusukebe Yokohama.pm 2009/9/9
    2. yusukebe • Yusuke Wada / 和田裕介 • 1981年12月23日生 • 神奈川県鎌倉市鎌倉山 • 株式会社ワディット代表取締役 • 株式会社オモロキCTO • 「yusukebe the Erogeek!」
    3. yusukebe • Yusuke Wada / 和田裕介 • 1981年12月23日生 • 神奈川県鎌倉市鎌倉山 • 株式会社ワディット代表取締役 • 株式会社オモロキCTO • 「yusukebe the Erogeek!」
    4. “Kailas” • Yet Another BPM Framework • 9/10 13:45 - • ワディットコーポレートトラック • Masanori will talk!
    5. What I’ve done. • About 10 web applications • About 10 ero sites
    6. Total PV 600,000 pv over / 1day
    7. How I BUILD OPERATE MONETIZE TUNE UP these small web applications.
    8. Why I make small web applications? • 楽しい • セルフ・ブランディング • 勉強 • お金 • 全て一人でできる! – 企画・開発・運用・マーケティング・プロモーション
    9. 1. BUILD
    10. Off course using Perl !
    11. Perl • use Catalyst (5.7系) • use Mouse (not Moose) • use DBIx::Class
    12. Catalyst application ディレクトリ構成 yusuke@dev:~/work/myapp/MyApp$ tree . . |-- db | |-- myapp.sql | `-- update_schema.pl |-- cli |-- myapp_web.yml |-- lib |-- root | |-- favicon.ico | `-- static | `-- images |-- script `-- t |-- 01app.t |-- 02pod.t |-- 03podcoverage.t `-- 11_api.t
    13. Catalyst application ディレクトリ構成 yusuke@dev:~/work/myapp/MyApp$ tree lib/ lib/ `-- MyApp |-- API | `-- Role.pm |-- API.pm |-- CLI |-- Schema |-- Schema.pm |-- Web | |-- Controller | | `-- Root.pm | |-- Model | | `-- API.pm | `-- View | `-- TTSite.pm `-- Web.pm
    14. use Mouse in the service layer package Twib::API; use Mouse; with 'Twib::API::Role'; no Mouse; sub get_popular_links { my ( $self, $args, $page, $rows ) = @_; $args ||= {}; $page ||= 1; $rows ||= 20; return $self->schema->resultset('Link') ->search( $args, { order_by => 'tweet_count DESC', page => $page, rows => $rows } ); } 1; __END__
    15. ./db/update_schema.pl #!/usr/bin/perl use strict; use warnings; use FindBin; use DBIx::Class::Schema::Loader qw/make_schema_at/; my $schema_class = "Twib::Schema"; my $connect_info = [ 'dbi:mysql:twib:localhost', 'root', '' ]; make_schema_at( $schema_class, { components => [qw/UTF8Columns InflateColumn::DateTime/], dump_directory => File::Spec->catfile( $FindBin::Bin, '..', 'lib' ), debug => 1, }, $connect_info, ); __END__
    16. たくさん作って自分なりのスタイルを作る こと 素早い開発が可能に!
    17. フロントエンドは ライブラリを有効活用しよう!
    18. JavaScript • jQuery • jQuery UI • Shadowbox
    19. CSS • jQuery UI • YUI
    20. できないHTMLデザインは 他の人の力で解決しよう
    21. HTML Themes • WooThemes – http://www.woothemes.com/ • Open Source Web Design – http://www.oswd.org
    22. 2. OPERATE
    23. Hardware • ec2: 5 instances ( 6 cores ) • 自宅: 1 front / 1 fs / 1 db / 2 app servers Software • debian etch • apache2.2 + mod_perl • MySQL • gearman, Q4M
    24. 自宅サーバールーム(納戸) App / sc1435 Bokete App DB Front App / Q6600 Router FS iSCSI 2 UPS
    25. 自宅 ec2 Front Apache 2.2 Amazon S3 App Apache 2.2 with mod_perl DB FS MySQL 5 NFS
    26. from httpd.conf on Front <VirtualHost *:80> ServerName twib.jp DocumentRoot /home/yusuke/www/pulpsite/Twib/root AllowEncodedSlashes On RewriteEngine On RewriteRule ^/(static/|favicon.ico) - [L] RewriteRule ^/(.*)$ http://192.168.1.22:8102/$1 [P,L] ExpiresActive On <FilesMatch ".(jpg|gif|png|ico|css|js)$"> ExpiresDefault "access plus 365 days" </FilesMatch> </VirtualHost>
    27. from httpd.conf on App KeepAlive Off LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname Off RPAFproxy_ips 192.168.1.11 127.0.0.1 Listen 8102 PidFile /var/run/apache2/twib.pid StartServers 1 MinSpareServers 4 MaxSpareServers 12 MaxClients 24 MaxRequestsPerChild 10000 PerlSwitches -I/home/yusuke/www/pulpsite/Twib/lib SetHandler perl-script PerlHandler Twib::Web
    28. Using S3 as Front-end Server
    29. 3. MONITIZE
    30. 収入源は基本的にアフィリエイト – DTI, sbs, DMM, Amazon, Rakuten, etc. – AdSense • 気楽でいい • 成果報酬 • 継続報酬
    31. 単純だけど基本原理 運用コスト 収入 = アクセス
    32. 運用コストを下げれば儲かる = サーバーの台数を減すんだ = 1 台でまかなえる処理数を増やす = ソフトウェアチューニング!
    33. 4. TUNE UP
    34. Basic tuning • ゆーすけべー日記「YourAVHost その後」 – YourAVHostのページ内に含まれる画像を全て mod_perl の apache でサーブしていた – そこで画像を全て static なコンテンツを扱う apache2 でサーブさせようとしたが、キャッ シュの設定、具体的には mod_expire の設定を何もしていなかった – mod_perl で処理する必要の無い静的コンテンツは mod_perl で扱うな – 静的コンテンツには mod_expire で Expires ヘッダーをつけてキャッシング させよ
    35. use Worker; # on Twib Stream Fecher Reader Q4M use AnyEvent::Twitter::Stream; Web App DB
    36. use HTTP::Engine; yusuke@dev:~/work/XXX/trunk$ tree lib/ lib/ |-- XXX | |-- API.pm | |-- C | | |-- Root.pm | | `-- Video.pm | |-- ModPerl.pm | |-- Router.pm | |-- Schema | | |-- CaptchaImage.pm | | |-- Download.pm | | `-- Video.pm | `-- Schema.pm |-- SimpleApp | |-- Controller.pm | |-- ModPerl.pm | |-- Server.pm | `-- View.pm `-- WWW `-- YourFileHost `-- Break.pm
    37. それPla それPlack でやりなよ Plack HACKS
    38. “Noe” based on Plack
    39. Other tips • use Cache::FileCache; # on ec2 • 意図的なdbの非正規化 • mod_perl の Cow なメモリ共有を増やす
    40. More…
    41. そこで (内緒だよ♡)
    42. おかげで
    43. ルータ交換しました^ ^ ;
    44. 今後 • 継続するサービスを – コンテンツ – 運用 • 更なる省力化 – Front-end レイヤーでの File Cache
    45. Wrap up • Building a small web application is fun. • アプリケーションの最適化は奥が深い • けれども個人で様々な工夫ができる! – 開発 – 運用 – マネタイズ – チューニング
    46. Make your own web applications ! END

    + yusukebeyusukebe, 2 months ago

    custom

    368 views, 4 favs, 6 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 368
      • 0 on SlideShare
      • 1429 from embeds
    • Comments 0
    • Favorites 4
    • Downloads 0
    Most viewed embeds
    • 1417 views on http://yusukebe.com
    • 7 views on http://www.iweb34.com
    • 2 views on http://66.249.89.132
    • 1 views on http://www.hanrss.com
    • 1 views on http://74.125.155.132

    more

    All embeds
    • 1417 views on http://yusukebe.com
    • 7 views on http://www.iweb34.com
    • 2 views on http://66.249.89.132
    • 1 views on http://www.hanrss.com
    • 1 views on http://74.125.155.132
    • 1 views on http://hiroki.jp

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?