Architecting Backend for a Social Product

This is aimed towards taking you through key architectural decisions which will make a social application a true next generation social product. The proposed changes addresses following attributes; a) availability b) reliability c) scalability d) performance and flexibility towards extensions (not modifications)
Goals
a) Ensuring that user’s content is easily discoverable and is available always.
b) Ensuring that the content pushed is relevant not only semantically but also from user’s device perspective.
c) Ensuring that the real time updates are generated, pushed and analyzed.
d) Eye towards saving user’s resources as much as possible.
e) Irrespective of server load, user’s experience should remain intact.
f) Ensuring overall application security
In summary we want to deal with an amazing challenge, where we must deal with a mega sea of ever expanding user generated contents, increasing number of users, and a constant stream of new items, all while ensuring an excellent performance. Considering the above challenge it is imperative that we must study certain key architectural elements which will influence the over system design. Here are the few key decisions & analysis.