Heyyy you're the one who wrote authlogic! What a blast from the past :) Thank you for your contribution to the Rails community, and congrats on shipping Timber & Vector!
I've been in touch with Grammarly as well [1]. I work for a publishing platform with thousands of writers, editors and contributors. It was very difficult to tell people they can't use Grammarly :/
We use Imgix to power all our clients' images. We just deployed https://github.com/agschwender/pilbox on production as a replacement. We had to hack around a few things, and clearly not as performant, but at least it works.
How does caching work after you resize? I built a similar thing 5 years ago and for what we were doing I think it was just a redis cache where the key was a hash of the source uri and the params for the operation and scaler.
Today I might try to hit the cache from nginx using lua -- and then only call the python thing on a miss.
We put it behind Fastly. We could have used Cloudflare too, but we were racing against time (and angry customers!). We set the cache timeout to 1 hour, and that's pretty much it.
Nice! Why did you choose to implement it as a proxy instead of using it as a primary source and just fetch from S3 on-the-fly while caching the generated image? If capacity is the problem then making it HA should solve that issue?
That's actually what we did. From pilbox's docs:
> It is not intended to be the primary source of images, but instead acts as a proxy which requests images and resizes them as desired.
We fetched from S3 on-the-fly while caching the generated image using a CDN we already had at hand. This is a band-aid for the night (we're in India, it's 2 AM here) and not for handling daytime traffic. We're obviously hoping imgix will fix their issues in the next several hours. Even if not, at least our customers get a degraded experience than a broken one.
Did you try putting something like Varnish in front of it? I think you can do the same with nginx, Varnish is just the first thing that popped up in my mind.
At that time, it wasn't a major part of the website -- and I had redis on-hand, so I just did all this work in a couple small python functions inside of our main webapp and used redis to cache. It worked pretty well. I was only introduced to Varnish some years later and I still haven't used it extensively.