¿Qué decisiones acertadas de arquitectura de software tomó Facebook? ¿Qué elecciones y decisiones que se tomaron en los primeros días realmente valieron la pena a largo plazo?

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.

Cuando Facebook se expandió a varias escuelas, cada escuela recibió su propia base de datos. Esto resultó ser una muy buena idea cuando Facebook necesitaba fragmentar MySQL horizontalmente porque la suposición de que no todo estaba en una base de datos se incorporó al sistema.

Nunca trabajé en Facebook.

Pero permanecer con un RDBMS como el almacén de datos principal, a pesar de la exageración en torno a los almacenes NOSQL, debería estar a la altura.

Muchas compañías quedan atrapadas en esta exageración y no requisitos sin darse cuenta de la reducción en la velocidad de las funciones: una vez que pasa a NOSQL, su desarrollo de nuevas funciones se vuelve más y más lento.

Parece que siempre se aprecia la velocidad de la característica.

More Interesting

¿Cuáles son algunos conceptos / técnicas de control de calidad rápidos y fáciles que aumentarán nuestro nivel de control de calidad?

Cómo convertirse en un psicópata informático

¿Qué errores cometen los ingenieros de software en sus primeros años?

¿Cuáles son los diversos ámbitos profesionales después de ser retirado de la industria del software de TI con una amplia experiencia de 15-18 años para una persona de clase media promedio?

¿Cuál es la reputación de un B.Tech de Jamia Hamdard (Universidad de Hamdard) en el campo de la informática, en términos de personal docente, entorno del campus y prácticas?

¿Es la ingeniería (informática, software o información) una especialización mejor que la informática?

¿Cuáles son algunas oportunidades de carrera que exploran la intersección entre el desarrollo de software y el cine?

¿La mayoría de los ingenieros de Google trabajan con frecuencia en "problemas difíciles" o pasan la mayoría de los días realizando mantenimiento y desarrollo web de rutina?

¿Es más gratificante ser ingeniero de software o científico de datos?

¿Cómo es el software Foundersuite? ¿Es útil?

Cómo mejorar en la preparación de entradas en mi ágil equipo

¿Cuánto formalismo de planificación de proyectos necesita un equipo de desarrollo de cinco personas?

¿Scrum realmente funciona para equipos de desarrollo de software distribuido?

¿Con qué frecuencia los desarrolladores tienen que tirar el trabajo realizado en sprints anteriores en un entorno ágil?

¿Cuántos desarrolladores y cuánto tiempo tomaría escribir una GUI sólida para Linux desde cero para que coincida con la calidad de Windows y Mac OS?