En vivoVerificable públicamente

Lo que puede hacer un servidor de 40 €

Más de 4 millones de empresas y decenas de millones de registros. Un solo servidor. Sin microservicios, sin Kubernetes, sin palabras de moda.

Servidor8 vCPU, 16 GB RAM, 40 €/mes
Base de datosPostgreSQL 16 — más de 4 M de empresas, decenas de millones de registros
CachéRedis 7 — TTL por tipo de dato
RuntimeBun + Fastify 5 — TypeScript nativo

Prueba en vivo

100 consultas reales, 20 concurrentes, contra la base de datos de producción

Pulsa el botón para ejecutar 100 consultas reales y medir la capacidad del servidor.

Metodología

Qué medimos

La prueba de capacidad ejecuta 100 consultas reales (búsqueda de empresa, búsqueda de personas, detalles de CUI, IBAN), 20 a la vez, contra la base de datos de producción con más de 4 millones de empresas, representantes y decenas de millones de registros interconectados. La estimación de usuarios concurrentes asume que un usuario real realiza de media 1 solicitud cada 3 segundos (carga de página + tiempo de reflexión).

Cómo medimos

Las funciones de consulta se llaman directamente en el servidor (sin overhead HTTP) y el tiempo se mide con performance.now() — resolución por debajo del milisegundo. Los resultados incluyen solo el tiempo de procesamiento del servidor, no la latencia de red.

Fórmula

usuarios concurrentes = solicitudes/segundo × 3s (tiempo medio entre acciones)

Por qué importa

Un servidor de 40 €/mes con una base de datos bien indexada y Bun como runtime puede servir a miles de usuarios concurrentes. Sin microservicios, sin Kubernetes, sin infraestructura millonaria.

Lo que cuesta en otros proveedores

El mismo servidor (8 vCPU, 16 GB RAM) en distintos proveedores — precios mensuales, sin descuentos

DemoANAF.ro
40/mes
Hetzner Cloud
16/mes
OVHcloud
26/mes
Vultr
44/mes
DigitalOcean
58/mes
AWS EC2
180/mes
Google Cloud
150/mes
Azure
258/mes
Hetzner Cloud: shared CPUAWS EC2: on-demandGoogle Cloud: on-demandAzure: on-demand

Los grandes proveedores en la nube (AWS, Google, Azure) ofrecen servicios gestionados, pero para un portal con una base de datos bien indexada, un VPS simple ofrece el mismo rendimiento a una fracción del coste.

Pruébalo tú mismo

Instala k6 (código abierto, binario único) y ejecuta el script siguiente.

import http from 'k6/http';
import { check, sleep } from 'k6';

// 50 utilizatori virtuali, 30 secunde
export const options = {
  stages: [
    { duration: '10s', target: 50 },
    { duration: '15s', target: 50 },
    { duration: '5s', target: 0 },
  ],
};

const BASE = 'https://demoanaf.ro';
const SEARCHES = ['construct', 'transport', 'consult', 'auto', 'euro'];
const PEOPLE = ['pop', 'ion', 'maria', 'gheorghe'];
const CUIS = [33503335, 4221306, 14399840, 18189442];

function pick(arr) { return arr[Math.floor(Math.random() * arr.length)]; }

export default function () {
  const roll = Math.random();
  let res;

  if (roll < 0.4)
    res = http.get(BASE + '/api/search?q=' + pick(SEARCHES) + '&limit=10');
  else if (roll < 0.65)
    res = http.get(BASE + '/api/company/' + pick(CUIS));
  else if (roll < 0.85)
    res = http.get(BASE + '/api/search/people?q=' + pick(PEOPLE) + '&limit=10');
  else
    res = http.get(BASE + '/api/iban?q=timis');

  check(res, {
    'status 200': (r) => r.status === 200,
    'response < 500ms': (r) => r.timings.duration < 500,
  });

  sleep(0.5);
}

Tus resultados incluirán la latencia de red — los nuestros se miden directamente en el servidor. El script utiliza 50 usuarios virtuales durante 30 segundos, con una pausa de 0,5 s entre solicitudes.