Si pudiera construir una plataforma de contenido (piense en la entrega de noticias) desde cero con el objetivo de escalar a millones de usuarios, ¿qué infraestructura utilizaría?

Sexy es divertido. Pero a menudo sexy significa menos estabilidad, más trabajo y menos certeza. Si mi medio de vida depende de eso, y sé que desde el día cero tiene que escalar a millones de usuarios, no voy a ir con una pila moderna. Voy a ir con una pila probada en batalla, bien explorada y completamente “aburrida” con Java haciendo la mayor parte del trabajo pesado detrás de escena:

  • Java – Bulto de la infraestructura de back-end.
  • Python (Django): para el frontend, con jQuery mezclado en su caso.
  • ApacheServidor web
  • Python – Código de pegamento, automatización
  • MySQL – Base de datos, almacenamiento persistente
  • S3 + CloudFront – Entrega y distribución de contenido
  • EC2 – Alojamiento
  • PayPal – Pagos
  • Memcached : capa de almacenamiento en caché si realmente lo necesito, con suerte no lo haré.

Descartar la pila de Scala al marcarla como “moderna” o “sexy” es equivalente a descartar la pila de Java porque es “fea” y “gorda”. Explicar esto requiere una comparación muy exhaustiva que no puedo hacer en este momento, pero le recomiendo que investigue mucho sobre Scala, antes de utilizar Java.

Sí, pierde un 10% de robustez de inmediato. Pero obtienes mucho valor a cambio:

  1. Una base de código más pequeña y mucho más concisa. Y va más allá del código: compare las principales herramientas de automatización de compilación para ambas pilas: SBT y Maven .
  2. Una comunidad creativa y súper ágil que está cansada de repeticiones (¡Sorpresa! Son en su mayoría veteranos de Java).
  3. Y lo más importante , un paradigma increíble en el que cada nodo que tenga puede fallar siempre y cuando se recupere de forma correcta y automática (Actores, instancias EC2, Conjuntos de réplicas de MongoDB, etc.). Ya no es un monstruo monolítico gigantesco, es una granja de pequeños monstruos bien controlados. Esto está profundamente integrado en todo Scala.
  • Lengua: Scala
  • Base de datos: MongoDB
  • Concurrencia: Akka
  • Marco web (+ ORM + Motor de plantillas): Scalatra + Lift + Scalate
  • Contenedor: embarcadero
  • Hosting: AWS (EC2, S3, etc.)
  • Buscar: Solr
  • Scripting: Python

Abraza el futuro.

Contrataría a un equipo fuerte y les haría elegir las herramientas en las que confían.

Sé qué herramientas usaría para esto, pero eso es irrelevante a menos que sea yo quien haga el trabajo. Como puede ver en la variedad de respuestas aquí, hay muchos conjuntos de herramientas que son plausibles.

Si está construyendo para millones de usuarios, lo que realmente importa es que también está construyendo para una alta confiabilidad operativa y una base de código que durará años. Para conseguir eso, necesitas un equipo experimentado con ambos. Cualquier persona con el tipo de experiencia que necesita tendrá preferencia y un conocimiento profundo de herramientas particulares.

Cualquier ganancia potencial de un conjunto de herramientas diferente al que el equipo confía es más que compensada por los riesgos de insatisfacción y desconocimiento. Habrá oportunidades en el camino para experimentar con nuevas tecnologías y nuevos enfoques. Pero el comienzo de un gran esfuerzo de construcción es el peor momento posible para eso.

More Interesting

¿Cómo implementaría el servicio de noticias de Quora?

Al entrenar una red neuronal, ¿es común tener un tamaño de paso diferente para los parámetros en cada capa y las compensaciones al realizar el Descenso de gradiente?

¿Cuáles son las diferencias entre los métodos de análisis de componentes principales?

¿Cuáles son las mejores mejores bibliotecas para la clasificación? ¿Cómo se comparan entre sí?

¿Cuáles son las principales diferencias entre la regresión logística, la red neuronal y las SVM?

¿Cómo se realiza el aprendizaje automático supervisado cuando sus datos no caben en una sola máquina? ¿Los clasificadores de libros de texto como los clasificadores SVM o Naive Bayes siguen siendo tan importantes o incluso factibles a medida que aumenta el tamaño de sus datos o los algoritmos diferentes se vuelven más populares?

¿Las estadísticas necesitan un cambio de marca en respuesta a la ciencia de datos y el aprendizaje automático, que están superando las estadísticas en términos de relevancia? ¿Por qué o por qué no?

¿Vale la pena dejar mi trabajo de desarrollador de software de USD $ 150K para estudiar el aprendizaje automático y el aprendizaje profundo?

¿Cuál es la mejor manera de crear un conjunto de capacitación para el aprendizaje automático?

¿Cómo se usa el aprendizaje automático en FinTech (P2P, pagos), particularmente fuera de algo trading? ¿Alguien tiene ejemplos específicos en punto a punto, verificación de crédito, pagos, etc.?

¿Cuál es la diferencia entre Hadoop y Teradata aster?

¿Cuál es la mejor biblioteca SVM utilizable desde Python?

¿Es más fácil conseguir un trabajo de aprendizaje automático con maestros de una buena universidad que si solo eres autodidacta?

¿Cuál es el significado intuitivo de una matriz de covarianza?

¿A quién o qué investigación de laboratorio en aprendizaje automático le parece más interesante?