P. 1
Reddit Architecture and Extension Proposal

Reddit Architecture and Extension Proposal

Views: 190|Likes:
Published by footeb
Uploaded from Google Docs
Uploaded from Google Docs

More info:

Published by: footeb on Dec 14, 2012
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less





In this alternative, the recommendation controller itself will compute the link recommendations
for each user. This will happen on the fly when the user goes into their link recommendations
panel. This controller will continue to make use of the closest neighbor calculations to find the
recommendations. As shown in figure A.1, the recommendation engine pulls data from links
and votes, find the recommendations based on the closest neighbor batch, and sends the
results to the user and to the cassandra cache chain. Figure A.2 shows how this approach
maps to the top-level functional component diagram.

The positives for this approach are as follows:
5 Data currency. Since the link recommendations are computed directly when the user
navigates to or refreshes the link recommendation panel, the links are going to be as up-
to-date as possible.
6 Cost. Compared to the other alternatives, there is not as much new hardware required,
and the functionality will be much simpler to design and implement.

The negatives for this approach are as follows:
1 User-perceived performance. The user will need to wait for the calculations to complete
before they can see the contents of the page. Because we expect the calculations to be
time consuming, this will lead to severe page load delays.
2 Scalability. The servers will have to do more processing for this alternative, and the link
recommendations are tightly coupled to the remaining functionality. It is therefore harder
to scale the application. Additionally, it is likely that any given application server will hit
the performance elbow, whereby the server will basically freeze attempting to service its
existing requests.
3 Availability. If the recommendation engine goes down, then it is likely that the entire
application server will go down. This is more likely to happen with the application
servers handling additional burdens. Measured across hundreds of servers, this
indicates greatly reduced availability.
4 Evolvability. As mentioned above, since the recommendation functionality will be tightly
coupled with the existing reddit application logic, it will be much more time consuming
and technically challenging to implement new algorithms, performance enhancements,
and code fixes.

Based upon the above analysis, it is not advisable to choose this option. While it may possibly
be quicker to implement and have better data currency, the risks to performance, scalability,
availability, and evolvability are too great to justify it.


Figure A.1 - The application server approach dataflow diagram


Figure A.2 - Top-level functional view modified for alternative #1

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->