Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
PHP-MLを使用して気軽に機械学習にトライしてみる
Ryo Shibayama
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Yuta Sakurai
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
Quercus on gae公開版
Yusuke Kawabata
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
文樹 高橋
PHPマニュアルの育て方
Masahiro Takagi
2015年4月ペパボテックカンファレンス資料
buty4649
1
of
47
Top clipped slide
10年続いているwebサービスの画像サーバをノーメンテでftpサーバからs3互換のストレージサーバに移行している話
Oct. 3, 2015
•
0 likes
27 likes
×
Be the first to like this
Show More
•
23,376 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Technology
PHPカンファレンスでの発表資料です
Masataka Kono
Follow
Advertisement
Advertisement
Advertisement
Recommended
Laravelのeloquent だけ入れた話
Masataka Kono
2.9K views
•
17 slides
歴史あるWebサービスに携わって2年半の間に起きた事やった事
Masataka Kono
5.8K views
•
34 slides
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Masataka Kono
9K views
•
27 slides
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
14.6K views
•
34 slides
YAPC::Asia 2012 CPANに恩返ししよう
azuma satoshi
935 views
•
45 slides
PHPの拡張モジュールをGoで作る
Yoshio Hanawa
11.2K views
•
18 slides
More Related Content
Slideshows for you
(20)
PHP-MLを使用して気軽に機械学習にトライしてみる
Ryo Shibayama
•
4.9K views
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Yuta Sakurai
•
8.3K views
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
•
17.6K views
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
•
2.5K views
Quercus on gae公開版
Yusuke Kawabata
•
1.6K views
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
文樹 高橋
•
545 views
PHPマニュアルの育て方
Masahiro Takagi
•
1.3K views
2015年4月ペパボテックカンファレンス資料
buty4649
•
8K views
トークイベントいろいろ
高見 知英
•
333 views
php-buildがいかに便利かを力説する
Yoshio Hanawa
•
10.6K views
PHP7の拡張モジュール事情
Yoshio Hanawa
•
9.1K views
たのしい独自フレームワーク
Kenta USAMI
•
8.7K views
bottle.pyをつかったチャットアプリ作成チュートリアル
Satoshi Yamada
•
5.1K views
Requestsで始める5分前帰社
Satoshi Yamada
•
5.4K views
PHP7はなぜ速いのか
Yoshio Hanawa
•
33.5K views
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
•
170.4K views
PHPNGの動向
Yoshio Hanawa
•
9.9K views
zval をダイエットしてみた
Yoshio Hanawa
•
7.7K views
2014 1-19
Satoshi KOJIMA
•
510 views
究極のPHP本完成
Katsuhiro Ogawa
•
2.7K views
Recently uploaded
(20)
TestSIP (1).pdf
DeependraSingh712859
•
2 views
Forguncy製品概要.pptx
フォーガンシー
•
50 views
20230602_enebular_meetup_kitazaki_v1.pdf
Ayachika Kitazaki
•
3 views
量子論.pdf
hiro150493
•
7 views
【DL輪読会】Flow Matching for Generative Modeling
Deep Learning JP
•
759 views
JSONEncoderで詰まった話
とん とんぼ
•
65 views
20230523_IoTLT_vol99_kitazaki_v1.pdf
Ayachika Kitazaki
•
108 views
【DL輪読会】Egocentric Video Task Translation (CVPR 2023 Highlight)
Deep Learning JP
•
55 views
CDLEハッカソン2022参加報告.pdf
SHOIWA1
•
8 views
統計学の攻略_統計的仮説検定の9パターン.pdf
akipii Oga
•
175 views
3Dプリンタって いいね
infinite_loop
•
33 views
初学者のためのプロンプトエンジニアリング実践.pptx
Akifumi Niida
•
409 views
Windows ChatGPT Bing AI.pptx
Atomu Hidaka
•
6 views
MC-800DMT intrusion detector manual
Vedard Security Alarm System Store
•
2 views
ネットワークパケットブローカー市場.pdf
HinaMiyazu
•
7 views
JSTQB_テストプロセスの概念モデル.pdf
akipii Oga
•
178 views
【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
Deep Learning JP
•
13 views
統計学の攻略_正規分布ファミリーの全体像.pdf
akipii Oga
•
176 views
《杨百翰大学毕业证|学位证书校内仿真版本》
d520dasw12
•
2 views
20230516 @Mix Leap Hirohiko_Suwa
Masashi Nakagawa
•
90 views
Advertisement
10年続いているwebサービスの画像サーバをノーメンテでftpサーバからs3互換のストレージサーバに移行している話
10年続いているWebサービスの 画像サーバをノーメンテで FTPサーバからS3互換のストレー ジサーバに移行している話 GMO Pepabo, Inc. Masataka
Kono 2015-10-03 PHPカンファレンス
自己紹介 ● カラーミーショップのエンジニア ● ペパボに入社して2年9ヶ月 ●
Webプログラマー歴も2年9ヶ月 ● PHPerです ● Twitterは @mapyo です ● みんなからは「ぼいらー」
ぼいらー? ぼいらー?
ペパボはあだ名で呼び合う文化がある。 入社するとあだ名どうする?という会話がある。 ペパボに入った時に、最初に開かれた飲み会で過去 に半年間ほどボイラーのメンテナンスをしていたという 経験を話したら、次の日から、 ぼいらーと呼ばれるようになってた。
お話させて頂く内容 ● 講演のタイトルに出てくる用語の説明 ● 移行のイメージ ●
ファイルアクセスを抽象化してくれるライブラリを 探したりPHP5.3対応したり ● 画像サーバとのやり取りを共通化 ● ひたすらリファクタリング ● 具体的なデータの移行の方法 ● ひたすら移行していく
講演のタイトル 10年続いているWebサービスの 画像サーバをノーメンテで FTPサーバからS3互換のストレー ジサーバに移行している話
講演のタイトルに出てくる用語の説明 ● 10年続いているWebサービスとは? ● 画像サーバ(FTPサーバ)とは? ●
S3互換のストレージサーバとは?
10年続いているWeb サービスとは?
カラーミーショップ ● 10年続くネットショップ運営サービス ● 大部分はPHP ●
独自フレームワーク ● Rails(公開api) ● CoffeeScript ● AngularJS ● エンジニア募集中!
画像サーバ(FTPサーバ) とは?
画像サーバ(FTPサーバ)の定義 ● ブラウザでアップした商品画像などのファイル置き場 ● 直接FTPサーバにユーザさんがアクセスする事はない ●
全部で18台。総容量6T弱 ● 4ロールでFTPサーバにアクセス
画像サーバの参照方法 CDN経由で全てアクセスされる
S3互換のストレージサー バとは?
S3互換のストレージサーバ ● 今回の移行プロジェクトと同時に開始 ● 社内用の大統一オブジェクトストレージサービス ●
APIがS3互換で裏側がMogileFS ● S3のAPIが使用可能(全てではない) ● Bayt(ベイト)と名付けられました ● 今回のお話では一先ずS3と思って頂けると。 ※僕は作ってません。 ※この細かい話は出てきません ※詳細は第3回ペパボテックカンファレンスで発表されたスライドをご確認ください。
http://www.slideshare. net/lamanotrama/mogilefsprivate-s3
http://www.slideshare.net/hiboma/mogilefs- private-s3-api
移行のイメージ ● FTPサーバとやり取りしているロジックを1箇所 に集約 ● そのロジックを変更してS3互換サーバに更新が かかるように ※データの移行方法については後ほど説明します。 ※言うのは簡単だけどやるのは大変。。。
ライブラリを探す ● ファイルアクセスを抽象化してくれるライブラリ ● FTPからS3互換サーバに移行した時に同じイン ターフェースになるように。 ●
自作するのはそれなり手間がかかりそうだ なぁ。
Flysystem ● GitHubのスター数は2000以上! ● FTP,
S3だけじゃなくてLocalとかDropboxとか Azureとかいろいろ ● Laravel, Symfony, Zendなど、メジャーなフレー ムワークで簡単に使える仕組みも用意されてい る https://github.com/thephpleague/flysystem
http://flysystem.thephpleague.com/api/
めっちゃ便利そう!!
あ、、、
https://github. com/thephpleague/flysystem/blob/master/comp
PHPのバージョンの壁 ● サービスでメインで動いているPHPのバージョンは5.3系 ● とはいえ、今からPHPのバージョンアップに時間は裂けな い。。 ●
他にもあったけど、機能が足りなかった ● 最初は、このライブラリの実装を参考に5.3でも動くようにし ていた。 ● でも、コピペしてPHP5.3対応してるだけな感じ。。。
FlysystemをPHP5.3で も動くようにしよう! よし!
という事で動くようにしました https://github.com/mapyo/flysystem https://github.com/mapyo/flysystem-aws-s3-v2
やったこと ● PHP5.3でテストを動かす ● テストコードをPHP5.3対応 ●
テストを実行 ● ひたすら直す! ● []→array() ● traitをよしなに対応 ● Travisで一応5.3〜5.6のテストは通っている
画像サーバとのやり取りを共通化! ● Flysystemを使いつつ、画像サーバ特有の処理 を共通化したものを作る ● しかし、4つのロールで画像サーバとやりとりす る処理がある ●
コピペコードにならないように社内用の Composerライブラリに追加。テストも書いた。
ひたすらリファクタリング!!! ● 画面は50画面近く。細かい修正もいれるともっ とあった。 ● グローバル関数やグローバル変数との戦い ●
FTPのコネクションをグローバル変数に入れて いくつかのグローバル関数で使いまわしてたり ● ある程度まとまったグローバル関数たちをまと めてクラス化したり
● 移行の話が出てきてから、リファクタリングが一 通り終った期間が4ヶ月間くらい。 ● 一人で粛々と仕様を決めてリファクタリングしま くってた (こればっかりやってたわけではなくて、作業待ち の時間もありました) リファクタリングは無事終了。
ノーメンテで画像データ を移行する方法
ノーメンテで画像データを移行する方法 1. APPサーバからFTPサーバとS3互換サーバの 両方に更新されるように修正 2. FTPサーバからS3互換サーバへファイルをイン ポートする 3.
FTPサーバになくて、S3互換サーバにあるファ イルをS3互換サーバから消す。 4. CDNの接続先を切り替える(FTP→S3) 5. FTPとS3両方に更新していた処理をやめる
1.FTPサーバとS3互換サーバ両方に更新 追加、更新、削除 (put, delete) 画像サーバにアップする 処理を共通化しているの で、変更箇所は共通化し た部分のみ! 移行を始める時にこの 機能をまずはリリース。
2.FTPからS3サーバにファイルを送る 1. rsyncする 2. インポートする ※一工夫あり
インポートする処理について ● s3cmdを使ってファイルをputする ● 既にファイルがある場合はputをスキップ ●
つまり、S3互換サーバにないファイルのみput する ※ちょっとややこしいのでもう一回戻って説明しま す。 ※1パターンを除いてこれで対応可能
別途対応しないといけないパターン ● rsync〜インポートするまでの時間に、削除され たファイル。 ● S3互換サーバに削除されたファイルが残ってし まうので消す ※もう一回戻りましょう。
3.余分なファイルの削除とチェック ● S3互換サーバからファイルの一覧取得 ● FTPサーバからファイルの一覧取得 ●
2つを比較 ● S3互換サーバにあって、FTPサーバにないもの をS3互換サーバから削除 PHPで削除用スクリプトを作って対応
4.CDNの接続先を切り替える 変更前
4.CDNの接続先を切り替える 変更後
5.画像を同時に更新する処理をやめる
以上でノーメンテで切り 替えできました! やったー!!!
この作業を×18台! ● 1台につき、3日〜4日くらい ● 並列で進められる部分は進めた ●
インポートの処理が負荷の関係で並列で出来なかった ● だいたい3ヶ月くらいかかった。 しかし!
先月、無事に全台移行 が完了しました! やったー!!!1 そして、、、
最後に ● 画像サーバを移行しようという話が出たのが今 年の1月。 ● そこからどうしようか考えて共通処理作ってリ ファクタリングしてデータを移行して終ったのが 9月 ●
長かった。。。。
最後に2 ● ユーザさんとしては全く普段と変わらない ● しかし、裏側の仕組みはガラリと変わっている ●
というのがなんか面白かった ● 大きな障害もなく、無事移行が完了出来たのが 一番よかった!!!
ありがとうございまし た!!! 以上です!!
Advertisement