Una decisión temprana significativa fue hacer que el nivel web fuera completamente apátrida. Cada solicitud HTTP que envíe a Facebook puede llegar a un servidor web diferente; Esto es diferente a algunos sistemas que fijan una sesión particular a un servidor particular. Si bien las sesiones ancladas (también conocidas como pegajosas) tienen algunos beneficios, la apatridia como elemento central de diseño significa que la arquitectura es inherentemente resistente a la falla de un nodo web en particular y puede equilibrar la carga sin la necesidad de ninguna lógica para mover a un usuario sesión de un servidor a otro.
Vale la pena mencionar otra decisión, aunque posiblemente se trata más de la asignación de recursos de ingeniería que de la arquitectura. Facebook invirtió temprano en mejorar algunos de los componentes de código abierto que eran partes clave de su infraestructura, lo que resultó en mejoras significativas en el rendimiento y reducciones de costos. Por ejemplo, mejoramos dramáticamente la eficiencia de Memcached y lo modificamos para usar múltiples núcleos de CPU, lo que significa que podríamos atender más solicitudes de caché con un número determinado de servidores. Todos nuestros cambios fueron revertidos a la distribución principal de código abierto. El tiempo de ejecución de PHP y el servidor MySQL fueron otros objetivos iniciales del trabajo de ingeniería de Facebook (y Facebook continúa trabajando en MySQL hoy). Muchas nuevas empresas usan código abierto, pero pocas trabajan para mejorarlo , y ese trabajo vale tanto directamente como en forma de una comprensión más profunda de los componentes centrales de la infraestructura.
- ¿Por qué se llaman las actividades de Umbrella como tales en Software Process Framework?
- ¿Cuáles son las ventajas y desventajas de dividir los problemas de soporte técnico entre los ingenieros en un inicio de software?
- ¿Deberíamos invertir en Angular o Vue para un proyecto a largo plazo?
- ¿Qué deben saber los ingenieros de software principiantes sobre ingeniería de software?
- Cómo construir mi propio software