Fromto , Facebook typically goes it alone and builds everything in-house as much as possible.
The latest endeavor being highlighted by the world's largest social network is no different.
Meet Autoscale, designed for deployment to web clusters to boost the energy efficiency of its software infrastructure.
With more than 1.28 billion users and counting, Facebook's web clusters already receive billions of page requests daily, which only put more burden on servers.
This becomes exhausting on the software infrastructure especially during peak hours, which in turn could hamper site performance — both of which are problems that could hurt Facebook's bottom line in the long run if they're not careful.
Qiang Wu, an infrastructure software engineer at Facebook, said in a blog post on Friday morning that the development of Autoscale followed a number of other ideas first, including power modeling and profiling, peak power management, and energy-proportional computing.
Autoscale, however, changes how each load is distributed to the different web servers in a cluster, Wu explained.
The basic idea of Autoscale is that instead of a purely round-robin approach, the load balancer will concentrate workload to a server until it has at least a medium-level workload. If the overall workload is low (like at around midnight), the load balancer will use only a subset of servers. Other servers can be left running idle or be used for batch-processing workloads.
Though the idea sounds simple, it is a challenging task to implement effectively and robustly for a large-scale system.
Autoscale has been deployed to production web clusters, and the engineering team assessed the results have been successful thus far with 10 to 15 percent average power savings over a 24-hour period — sometimes as much as 27 percent around midnight.
The Facebook engineering team acknowledged that there was zero power savings around peak hours still, but they did employ other energy efficiency tactics as well, such as letting inactive servers run idle or re-purpose the inactive capacity for batch-processing tasks.
Image via Facebook