Social networks talk hidden architectures
Aditya Agarwal, director of engineering, laid out the system that drives this. Many of Facebook's user-facing pages are run off the LAMP stack - Linux, Apache, MySQL, and PHP. For things that don't work well in that stack, the company writes custom services.
PHP is the company's preferred language, he said, because it's a good language for web apps, has a strong community, and it's good for rapid iteration. But PHP is tough to scale for large code bases, so they had develop customizations and optimizations using the memcache distributed memory object caching system.
"I love memcache," he said. "It's what makes our site super quick."
MySQL proved to be quick and reliable for user data - Facebook has suffered no data losses since it started using it, he said. But it made the logical migration of data almost impossible. They handled load balancing by creating a large number of logical instances and spreading them across a number of physical nodes.
The Ning and I
After his work on the the Mosaic browser and having co-created browser pioneer Netscape Communications, net whizz-kid Marc Andreessen went on to co-found social network Ning. The company's infrastructure today powers nearly 610,000 independent social networks. The T. Boone Pickens alternate energy site among them. Pickens drew national attention through his ads during the recent US presidential election. "It's like having 600,000 different instances of front and back end, all working together," senior vice president of product engineer Jay Parikh said.
The site's architecture lets developers get into the code level to modify their networks. Developers can write their own code and run it in the Ning back end or its execution environment. And all the features built in the social network layer are exposed as platform APIs, he said.
Ning uses Java for its back-end systems and PHP for the front end. Ruby, Python, Solaris, and Windows also have roles in the Ning system. And the apps themselves call and invoke hundreds of different REST services. A discovery layer allows services to find each other for dependencies, and a dynamic content store. Among other security measures, Ning has developed some custom tools to provide each social network with its own sandbox within the PHP environment.
Dan Pritchett, chief platform architect at e-business social network Rearden Commerce and a former technical fellow at eBay speaking at QCon, summed up the challenge they all face. "Society has been changed dramatically by the internet," he said. "We're now able to interact with people on a scale that we never could before.
"But the concept of social networks and interconnections between individuals doesn't really scale very well. We've always treated users as individuals, rather than parts of a community. As we change that point of view, we get more and more interesting challenges."®