El desarrollo de aplicaciones para Facebook nos requiere una especial optimización de estas para que funcionen en base a dos premisas muy importantes: Seguridad y rapidez.
La rapidez depende de muchos factores, desde la optimización del código hasta la plataforma sobre la que se ejecuta esta, es por esto último que todas las aplicaciones que estamos haciendo son ejecutados con varios servidores con funciones muy específicas.
– Balanceador de carga: Con una conexión a Internet de 100MB/s con un nginx para esta función.
– Servidores de Aplicaciones: Todos son replicas que se crean bajo demanda, permitiendo siempre dar una calidad de servicio óptima independientemente de la carga.
– Servidores de Datos: Los datos están centralizados en estos servidores, que también están replicados. Los datos están, dependiendo de la aplicación en diferentes servidores de bases de datos: SQL (MySQL, PostgreSQL), noSQL ( MongoDB, Membase ).
Las aplicaciones utilizan además un sistema optimizado de caché basado en un sistema de varios nodos de Memcache, reduciendo la carga de consultas a base de datos y a el API de Facebook.
La conectividad es también muy importante, de ahí que la red de Servidores de Aplicaciones tiene una conexión de 100MB/s a internet sólo para acceder a la API de Facebook, y la conectividad interna de todo el ecosistema es con una red GigaEthernet.
Las copias de seguridad se hacen con otra conexión de 100MB al servicio S3 de Amazon.
Evitando de esta forma encontrarnos con “cuellos de botella” en la red.