wfolio: professional image processing for professional photographers
Image optimization for the web can be a resource-consuming endeavor. At the same time, it can be critical for a startup (especially for a bootstrap startup) to quickly implement a safe processing solution that requires minimal financial and engineering investments. For example, wfolio.com is a website builder and unlimited cloud drive for photographers. And, after trying many other solutions, the project finally chose imgproxy Pro for their needs. Let’s see how imgproxy Pro cured their image processing woes.
A journey to better image processing
wfolio aims to pack complex tasks like website creation and photo gallery management into simple and convenient services that photographers can use even if they have zero engineering knowledge.
The service deals with a large volume of photos and supports a number of image processing operations: wfolio boasts an impressive suite of features including custom watermarks, ready-made website template pages with themes specifically designed for photographers, site optimization features for mobile devices and search engines, as well as many more.
But the path to finding the most optimal instrumentation for image optimization wasn’t completely smooth.
Initially, the project’s team used the Carrierwave + ImageMagick bundle. But the limitations became clear almost immediately — they had to permanently monitor ImageMagick versions, update them, and independently write a lot of code. Further, performance and scalability also turned out to be far from great.
They switched the project to a self-written microservice based on Ruby + libvips. This was a leap forward since, with this, the solution became scalable. But there were problems with memory consumption and bugs. Moreover, the team constantly needed to invent hacks in order to bypass libvips restrictions — this required a lot of time and effort.
So, wfolio began to search for an out-of-the-box solution. Initially, they explored SaaS solutions, like Cloudinary or Imgix, but costs were too high for the project.
The team had been familiar with imgproxy for a long time, and even considered deploying it before writing their own microservice. But at that time, imgproxy had yet to release some of the special features the wfolio team needed to solve their issues.
At some point, tired of fixing and polishing their microservice, the team approached imgproxy again. Luckily, by then, imgproxy Pro was on the scene, featuring many useful features including chained processing pipelines. This allows the processing order to be customized and for multiple pipelines to be specified using a single URL (e.g., resize images — crop by specific coordinates — resize again).
And it wasn’t only imgproxy that had gotten an update, the wfolio team also now had a clearer understanding of exactly what their processing requirements were, and in one of those magical moments of synchronicity, imgproxy turned out to be the perfect match!
Deploying imgproxy went very fast and smoothly. First, the team implemented a trial integration with imgproxy open source. After a few days, they wrote an adapter and ran a small part of their traffic through it. The solution proved to be viable, so they gradually began to make the switch, and imgproxy became responsible for all cropping and resizing.
The team used the open source version for about half a year. Then, wfolio experienced rapid growth and required some Pro features, like custom watermarks and video thumbnails, so they made the switch.
The results and numbers
Today, the team uses imgproxy Pro (the Startup plan) for resizing photos (the project needs different image sizes for adaptability), image crops, chained pipelines, adding watermarks to photos, and other photo adjustments. The team also uses video thumbnails, and they plan to try out the auto-quality feature very soon.
The project processes about 20 million image requests per day, and 5 million of these are processed by imgproxy.
The results have been extremely positive. Images are processed quickly and processing resources are used in a reasonable way. But the key thing is the app’s seamless operation and Evil Martians fast response for any error reports. Our image processing headache has been relieved, and now the team is free to focus directly on business tasks instead of engineering.