0
エロサイト管理者の憂鬱Ⅱ
- How I build, operate, monetize, and tune up small web applications -



                         yusukebe
 ...
yusukebe
•   Yusuke Wada / 和田裕介
•   1981年12月23日生
•   神奈川県鎌倉市鎌倉山
•   株式会社ワディット代表取締役
•   株式会社オモロキCTO
•   「yusukebe the Eroge...
yusukebe
•   Yusuke Wada / 和田裕介
•   1981年12月23日生
•   神奈川県鎌倉市鎌倉山
•   株式会社ワディット代表取締役
•   株式会社オモロキCTO
•   「yusukebe the Eroge...
“Kailas”
•   Yet Another BPM Framework
•   9/10 13:45 -
•   ワディットコーポレートトラック
•   Masanori will talk!
What I’ve done.

• About 10 web applications
• About 10 ero sites
Total PV



600,000 pv over
     / 1day
How I
      BUILD
     OPERATE
     MONETIZE
     TUNE UP
these small web applications.
Why I make small web applications?
•   楽しい
•   セルフ・ブランディング
•   勉強
•   お金
•   全て一人でできる!
    – 企画・開発・運用・マーケティング・プロモーション
1. BUILD
Off course

using Perl !
Perl
• use Catalyst (5.7系)
• use Mouse (not Moose)
• use DBIx::Class
Catalyst application ディレクトリ構成
yusuke@dev:~/work/myapp/MyApp$ tree .
.
|-- db
|   |-- myapp.sql
|   `-- update_schema.pl
|-...
Catalyst application ディレクトリ構成
yusuke@dev:~/work/myapp/MyApp$ tree lib/
lib/
`-- MyApp
     |-- API
     |   `-- Role.pm
  ...
use Mouse in the service layer
package Twib::API;
use Mouse;
with 'Twib::API::Role';

no Mouse;

sub get_popular_links {
 ...
./db/update_schema.pl
#!/usr/bin/perl

use   strict;
use   warnings;
use   FindBin;
use   DBIx::Class::Schema::Loader qw/m...
たくさん作って自分なりのスタイルを作る
         こと




   素早い開発が可能に!
フロントエンドは
ライブラリを有効活用しよう!
JavaScript
• jQuery
• jQuery UI
• Shadowbox
CSS
• jQuery UI
• YUI
できないHTMLデザインは
他の人の力で解決しよう
HTML Themes
• WooThemes
  – http://www.woothemes.com/
• Open Source Web Design
  – http://www.oswd.org
2. OPERATE
Hardware
• ec2: 5 instances ( 6 cores )
• 自宅: 1 front / 1 fs / 1 db / 2 app servers


                       Software
•   ...
自宅サーバールーム(納戸)

App / sc1435




  Bokete App                            DB



  Front

                                   ...
自宅                              ec2


             Front
           Apache 2.2


                                      Ama...
from httpd.conf on Front

<VirtualHost *:80>
    ServerName twib.jp
    DocumentRoot /home/yusuke/www/pulpsite/Twib/root
 ...
from httpd.conf on App
KeepAlive Off
LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
LoadModule rpaf_module /u...
Using S3 as Front-end Server
3. MONITIZE
収入源は基本的にアフィリエイト

 – DTI, sbs, DMM, Amazon, Rakuten, etc.
 – AdSense


• 気楽でいい
• 成果報酬
• 継続報酬
単純だけど基本原理




運用コスト
          収入
           =
         アクセス
運用コストを下げれば儲かる
         =
   サーバーの台数を減すんだ
         =
1 台でまかなえる処理数を増やす
         =
ソフトウェアチューニング!
4. TUNE UP
Basic tuning
• ゆーすけべー日記「YourAVHost その後」
 – YourAVHostのページ内に含まれる画像を全て mod_perl の apache でサーブしていた
 – そこで画像を全て static なコンテンツを...
use Worker; # on Twib




        Stream
                                                   Fecher
        Reader         ...
use HTTP::Engine;
yusuke@dev:~/work/XXX/trunk$ tree lib/
lib/
|-- XXX
|    |-- API.pm
|    |-- C
|    |   |-- Root.pm
|   ...
それPla


それPlack
でやりなよ




          Plack
          HACKS
“Noe” based on Plack
Other tips
• use Cache::FileCache; # on ec2
• 意図的なdbの非正規化
• mod_perl の Cow なメモリ共有を増やす
More…
そこで
(内緒だよ♡)
おかげで
ルータ交換しました^ ^ ;
今後
• 継続するサービスを
 – コンテンツ
 – 運用
• 更なる省力化
 – Front-end レイヤーでの File Cache
Wrap up
• Building a small web application is fun.
• アプリケーションの最適化は奥が深い
• けれども個人で様々な工夫ができる!
  – 開発
  – 運用
  – マネタイズ
  – チュー...
Make your own web
  applications !
       END
yusukebe in Yokohama.pm 090909
yusukebe in Yokohama.pm 090909
yusukebe in Yokohama.pm 090909
yusukebe in Yokohama.pm 090909
Upcoming SlideShare
Loading in...5
×

yusukebe in Yokohama.pm 090909

5,766

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,766
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "yusukebe in Yokohama.pm 090909"

  1. 1. エロサイト管理者の憂鬱Ⅱ - How I build, operate, monetize, and tune up small web applications - yusukebe Yokohama.pm 2009/9/9
  2. 2. yusukebe • Yusuke Wada / 和田裕介 • 1981年12月23日生 • 神奈川県鎌倉市鎌倉山 • 株式会社ワディット代表取締役 • 株式会社オモロキCTO • 「yusukebe the Erogeek!」
  3. 3. yusukebe • Yusuke Wada / 和田裕介 • 1981年12月23日生 • 神奈川県鎌倉市鎌倉山 • 株式会社ワディット代表取締役 • 株式会社オモロキCTO • 「yusukebe the Erogeek!」
  4. 4. “Kailas” • Yet Another BPM Framework • 9/10 13:45 - • ワディットコーポレートトラック • Masanori will talk!
  5. 5. What I’ve done. • About 10 web applications • About 10 ero sites
  6. 6. Total PV 600,000 pv over / 1day
  7. 7. How I BUILD OPERATE MONETIZE TUNE UP these small web applications.
  8. 8. Why I make small web applications? • 楽しい • セルフ・ブランディング • 勉強 • お金 • 全て一人でできる! – 企画・開発・運用・マーケティング・プロモーション
  9. 9. 1. BUILD
  10. 10. Off course using Perl !
  11. 11. Perl • use Catalyst (5.7系) • use Mouse (not Moose) • use DBIx::Class
  12. 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. 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. 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. 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. 16. たくさん作って自分なりのスタイルを作る こと 素早い開発が可能に!
  17. 17. フロントエンドは ライブラリを有効活用しよう!
  18. 18. JavaScript • jQuery • jQuery UI • Shadowbox
  19. 19. CSS • jQuery UI • YUI
  20. 20. できないHTMLデザインは 他の人の力で解決しよう
  21. 21. HTML Themes • WooThemes – http://www.woothemes.com/ • Open Source Web Design – http://www.oswd.org
  22. 22. 2. OPERATE
  23. 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. 24. 自宅サーバールーム(納戸) App / sc1435 Bokete App DB Front App / Q6600 Router FS iSCSI 2 UPS
  25. 25. 自宅 ec2 Front Apache 2.2 Amazon S3 App Apache 2.2 with mod_perl DB FS MySQL 5 NFS
  26. 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. 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. 28. Using S3 as Front-end Server
  29. 29. 3. MONITIZE
  30. 30. 収入源は基本的にアフィリエイト – DTI, sbs, DMM, Amazon, Rakuten, etc. – AdSense • 気楽でいい • 成果報酬 • 継続報酬
  31. 31. 単純だけど基本原理 運用コスト 収入 = アクセス
  32. 32. 運用コストを下げれば儲かる = サーバーの台数を減すんだ = 1 台でまかなえる処理数を増やす = ソフトウェアチューニング!
  33. 33. 4. TUNE UP
  34. 34. Basic tuning • ゆーすけべー日記「YourAVHost その後」 – YourAVHostのページ内に含まれる画像を全て mod_perl の apache でサーブしていた – そこで画像を全て static なコンテンツを扱う apache2 でサーブさせようとしたが、キャッ シュの設定、具体的には mod_expire の設定を何もしていなかった – mod_perl で処理する必要の無い静的コンテンツは mod_perl で扱うな – 静的コンテンツには mod_expire で Expires ヘッダーをつけてキャッシング させよ
  35. 35. use Worker; # on Twib Stream Fecher Reader Q4M use AnyEvent::Twitter::Stream; Web App DB
  36. 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. 37. それPla それPlack でやりなよ Plack HACKS
  38. 38. “Noe” based on Plack
  39. 39. Other tips • use Cache::FileCache; # on ec2 • 意図的なdbの非正規化 • mod_perl の Cow なメモリ共有を増やす
  40. 40. More…
  41. 41. そこで (内緒だよ♡)
  42. 42. おかげで
  43. 43. ルータ交換しました^ ^ ;
  44. 44. 今後 • 継続するサービスを – コンテンツ – 運用 • 更なる省力化 – Front-end レイヤーでの File Cache
  45. 45. Wrap up • Building a small web application is fun. • アプリケーションの最適化は奥が深い • けれども個人で様々な工夫ができる! – 開発 – 運用 – マネタイズ – チューニング
  46. 46. Make your own web applications ! END
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×