You mentioned imgur, other mentioned CDNs, and your problem seems to focus on social media (IMHO stackoverflow is not primarily a social media platform in the common sense)
Based on this I’d like to add another dimension in the tech decision you have to make: who is the owner of the uploaded media, what are the guarantees you want to provide (e.g. if your social stuff has private content)
The main distinction I make here is:
So my advice would be to start be really trying to flesh out all the criteria you have for the media hosting of your social platform solution. Here’s a quick brain dump, I’m sure you have much more ideas. You can use this as a basic o get started and see my point:
Once you get this list (this could be a very important decision, because of the cost/effort required to change it afterward), add weights on each criterion: is this stuff absolutely required? Something nice? Something you don’t think you‘ll need at all. Ideally, those weights should be agreed on by all stakeholders. One thing I loved in my last tech decision is to use a non-linear scale: each criterion gets a 9, 3, 1 or 0. This scale forces decisions and avoids to get all-grey scores (everything between 3 to 7 on a 0-10 scale). Also if the scores are not well distributed (e.g. you put 75% of 9s), refine it to force decision: if everything has a high priority, then there’s no priority. Take all those 9s and decide which ones of those are most important than other ones ;)
Once this is done, you have a non-biased set of criteria which describe your actual problem and identify your real needs (and not just what you believe your needs are. This list has been reviewed by the team so you have a common understanding of your needs)
Then for each possible solution (build your own, use CDN from provider A, use CDN from provider B, use some image hosting C, ...) put a score for each criterion.
Then if you multiply each score by each weight, you get the actual score for this criteria for each provider, according to your actual needs. Sum up all the weighted score for a given solution, and you get the grand total of that solution according to your priorities. The solution with the highest score is the one which best fits your problem space.
I found this exercize really helpful fo many reasons:
Hope this helps