SlideShare ist ein Scribd-Unternehmen logo
1 von 55
桐島、ファイルに
保存するの
やめるってよ
こんにちわ!
運営の皆様
ありがとう
ございます。
自己紹介
@DQNEO
コワイヨー
(´・ω・`)
コワクナイヨー
※インドの
神様です。
普段は
PHPプログラマ
Ethna(で|を)開発
ブログ
本題
桐島、ファイルに
保存するの
やめるってよ
なにを?
何故?
ていうか
何の話?
例えばの話
Web
アプリケーション
    で
• 写真とか
• 添付ファイル
  とか
• PDFとか
ユーザデータの
  保存が
必要になったら
どこに保存しま
すか?
NFSサーバ?
UID,GIDの統一
fstab設定
キャパシティプラニング
いろいろ
めんどくさい
DBサーバ?
テーブル肥大化
ディスク消費
バックアップ困難
いろいろ
めんどくさい
そこで!
Amazon S3
 Simple
 Storage
 Service
インターネット
 ストレージ
コンテンツを
好きなだけ保存
ファイル
というより、
一種のBLOB
オブジェクト
特徴
低価格 10円/GB月
堅牢・高可用
わりと高速
※ステマ
じゃない
HTTP POSTで保存
HTTP GETで取得
EC2以外の
サーバからも
普通に使える
さくらVPSとか
自分のPCからでも
Perlでやるなら
 Amazon::S3
my $s3 = Amazon::S3->new({
   aws_access_key_id => $key,
   aws_secret_access_key => $secret,
   retry        => 3
});

my $bucket = $s3->bucket($bucket_name);

$bucket->add_key_filename($remote_key,
  $local_path,
  { acl_short => 'public-read', }
  )
  or die "canno upload file ";
デモ1
問題点:
大量にアップ
すると
時間がかかる
そこで
Amazon::S3::
FastUploader
並列で
アップロード
(Parallel::ForkManager)
この
LTソンのために
CPAN
公開しますた
http://search.cpan.org/~dqneo/Amazon-S3-FastUploader-0.03/lib/Amazon/S3/FastUploader.pm
デモ2
まとめ
桐島、ファイルに
保存するの
やめるってよ
桐島、ファイルに
保存するの
やめたってよ
※映画は
見てない
ご清聴
ありがとう
ございました

Weitere ähnliche Inhalte

Was ist angesagt?

Raspberry p ionzabbixproxy
Raspberry p ionzabbixproxyRaspberry p ionzabbixproxy
Raspberry p ionzabbixproxy2bo 2bo
 
WordCamp Yokohama 2010 Komori
WordCamp Yokohama 2010 KomoriWordCamp Yokohama 2010 Komori
WordCamp Yokohama 2010 Komorimasaaki komori
 
月刊ライトニングトーク 12月号
月刊ライトニングトーク 12月号月刊ライトニングトーク 12月号
月刊ライトニングトーク 12月号Masaki Yamamoto
 
Microsoft Azure で "無料で" 運営する勉強会申し込みサイト
Microsoft Azure で "無料で" 運営する勉強会申し込みサイトMicrosoft Azure で "無料で" 運営する勉強会申し込みサイト
Microsoft Azure で "無料で" 運営する勉強会申し込みサイトJun-ichi Sakamoto
 
2011 10-satalabo-naaon
2011 10-satalabo-naaon2011 10-satalabo-naaon
2011 10-satalabo-naaonNaoki Okino
 
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pmsphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pmTakeshi Komiya
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)三七男 山本
 
Mongo db勉強会
Mongo db勉強会Mongo db勉強会
Mongo db勉強会otmb
 
EC-CUBE をアップロードしよう!
EC-CUBE をアップロードしよう!EC-CUBE をアップロードしよう!
EC-CUBE をアップロードしよう!Kentaro Ohkouchi
 
UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説Yuichi Yoshida
 
pbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックスpbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックスTsuyoshi Yamada
 
How to spread reST and Sphinx
How to spread reST and SphinxHow to spread reST and Sphinx
How to spread reST and SphinxTakanori Suzuki
 
ダイナミックDNSとは
ダイナミックDNSとはダイナミックDNSとは
ダイナミックDNSとはTakeshi Kabu
 
無料でマストドンインスタンスを運用するには
無料でマストドンインスタンスを運用するには無料でマストドンインスタンスを運用するには
無料でマストドンインスタンスを運用するにはyowasou
 
スクリーンリーダーと点字ディスプレイの話
スクリーンリーダーと点字ディスプレイの話スクリーンリーダーと点字ディスプレイの話
スクリーンリーダーと点字ディスプレイの話Takuya Nishimoto
 

Was ist angesagt? (20)

Raspberry p ionzabbixproxy
Raspberry p ionzabbixproxyRaspberry p ionzabbixproxy
Raspberry p ionzabbixproxy
 
WordCamp Yokohama 2010 Komori
WordCamp Yokohama 2010 KomoriWordCamp Yokohama 2010 Komori
WordCamp Yokohama 2010 Komori
 
月刊ライトニングトーク 12月号
月刊ライトニングトーク 12月号月刊ライトニングトーク 12月号
月刊ライトニングトーク 12月号
 
Microsoft Azure で "無料で" 運営する勉強会申し込みサイト
Microsoft Azure で "無料で" 運営する勉強会申し込みサイトMicrosoft Azure で "無料で" 運営する勉強会申し込みサイト
Microsoft Azure で "無料で" 運営する勉強会申し込みサイト
 
2011 10-satalabo-naaon
2011 10-satalabo-naaon2011 10-satalabo-naaon
2011 10-satalabo-naaon
 
U boot-for-zynqberry
U boot-for-zynqberryU boot-for-zynqberry
U boot-for-zynqberry
 
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pmsphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
 
Mongo db勉強会
Mongo db勉強会Mongo db勉強会
Mongo db勉強会
 
EC-CUBE をアップロードしよう!
EC-CUBE をアップロードしよう!EC-CUBE をアップロードしよう!
EC-CUBE をアップロードしよう!
 
UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説
 
pbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックスpbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックス
 
How to spread reST and Sphinx
How to spread reST and SphinxHow to spread reST and Sphinx
How to spread reST and Sphinx
 
ダイナミックDNSとは
ダイナミックDNSとはダイナミックDNSとは
ダイナミックDNSとは
 
Dropbox
DropboxDropbox
Dropbox
 
無料でマストドンインスタンスを運用するには
無料でマストドンインスタンスを運用するには無料でマストドンインスタンスを運用するには
無料でマストドンインスタンスを運用するには
 
Pbox on softlayer
Pbox on softlayerPbox on softlayer
Pbox on softlayer
 
Nas
NasNas
Nas
 
スクリーンリーダーと点字ディスプレイの話
スクリーンリーダーと点字ディスプレイの話スクリーンリーダーと点字ディスプレイの話
スクリーンリーダーと点字ディスプレイの話
 
Word bonch lt
Word bonch ltWord bonch lt
Word bonch lt
 

Andere mochten auch

やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013DQNEO
 
LT @YAPC::Asia 2012 LTThon
LT @YAPC::Asia 2012 LTThonLT @YAPC::Asia 2012 LTThon
LT @YAPC::Asia 2012 LTThonmaka2donzoko
 
Gitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEOGitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEODQNEO
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 
グローバル時代に求められるキャリアと生き方(梶山さん)
グローバル時代に求められるキャリアと生き方(梶山さん)グローバル時代に求められるキャリアと生き方(梶山さん)
グローバル時代に求められるキャリアと生き方(梶山さん)MKT International Inc.
 
20140822 営業の泥臭い話 dev_love現場甲子園2014西日本大会懇親会lt
20140822 営業の泥臭い話 dev_love現場甲子園2014西日本大会懇親会lt20140822 営業の泥臭い話 dev_love現場甲子園2014西日本大会懇親会lt
20140822 営業の泥臭い話 dev_love現場甲子園2014西日本大会懇親会ltMaiko Nakajima
 
plenv時代のImageMagick && Image::Magickインストール方法
plenv時代のImageMagick && Image::Magickインストール方法plenv時代のImageMagick && Image::Magickインストール方法
plenv時代のImageMagick && Image::Magickインストール方法DQNEO
 
Gitの内部構造を 調べてみたら・・・
Gitの内部構造を 調べてみたら・・・Gitの内部構造を 調べてみたら・・・
Gitの内部構造を 調べてみたら・・・DQNEO
 
バックアップとリストアの基礎
バックアップとリストアの基礎バックアップとリストアの基礎
バックアップとリストアの基礎Kazuki Takai
 
Dependency Injection and Pimple
Dependency Injection and PimpleDependency Injection and Pimple
Dependency Injection and PimpleDQNEO
 
S06 Azure バックアップを利用した Microsoft Azure 仮想マシンのバックアップ
S06 Azure バックアップを利用した Microsoft Azure 仮想マシンのバックアップS06 Azure バックアップを利用した Microsoft Azure 仮想マシンのバックアップ
S06 Azure バックアップを利用した Microsoft Azure 仮想マシンのバックアップMicrosoft Azure Japan
 
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果wwNozomi Ito
 
営業活動を分析する(詳細)
営業活動を分析する(詳細)営業活動を分析する(詳細)
営業活動を分析する(詳細)inoueco
 
グリーを支えるソーシャルコーディングのすべて
グリーを支えるソーシャルコーディングのすべてグリーを支えるソーシャルコーディングのすべて
グリーを支えるソーシャルコーディングのすべてKoichiro Ohba
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドktateish
 

Andere mochten auch (20)

やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
 
LT @YAPC::Asia 2012 LTThon
LT @YAPC::Asia 2012 LTThonLT @YAPC::Asia 2012 LTThon
LT @YAPC::Asia 2012 LTThon
 
Gitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEOGitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEO
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
グローバル時代に求められるキャリアと生き方(梶山さん)
グローバル時代に求められるキャリアと生き方(梶山さん)グローバル時代に求められるキャリアと生き方(梶山さん)
グローバル時代に求められるキャリアと生き方(梶山さん)
 
夏の暑さに耐えられるか
夏の暑さに耐えられるか夏の暑さに耐えられるか
夏の暑さに耐えられるか
 
20140822 営業の泥臭い話 dev_love現場甲子園2014西日本大会懇親会lt
20140822 営業の泥臭い話 dev_love現場甲子園2014西日本大会懇親会lt20140822 営業の泥臭い話 dev_love現場甲子園2014西日本大会懇親会lt
20140822 営業の泥臭い話 dev_love現場甲子園2014西日本大会懇親会lt
 
plenv時代のImageMagick && Image::Magickインストール方法
plenv時代のImageMagick && Image::Magickインストール方法plenv時代のImageMagick && Image::Magickインストール方法
plenv時代のImageMagick && Image::Magickインストール方法
 
Gitの内部構造を 調べてみたら・・・
Gitの内部構造を 調べてみたら・・・Gitの内部構造を 調べてみたら・・・
Gitの内部構造を 調べてみたら・・・
 
S11 StorSimple 入門
S11 StorSimple 入門S11 StorSimple 入門
S11 StorSimple 入門
 
バックアップとリストアの基礎
バックアップとリストアの基礎バックアップとリストアの基礎
バックアップとリストアの基礎
 
Dependency Injection and Pimple
Dependency Injection and PimpleDependency Injection and Pimple
Dependency Injection and Pimple
 
LTのネタLT
LTのネタLTLTのネタLT
LTのネタLT
 
S06 Azure バックアップを利用した Microsoft Azure 仮想マシンのバックアップ
S06 Azure バックアップを利用した Microsoft Azure 仮想マシンのバックアップS06 Azure バックアップを利用した Microsoft Azure 仮想マシンのバックアップ
S06 Azure バックアップを利用した Microsoft Azure 仮想マシンのバックアップ
 
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
 
営業活動を分析する(詳細)
営業活動を分析する(詳細)営業活動を分析する(詳細)
営業活動を分析する(詳細)
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
 
グリーを支えるソーシャルコーディングのすべて
グリーを支えるソーシャルコーディングのすべてグリーを支えるソーシャルコーディングのすべて
グリーを支えるソーシャルコーディングのすべて
 
Github of project
Github of projectGithub of project
Github of project
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
 

桐島、ファイルに 保存するの やめるってよ