ADR-01 · Rust a medida en lugar de SuiteCRM
Estado: aceptada · Impacto: alto
Contexto
El documento de requisitos proponía SuiteCRM como plataforma base, con microservicios en Python o PHP para los cálculos, y MySQL como base de datos.
Decisión
Construir el sistema a medida en Rust, conservando el modelo de módulos que proponía el documento.
Por qué
- Los indicadores son el producto. Este proyecto no se juzga por tener fichas de cliente: se juzga por medir bien ocho indicadores contra una línea base. Tener ese cálculo en un binario tipado y con tests es más defendible que repartirlo entre módulos de SuiteCRM y scripts sueltos que nadie verifica.
- El requisito de rendimiento se cumple con holgura y poca memoria. Carga por debajo de 3 segundos, concurrencia y 24/7 en un servidor modesto.
- Operarlo es radicalmente más simple. Un binario y una base, frente a LAMP más microservicios. Para el equipo que se queda con el sistema, eso es la diferencia entre mantenerlo y abandonarlo.
Qué se conserva de la propuesta original
- El modelo de módulos: clientes, tickets, reclamos, garantías, repuestos, KPI.
- La integración con WhatsApp Business.
- La capacidad de importar y exportar para interoperar con SuiteCRM o un ERP.
Coste de la decisión
- No hay comunidad ni plugins. Todo lo que haga falta hay que escribirlo.
- Rust tiene curva. Quien mantenga esto necesita saber Rust, y no es el perfil más común en el mercado local.
- Si el jurado exige literalmente SuiteCRM, esta decisión hay que defenderla con los argumentos de arriba, no esquivarla.
Relacionado: Requisitos no funcionales · Backend