¿Qué lenguajes de programación sugeriría para el back-end de un SAAS vertical financiero a gran escala? Est: 10,000 TB, 1 mil usuarios, actualización en tiempo real.

Como ya señaló Anshul Ranjan, Python es la menor de sus preocupaciones. Primero debe preocuparse por otras cosas: no solo su arquitectura de datos, sino también su arquitectura de base de datos, procesamiento y sistema.

Dado el tamaño de la base de datos y la cantidad de usuarios (aunque no especifique cuántos usuarios CONCURRENTES), esto suena como un sistema que tiene que funcionar sin parar, 24 × 7 y ser relativamente a prueba de balas. Inmediatamente, eso significa una red de área de almacenamiento y un clúster de procesamiento, con mucha replicación y conmutación por error, y probablemente con replicación en un segundo centro de datos. Probablemente necesitará una gran cantidad de fragmentos de base de datos y procesamiento concurrente para manejar cualquier carga de usuario razonable.

A primera vista, esto suena terriblemente como un gran clúster de Oracle o un gran clúster de Hadoop, dependiendo de la naturaleza de sus datos y de los tipos de consultas y análisis que desea ejecutar. Dada una base de datos grande y fragmentada, es probable que desee llevar el primer nivel de análisis al límite, lo que argumenta a favor de Hadoop y una estrategia de reducción de mapas. Para la capa por encima de eso, donde estás haciendo análisis sofisticados, se convierte en una cuestión de qué lenguaje es más expresivo para los tipos de análisis que tienes en mente. Para la capa de interacción del usuario, manejará muchas transacciones, lo que argumenta a favor de algo que maneja bien la concurrencia, que dice Erlang.

En cualquier nivel de uso razonable, los servicios en la nube comienzan a ser muy caros e impredecibles, lo que sugiere que querrá construir su propio clúster (probablemente dos, en centros de datos separados). Y “a prueba de balas” sugiere VMware y una red de área de almacenamiento; o puedes ir con Openstack. Es posible que esté buscando un modelo de nube híbrida: comience en un clúster alojado, pero planee expandir / migrar a su propio hardware.

Y solo una nota de precaución: si está pensando primero en el lenguaje de programación, realmente necesita agregar algunas personas a su equipo que tengan experiencia en la construcción de sistemas realmente grandes.

Elegir un lenguaje de programación para este problema no debería ser su primera preocupación.

Primero debe preocuparse y resolver su arquitectura de datos y definir varios límites deseados y máximos (en todo momento, consultas / seg, mb / seg, latencia, etc.). Trabaje hacia atrás y defina sus costos (¿necesita máquinas grandes pero pocas en número o desea un sistema concurrente de baja carga construido con muchas máquinas pequeñas). Cuáles serían sus límites de CPU y memoria en función de su rendimiento deseado.

Una vez que haya resuelto estos problemas, observe las herramientas que ya han resuelto problemas secundarios y marcos en varios lenguajes de programación que se adaptan a sus necesidades.

Muy probablemente, si ha hecho bien su arquitectura y ha elegido las herramientas correctas y el costo no es un gran factor, las herramientas y bibliotecas de alto rendimiento de python + deberían funcionar

Si planea construir todo desde cero, Python no lo hará.

Java, C ++ definitivamente funciona. Erlang es muy bueno para sistemas concurrentes basados ​​en mensajes.

¿Lenguaje de programación? Deberías usar varios. Pero primero investigue si Apache Spark es apropiado para usted.

Estoy escribiendo algo un poco más pequeño, pero con un propósito completamente diferente. De hecho, tengo problemas para creer que mantendrás los 10 petabytes. Me parece que dicha información tomaría alrededor de 115 días para transferir más de 1 concierto de ethernet si de alguna manera pudiera obtener el 100% de eficiencia. Probablemente quiera revisar su política de retención de datos.

Por supuesto, 1 millón de usuarios también me suena un poco extraño; tomó los servicios legales SaaS en el lugar donde trabajé anteriormente varios años para trabajar desde el inicio en 100 inicios de sesión hasta 100k cuentas de inicio de sesión. Por supuesto, dieron cuentas genéricas a los contratistas porque esas personas iban y venían como el agua. Pero nunca hubo más de 100k usuarios activos a la vez.

En cuanto al tiempo real, ¿real para quién? La mayoría de los análisis del mercado de valores se retrasan 15 minutos y eso es lo suficientemente bueno. De acuerdo, si su plataforma es lo suficientemente rápida, probablemente podría bloquear el mercado, y una ventana de 15 minutos es (lo suficientemente corta) como para hacerlo.

Apache Spark usa Clojure (principalmente), Java y Python, así como algunos otros. También tiene un complemento de transmisión, y AFAICT, escala sin problemas. Buena suerte matando al mercado.

SCALA

Ya está bien integrado en proyectos relacionados con Big Data.

Es muy práctico y probado: no reinventa el weel, se ejecuta en la misma JVM que está en todas partes.

Es funcional: es la clave del paradigma analítico.

Hay muchas herramientas, bibliotecas y marcos existentes que están listos para su conveniencia.

Lo usé, me gustó. Escala bien.