0
votes

I'm developing an application that uses (lots) of image processing.

The general overview of the system is:

  1. User Uploads photos to server (Raw photo, with FULL resolution)
  2. Server Fetches new photos, and apply image processing on them
  3. Server resizes image and serves those photos (delete the full one?)

My current situation is that I have almost no expertise in image hosting nor large data uploading and managing.

What I plan to do is:

  1. User uploads directly from Browser to Amazon S3 (Full Image)
  2. User notifies my server, and add the uploaded file to the Queue for my workers
  3. When worker receives a job, it downloads the full image (from Amazon), and process it. Updates database, and then re-uploads the image to Cloudinary (resize in server?)
  4. Use the hosted image on Cloudinary from now on.

My doubts are regarding the process time. I don't want to upload it directly to my server, because it would require a lot of traffic and create a bottleneck, so using Amazon S3 would reduce that. And hosting images with Amazon would not be that good, since they don't provide specific API's to deal with images as Cloudinary does.

Working with separate servers for uploading, and only triggering my server when upload is done by the browser is ok? Using Cloudinary for hosting images is also something that makes sense? Sending to Amazon, instead of my own server (direct upload to my server) should be avoided?

(This is more a guidance/design question)

1

1 Answers

0
votes

Why wouldn't you prefer uploading directly to Cloudinary? The image can be uploaded directly from the browser to your Cloudinary account, without any further servers involved. Cloudinary then notifies you about the uploaded image and its details, then you can perform all the image processing in the cloud via Cloudinary. You can either manipulate the image while keeping the original, or you may choose to replace the original with the manipulated one.