Dark launches are usually done two weeks before the actual launch. (without users noticing since there will be no corresponding UI elements). This acts as a real-world stress test and helps expose bottlenecks and other problem areas before a feature is officially launched.
The social graph is very important because it helps establish the relationships between people and now between people and the world around them. social graph&quot; as &quot;the global mapping of everybody and how they're related&quot;.
While logged in, users can connect with friends via these media and post information and updates to their Facebook profile. Developers can use these services to help their users connect and share with their Facebook friends on and off of Facebook and increase engagement for their website or application.
Facebook’s backend services are written in a variety of different programming languages including C++, Java, Python, and Erlang.
Thrift allows for easy exchange of data (variables, objects) between applications written in different languages.
Thrift protocol offers cross language serialization. It combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, C#, Java, Perl, Python, PHP, Erlang, Haskel, Cocoa and Ruby .
Scribe (log server) is a server for aggregating log data streamed in real-time from many other servers. Useful for logging a wide array of data. It is built on top of Thrift.
Cassandra is a database management system designed to handle large amounts of data spread out across many servers. It powers Facebook’s Inbox Search feature and provides a structured key-value store with eventual consistency.
HipHop for PHP is a source code transformer for PHP script code and was created to save server resources. HipHop transforms PHP source code into optimized C++. After doing this, it uses g++ to compile it to machine code.
Unlike other social networks like Friendster, MySpace, and Twitter – all of whom have run into serious scalability issues at different points during their growth. Facebook has been mostly reliable throughout its rise.
A lot of technologies have been developed by Facebook in-house to serve their own needs, for example Cassandra.
Facebook has also widgetized large portions of their application, meaning that widgets can be written in an appropriate language instead of simply using PHP. These widgets interface with the other parts of the application through the use of internal APIs.
Like many other big sites, Facebook uses a Content delivery network (CDN) to help serve static content.
And then of course there is the huge data center Facebook is building in Oregon to help it scale out with even more servers.
Not only is Facebook using (and contributing to) open source software such as Linux, Memcached, MySQL, Hadoop, Hive, and many others, it has also made much of its internally developed software available as open source.
Examples of open source projects that originated from inside Facebook include HipHop, Cassandra, Thrift, Cfengine, Varnish and Scribe.
Facebook has also open-sourced Tornado , a high-performance web server framework developed by the team behind FriendFeed (which Facebook bought in August 2009).
Check out - http://developers.facebook.com/opensource/
The Graph API presents a simple, consistent view of the Facebook social graph, uniformly representing objects in the graph (e.g., people , photos , events , and pages ) and the connections between them (e.g., friend relationships, shared content, and photo tags).
Restful API for accessing data on the Facebook graph.
O auth 2.0 based authentication.
JSON Modeling of objects and connections.
Every object in the social graph has a unique ID. You can access the properties of an object by requesting - https://graph.facebook.com/ID
Alternatively, people and pages with usernames can be accessed using their username as an ID. All responses are JSON objects.