質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

568閲覧

ECSでSidekiqとの共有ティレクトリの最適解が知りたい

Nero1129

総合スコア130

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2023/01/22 06:16

前提

ECSを使ってRailsアプリケーションの開発を行っています。
CarrierWave Backgrounderで画像アップロードの高速化を行っているのですが…
Sidekiqコンテナの配置がよろしく無く、Railsコンテナが落ちると同時にSidekiqも落ちてしますます。

実現したいこと

CarrierWave Backgrounderの使用に当たって、共有ディレクトリ(キャッシュ)にエフェメラルストレージ 使用中
Sidekiq、Railsともに同じTask内に配置しており、S3への画像のUploadに関してSidekiqに委託してます。

今行いたいこととしては、RailsをSidekiqを違うタスクに切り分け、Railsへのアクセスが殺到しても、Sidekiqのタスクが落ちないようにしたいです。

質問

  1. エフェメラルストレージを違うタスク間でマウントする方法があるのかが知りたい
  2. 出来ないのであれば、その他で安く済ませる方法を知りたい(EFSはちょっと高い…)
  3. CarrierWave Backgrounderのキャッシュ読み取り先をS3にする(パッケージをOverrideしないと無理そう…)

その他の方法でもいいので、最適案があれば教えていただきたいです。

試したこと

CarrierWaveのキャッシュ配置場所をS3にすることは出来たのですが…
Backgrounderのキャッシュ読み取りはローカルしか見てくれないので、難しそうでした
まぁ、もう7年もサポートされてないパッケージなので、Forkして書き換えてもいいのですが…

補足情報(FW/ツールのバージョンなど)

  • Rails 6.1.4.6
  • Sidekiq 6.4.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yagihiro

2023/03/22 16:53

(2ヶ月前の質問なのですでに解決済みだったら無視してください) 質問文に記載いただいている内容だけから判断すると、シンプルにRailsアプリケーションのコンテナにて画像のアップロードを行うとよいのではないか?と思いましたが、それをしなかった理由だったり制約条件だったりの記載があると回答しやすい気がしました。
Nero1129

2023/03/27 10:23

コメントありがとうございます。 一度に複数枚受信する設計でして、トータルで100MB以上の画像を送ってきたりする場合などがあり、画像を圧縮させたりする処理を含めると画面の切り替わりが遅くなるという問題を抱えており、BackgrouderでSidekiqへ委託したかった次第です。 ソースの実装は他のエンジニアが担当しており、パッケージの詳細まで知らず、このような質問をしてしましました。 今は、process_in_backgroundを指定し、一旦アップロードを行い、s3をキャッシュ先として扱い、[column_name]_prosessingの状況を見て、描画をすることで問題を解決しました。
yagihiro

2023/03/27 12:59

なるほど、解決できたようでよかったです!
guest

回答1

0

自己解決

process_in_backgroundを指定し、一旦s3へアップロードを行い、s3をキャッシュ先として扱い、[column_name]_prosessingの状況を見て、描画をすることで問題を解決しました。

一度に複数枚受信する設計で、トータルで100MB以上の画像を送ってきたりする場合などがあり、画像を圧縮させたりする処理を含めると画面の切り替わりが遅くなるという問題を抱えており、BackgrouderでSidekiqへ委託したかった次第です。

ソースの実装は他のエンジニアが担当しており、パッケージの詳細まで知らず、このような質問をしてしましました。

投稿2023/03/27 13:52

Nero1129

総合スコア130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問