Soumettre la recherche
Mettre en ligne
10年続いているwebサービスの画像サーバをノーメンテでftpサーバからs3互換のストレージサーバに移行している話
•
27 j'aime
•
23,398 vues
Masataka Kono
Suivre
PHPカンファレンスでの発表資料です
Lire moins
Lire la suite
Technologie
Affichage du diaporama
Signaler
Partager
Affichage du diaporama
Signaler
Partager
1 sur 47
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Laravelのeloquent だけ入れた話
Laravelのeloquent だけ入れた話
Masataka Kono
歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事
Masataka Kono
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Masataka Kono
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししよう
azuma satoshi
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
Yoshio Hanawa
ググリワードを探す話
ググリワードを探す話
toru ishikawa
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
k-motoyan
Recommandé
Laravelのeloquent だけ入れた話
Laravelのeloquent だけ入れた話
Masataka Kono
歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事
Masataka Kono
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Masataka Kono
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししよう
azuma satoshi
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
Yoshio Hanawa
ググリワードを探す話
ググリワードを探す話
toru ishikawa
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
k-motoyan
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
Ryo Shibayama
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Yuta Sakurai
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
Quercus on gae公開版
Quercus on gae公開版
Yusuke Kawabata
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
文樹 高橋
PHPマニュアルの育て方
PHPマニュアルの育て方
Masahiro Takagi
2015年4月ペパボテックカンファレンス資料
2015年4月ペパボテックカンファレンス資料
buty4649
トークイベントいろいろ
トークイベントいろいろ
高見 知英
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Yoshio Hanawa
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
Yoshio Hanawa
たのしい独自フレームワーク
たのしい独自フレームワーク
Kenta USAMI
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアル
Satoshi Yamada
Requestsで始める5分前帰社
Requestsで始める5分前帰社
Satoshi Yamada
PHP7はなぜ速いのか
PHP7はなぜ速いのか
Yoshio Hanawa
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
PHPNGの動向
PHPNGの動向
Yoshio Hanawa
zval をダイエットしてみた
zval をダイエットしてみた
Yoshio Hanawa
2014 1-19
2014 1-19
Satoshi KOJIMA
究極のPHP本完成
究極のPHP本完成
Katsuhiro Ogawa
ライブコーディング・Androidのライブラリを作ってみよう
ライブコーディング・Androidのライブラリを作ってみよう
Masataka Kono
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
Masataka Kono
Contenu connexe
Tendances
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
Ryo Shibayama
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Yuta Sakurai
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
Quercus on gae公開版
Quercus on gae公開版
Yusuke Kawabata
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
文樹 高橋
PHPマニュアルの育て方
PHPマニュアルの育て方
Masahiro Takagi
2015年4月ペパボテックカンファレンス資料
2015年4月ペパボテックカンファレンス資料
buty4649
トークイベントいろいろ
トークイベントいろいろ
高見 知英
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Yoshio Hanawa
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
Yoshio Hanawa
たのしい独自フレームワーク
たのしい独自フレームワーク
Kenta USAMI
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアル
Satoshi Yamada
Requestsで始める5分前帰社
Requestsで始める5分前帰社
Satoshi Yamada
PHP7はなぜ速いのか
PHP7はなぜ速いのか
Yoshio Hanawa
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
PHPNGの動向
PHPNGの動向
Yoshio Hanawa
zval をダイエットしてみた
zval をダイエットしてみた
Yoshio Hanawa
2014 1-19
2014 1-19
Satoshi KOJIMA
究極のPHP本完成
究極のPHP本完成
Katsuhiro Ogawa
Tendances
(20)
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返って
Quercus on gae公開版
Quercus on gae公開版
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
PHPマニュアルの育て方
PHPマニュアルの育て方
2015年4月ペパボテックカンファレンス資料
2015年4月ペパボテックカンファレンス資料
トークイベントいろいろ
トークイベントいろいろ
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
たのしい独自フレームワーク
たのしい独自フレームワーク
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアル
Requestsで始める5分前帰社
Requestsで始める5分前帰社
PHP7はなぜ速いのか
PHP7はなぜ速いのか
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHPNGの動向
PHPNGの動向
zval をダイエットしてみた
zval をダイエットしてみた
2014 1-19
2014 1-19
究極のPHP本完成
究極のPHP本完成
En vedette
ライブコーディング・Androidのライブラリを作ってみよう
ライブコーディング・Androidのライブラリを作ってみよう
Masataka Kono
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
Masataka Kono
Phpcon2015
Phpcon2015
Hiroshi Tokumaru
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
Masayuki Ishikawa
Behat Driven Development
Behat Driven Development
Ryo Tomidokoro
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Tomoki Hasegawa
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
ichikaway
PHPの今とこれから2015
PHPの今とこれから2015
Rui Hirokawa
営業・運用を支える "気付ける" 管理画面
営業・運用を支える "気付ける" 管理画面
Masao Maeda
Visual Studio Code #phpcon2015
Visual Studio Code #phpcon2015
Aya Tokura
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
Hikari Fukasawa
PHPデプロイツールの世界
PHPデプロイツールの世界
Yuuki Takezawa
WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側
Yusuke Naka
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
Android lint-srp-practice
Android lint-srp-practice
cch-robo
ビジュアル構文解析
ビジュアル構文解析
ichikaz3
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
Takahiro YAMADA
よくある業務開発の自動化事情 #jjug_ccc #ccc_cd3
よくある業務開発の自動化事情 #jjug_ccc #ccc_cd3
irof N
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
cocodrips
En vedette
(20)
ライブコーディング・Androidのライブラリを作ってみよう
ライブコーディング・Androidのライブラリを作ってみよう
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
Phpcon2015
Phpcon2015
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
Behat Driven Development
Behat Driven Development
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
PHPの今とこれから2015
PHPの今とこれから2015
営業・運用を支える "気付ける" 管理画面
営業・運用を支える "気付ける" 管理画面
Visual Studio Code #phpcon2015
Visual Studio Code #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPデプロイツールの世界
PHPデプロイツールの世界
WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
Android lint-srp-practice
Android lint-srp-practice
ビジュアル構文解析
ビジュアル構文解析
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
よくある業務開発の自動化事情 #jjug_ccc #ccc_cd3
よくある業務開発の自動化事情 #jjug_ccc #ccc_cd3
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
Dernier
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Dernier
(12)
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
10年続いているwebサービスの画像サーバをノーメンテでftpサーバからs3互換のストレージサーバに移行している話
1.
10年続いているWebサービスの 画像サーバをノーメンテで FTPサーバからS3互換のストレー ジサーバに移行している話 GMO Pepabo, Inc. Masataka
Kono 2015-10-03 PHPカンファレンス
2.
自己紹介 ● カラーミーショップのエンジニア ● ペパボに入社して2年9ヶ月 ●
Webプログラマー歴も2年9ヶ月 ● PHPerです ● Twitterは @mapyo です ● みんなからは「ぼいらー」
3.
ぼいらー? ぼいらー?
4.
ペパボはあだ名で呼び合う文化がある。 入社するとあだ名どうする?という会話がある。 ペパボに入った時に、最初に開かれた飲み会で過去 に半年間ほどボイラーのメンテナンスをしていたという 経験を話したら、次の日から、 ぼいらーと呼ばれるようになってた。
5.
お話させて頂く内容 ● 講演のタイトルに出てくる用語の説明 ● 移行のイメージ ●
ファイルアクセスを抽象化してくれるライブラリを 探したりPHP5.3対応したり ● 画像サーバとのやり取りを共通化 ● ひたすらリファクタリング ● 具体的なデータの移行の方法 ● ひたすら移行していく
6.
講演のタイトル 10年続いているWebサービスの 画像サーバをノーメンテで FTPサーバからS3互換のストレー ジサーバに移行している話
7.
講演のタイトルに出てくる用語の説明 ● 10年続いているWebサービスとは? ● 画像サーバ(FTPサーバ)とは? ●
S3互換のストレージサーバとは?
8.
10年続いているWeb サービスとは?
9.
10.
カラーミーショップ ● 10年続くネットショップ運営サービス ● 大部分はPHP ●
独自フレームワーク ● Rails(公開api) ● CoffeeScript ● AngularJS ● エンジニア募集中!
11.
画像サーバ(FTPサーバ) とは?
12.
画像サーバ(FTPサーバ)の定義 ● ブラウザでアップした商品画像などのファイル置き場 ● 直接FTPサーバにユーザさんがアクセスする事はない ●
全部で18台。総容量6T弱 ● 4ロールでFTPサーバにアクセス
13.
画像サーバの参照方法 CDN経由で全てアクセスされる
14.
S3互換のストレージサー バとは?
15.
S3互換のストレージサーバ ● 今回の移行プロジェクトと同時に開始 ● 社内用の大統一オブジェクトストレージサービス ●
APIがS3互換で裏側がMogileFS ● S3のAPIが使用可能(全てではない) ● Bayt(ベイト)と名付けられました ● 今回のお話では一先ずS3と思って頂けると。 ※僕は作ってません。 ※この細かい話は出てきません ※詳細は第3回ペパボテックカンファレンスで発表されたスライドをご確認ください。
16.
http://www.slideshare. net/lamanotrama/mogilefsprivate-s3
17.
http://www.slideshare.net/hiboma/mogilefs- private-s3-api
18.
移行のイメージ ● FTPサーバとやり取りしているロジックを1箇所 に集約 ● そのロジックを変更してS3互換サーバに更新が かかるように ※データの移行方法については後ほど説明します。 ※言うのは簡単だけどやるのは大変。。。
19.
ライブラリを探す ● ファイルアクセスを抽象化してくれるライブラリ ● FTPからS3互換サーバに移行した時に同じイン ターフェースになるように。 ●
自作するのはそれなり手間がかかりそうだ なぁ。
20.
Flysystem ● GitHubのスター数は2000以上! ● FTP,
S3だけじゃなくてLocalとかDropboxとか Azureとかいろいろ ● Laravel, Symfony, Zendなど、メジャーなフレー ムワークで簡単に使える仕組みも用意されてい る https://github.com/thephpleague/flysystem
21.
http://flysystem.thephpleague.com/api/
22.
めっちゃ便利そう!!
23.
あ、、、
24.
https://github. com/thephpleague/flysystem/blob/master/comp
25.
PHPのバージョンの壁 ● サービスでメインで動いているPHPのバージョンは5.3系 ● とはいえ、今からPHPのバージョンアップに時間は裂けな い。。 ●
他にもあったけど、機能が足りなかった ● 最初は、このライブラリの実装を参考に5.3でも動くようにし ていた。 ● でも、コピペしてPHP5.3対応してるだけな感じ。。。
26.
FlysystemをPHP5.3で も動くようにしよう! よし!
27.
という事で動くようにしました https://github.com/mapyo/flysystem https://github.com/mapyo/flysystem-aws-s3-v2
28.
やったこと ● PHP5.3でテストを動かす ● テストコードをPHP5.3対応 ●
テストを実行 ● ひたすら直す! ● []→array() ● traitをよしなに対応 ● Travisで一応5.3〜5.6のテストは通っている
29.
画像サーバとのやり取りを共通化! ● Flysystemを使いつつ、画像サーバ特有の処理 を共通化したものを作る ● しかし、4つのロールで画像サーバとやりとりす る処理がある ●
コピペコードにならないように社内用の Composerライブラリに追加。テストも書いた。
30.
ひたすらリファクタリング!!! ● 画面は50画面近く。細かい修正もいれるともっ とあった。 ● グローバル関数やグローバル変数との戦い ●
FTPのコネクションをグローバル変数に入れて いくつかのグローバル関数で使いまわしてたり ● ある程度まとまったグローバル関数たちをまと めてクラス化したり
31.
● 移行の話が出てきてから、リファクタリングが一 通り終った期間が4ヶ月間くらい。 ● 一人で粛々と仕様を決めてリファクタリングしま くってた (こればっかりやってたわけではなくて、作業待ち の時間もありました) リファクタリングは無事終了。
32.
ノーメンテで画像データ を移行する方法
33.
ノーメンテで画像データを移行する方法 1. APPサーバからFTPサーバとS3互換サーバの 両方に更新されるように修正 2. FTPサーバからS3互換サーバへファイルをイン ポートする 3.
FTPサーバになくて、S3互換サーバにあるファ イルをS3互換サーバから消す。 4. CDNの接続先を切り替える(FTP→S3) 5. FTPとS3両方に更新していた処理をやめる
34.
1.FTPサーバとS3互換サーバ両方に更新 追加、更新、削除 (put, delete) 画像サーバにアップする 処理を共通化しているの で、変更箇所は共通化し た部分のみ! 移行を始める時にこの 機能をまずはリリース。
35.
2.FTPからS3サーバにファイルを送る 1. rsyncする 2. インポートする ※一工夫あり
36.
インポートする処理について ● s3cmdを使ってファイルをputする ● 既にファイルがある場合はputをスキップ ●
つまり、S3互換サーバにないファイルのみput する ※ちょっとややこしいのでもう一回戻って説明しま す。 ※1パターンを除いてこれで対応可能
37.
別途対応しないといけないパターン ● rsync〜インポートするまでの時間に、削除され たファイル。 ● S3互換サーバに削除されたファイルが残ってし まうので消す ※もう一回戻りましょう。
38.
3.余分なファイルの削除とチェック ● S3互換サーバからファイルの一覧取得 ● FTPサーバからファイルの一覧取得 ●
2つを比較 ● S3互換サーバにあって、FTPサーバにないもの をS3互換サーバから削除 PHPで削除用スクリプトを作って対応
39.
4.CDNの接続先を切り替える 変更前
40.
4.CDNの接続先を切り替える 変更後
41.
5.画像を同時に更新する処理をやめる
42.
以上でノーメンテで切り 替えできました! やったー!!!
43.
この作業を×18台! ● 1台につき、3日〜4日くらい ● 並列で進められる部分は進めた ●
インポートの処理が負荷の関係で並列で出来なかった ● だいたい3ヶ月くらいかかった。 しかし!
44.
先月、無事に全台移行 が完了しました! やったー!!!1 そして、、、
45.
最後に ● 画像サーバを移行しようという話が出たのが今 年の1月。 ● そこからどうしようか考えて共通処理作ってリ ファクタリングしてデータを移行して終ったのが 9月 ●
長かった。。。。
46.
最後に2 ● ユーザさんとしては全く普段と変わらない ● しかし、裏側の仕組みはガラリと変わっている ●
というのがなんか面白かった ● 大きな障害もなく、無事移行が完了出来たのが 一番よかった!!!
47.
ありがとうございまし た!!! 以上です!!
Télécharger maintenant