Если планируете расти, то сразу стоит задуматься над распредленной хранилкой.
Рано или поздно контент перестанет вмещаться на 1 сервер.
Выше уже советовали gluster, но лично я бы его врагу не посоветовал.
Elliptics от яндекса, работает хорошо и быстро, несколько "необычен" в архитектуре внутри, но когда разбираешься, понимаешь зачем это нужно.
В качестве "фронта", от них же уже запилена такая штука как rift которая позволяет реализовать систему бакетов аналогичную S3. Есть еще несколько надстроек позволяющих делать некоторую обработку данных "прямо в хранилище", не таская контент на другие хосты.
Касательно CDN, цены на них и объема хранимого у них контента.
Цены бывают очень гибкие, если посмотрите к примеру на CDN.net, при создании зоны они позволяют часть "дорогих" направлений исключить из обработки.
Касательно объема хранимого на cdn't вашего контента.
cdn77.com к примеру говорит что они хранят у себя до 50Гб вашего кэша, остальное по отдельному прайсу. Опять же они не гарантируют сохранность данных, а лишь позволяют увеличить объем кэша, если ваш активный dataset большего объема.
У остальных cdn провайдеров таже история, только часто эта информация доступна только после обращения в саппорт.
Отдавать напрямую с S3 дорого.
Если мы говорим о дешевых хостингах, таких как hetzner \ datashack \ DO, то отдавать с них не всегда эффективно, если вам важна скорость доставки контента до клиента. Возможно у какого нибудь phoenixnap лучше доставка, но и сервера там дороже.