¿Cuáles son los mejores idiomas del lado del servidor para registrar las acciones de los clientes?

Mi preferencia personal para un lenguaje de programación del lado del servidor es Java. Ha existido durante mucho tiempo, hay algunos marcos realmente buenos disponibles para él (como Spring e Hibernate), y tiene un rendimiento decente para casi cualquier servicio en línea que desee construir. También tiene disponibles bibliotecas de registro decentes (log4j o algo similar). Una gran cantidad de portales web de inversión / banca en línea están escritos en Java del lado del servidor. Lo mismo ocurre con la compra de boletos de avión en línea, muy a menudo implementado en Java en el lado del servidor.

Algunas tiendas de desarrollo de software usan Python para su programación web del lado del servidor. Python es un lenguaje de secuencias de comandos orientado a objetos sólido y tiene algunas bibliotecas muy buenas disponibles. Y lo creas o no, todavía hay algunos lugares que usan Perl como su lenguaje de programación del lado del servidor para servicios web.

Nunca me he encontrado con ningún sitio web (o sitio de servicios web de software como servicio con una interfaz REST o SOAP) que esté escrito en C. Tal sitio probablemente se ejecutaría rápidamente si existiera, pero C es Realmente un nivel demasiado bajo de un lenguaje de programación para hacer desarrollo web. Pero hipotéticamente, aún podría hacerse, y tal vez si alguien desarrollara una biblioteca C realmente sólida y sólida como una roca para facilitar el desarrollo web en C, entonces tal vez podría usarse.

De hecho, me encontré con un sitio web genial (un motor de búsqueda de noticias) que estaba escrito en unas 300 líneas de Lisp. Me impresionó mucho lo compacto / conciso que era el código; implementó algunas funcionalidades altamente complejas, inteligentes y útiles en aproximadamente 300 líneas de código. También era capaz de ejecutarse en un modo de “alta disponibilidad” agrupado. Pero la programación de Lisp no es para todos (incluido yo, me temo; me quedaré con Java).

Hagamos un poco de matemática: 15,000,000 eventos por día, distribuidos uniformemente, equivalen a un poco menos de 200 eventos por segundo. También está la cuestión del crecimiento del tráfico a lo largo del tiempo y la naturaleza de la carga de tráfico en sí, por ejemplo, cuál es el rendimiento máximo en el sistema. Por ejemplo, ¿es mayormente tranquilo, con tormentas repentinas de 4000–10000 eventos por segundo?

Lo más interesante es que dentro de 10 días tendrá 150,000,000 filas en su base de datos, lo que comenzará a crear serios problemas. Necesitará un mecanismo para controlar la retención de datos o su sistema va a sumergirse en el abismo en poco tiempo. Tenga en cuenta, además, que los datos de cookies pueden ser sustanciales, e incluso si está escribiendo solo 1K de datos por fila, terminará colocando al menos 15 GB de datos todos los días en su base de datos. Potencialmente significativamente más cuando se tiene en cuenta el almacenamiento adicional requerido por cosas como índices, tablas de hechos, etc.

Su primera tarea debe ser establecer algunos parámetros operativos en esta cosa, así como comprender a fondo el tipo de consultas que deberán ejecutarse en estos datos, para que pueda decidir si realmente desea almacenar cada evento. Se debe realizar un trabajo de diseño profundo antes de comenzar a seleccionar datos sin procesar directamente en una base de datos relacional.

Aparte de eso, el lenguaje no es particularmente importante. Lo que necesitas es una arquitectura adecuada. Por ejemplo, en lugar de escribir directamente en la base de datos, escriba en un archivo de registro distribuido de alta disponibilidad, con una identificación única. Luego escriba un sistema simple para leer del registro y escríbalo en su base de datos.

Encantado de responder cualquier pregunta de seguimiento.