Arquitectura de LinkedIn

Me ha resultado interesante ver como la arquitectura de una red social como LinkedIn (con 22 millones de usuarios), se basa plenamente en Solaris+Java. El post que aparece en CookiesAreForClosers recopila información de 2 sesiones que ha dado la gente de LinkedIn en JavaOne2008:
A modo de resumen (más info en el post original)

Estadísticas de uso

  • 22 millones de miembros
  • Más de 4 millones de visitantes únicos al mes
  • 40 millones de páginas vistas al día
  • 2 millones de búsquedas al día
  • 250.000 invitaciones mandadas cada día
  • 1 millón de respuestas posteadas
  • 2 millones de mensajes de e-mail mandados al día
Software
A día de hoy la arquitectura de LinkedIn se organiza en torno a servicios que aglutinan partes consistentes de la lógica de negocio. Las WebApp todavía presentan la interfaz al usuario, pero ahora llaman a los servicios para manipular los perfiles, grupos, etc.

En el post original y las presentaciones hechas en JavaOne 2008 se profundiza bastante en la arquitectura. Casi lo que más interesante me parece son los consejos que dan cara a la escalabilidad:

  • No puedes usar solo una base de datos. Utiliza muchas, particionándolas horizontal y verticalmente.
  • Dados los particionados, olvídate acerca de la integridad de los JOINs interdominios.
  • Olvidate del 100% de la integridad de los datos.
  • A larga escala, los costes son un gran problema: hardware, bases de datos, licencias, almacenamiento, energía, etc.
  • Una vez eres “importante”, los spammers y otros “piratillas” son una jodienda
  • ¡Cache!
  • Utiliza flujos asíncronos.
  • La generación de informes y el análisis de los mismos es algo retador; considéralos una pieza fundamental a la hora de diseñar el sistema.
  • Espera que el sistema falle.
  • No subestimes tu trayectoria de crecimiento.