This architecture can definitely save a bundle on storage costs but usually it runs into slowness when resizing, or, run into problems with image quality when resizing repeatedly.
22ms for a GraphicsMagick resize is quite fast. I'm curious what the average input and output sizes were used when computing that number?