Need help scaling photo sharing application
During photo uploading, the application consumes a lot of CPU power as it uses ImageMagick to generate different sizes and Jpegoptim for compression of each photo. The site becomes unusably slow when 3 or 4 users upload images at the same time, and my server CPU usage goes way up. This basically renders the client facing side of the app unusable as well. Upgrading to a higher Linode plan is probably not the long term solution.
Off my mind, I am thinking of running another Linode dedicated to image processing. After processing, I can FTP the files to back to the client facing app server. Then as the app grows, I can add more servers along with a load balancer for dedicated image processing. As for storage, I am guessing I will eventually have to move onto something like Amazon S3.
Is this a feasible approach? Would upgrading to a higher linode plan solve this issue in the short term? Can someone point in the right direction in terms of architecture for scaling this out correctly? for both short term relieve and long term?
Thanks in advance.