Instagram is a free photo sharing and social networking service for your iPhone that has been an instant success. Growing to 14 million users in just over a year, they reached 150 million photos in August while amassing several terabytes of photos, and they did this with just 3 Instaneers, all on the Amazon stack.

Instagram uses a pastiche of different technologies and strategies. The team is small yet has experience rapid growth riding the crest of a rising social and mobile wave, it uses a hybrid of SQL and NoSQL, it uses a ton of open source projects, they chose the cloud over colo, Amazon services are highly leveraged rather than building their own, reliability is through availability zones, async work scheduling links components together, the system is composed as much as possible of services exposing an API and external services they don't have to build, data is stored in-memory and in the cloud, most code is in a dynamic language, custom bits have been coded to link everything together, and they have gone fast and kept small. A very modern construction.

We'll just tl;dr the article here, it's very well written and to the point. Definitely worth reading. Here are the essentials:

Lessons learned: 1) Keep it very simple 2) Don’t re-invent the wheel 3) Go with proven and solid technologies when you can.

3 Engineers.

Amazon shop. They use many of Amazon's services. With only 3 engineers so don’t have the time to look at self hosting.

do you have some information concerning the basic hardware data of the Instagram server? We have to find out data like CPU, RAM, fixed-disk storage and processor for our "information management" lecture at university.

You can have a private bucket item on S3, still routed through CDN though it won't be visible until you generate a signed key in S3. Each user that's granted permission can receive a signed key. I don't know if that's how they do it specifically though.