En directVérifiable publiquement

Ce qu'un serveur à 40 € peut faire

Plus de 4 millions d'entreprises et des dizaines de millions de dossiers. Un seul serveur. Pas de microservices, pas de Kubernetes, pas de buzzwords.

Serveur8 vCPU, 16 Go RAM, 40 €/mois
Base de donnéesPostgreSQL 16 — 4M+ entreprises, des dizaines de millions de dossiers
CacheRedis 7 — TTL par type de données
RuntimeBun + Fastify 5 — TypeScript natif

Test en direct

100 vraies requêtes, 20 simultanées, contre la base de données de production

Appuyez sur le bouton pour lancer 100 vraies requêtes et mesurer la capacité du serveur.

Méthodologie

Ce que nous mesurons

Le test de capacité exécute 100 vraies requêtes (recherche d'entreprise, recherche de personnes, détails CUI, IBAN), 20 à la fois, contre la base de données de production avec plus de 4 millions d'entreprises, représentants et dizaines de millions de dossiers interconnectés. L'estimation des utilisateurs simultanés suppose qu'un utilisateur réel effectue en moyenne 1 requête toutes les 3 secondes (chargement de page + temps de réflexion).

Comment nous mesurons

Les fonctions de requête sont appelées directement sur le serveur (sans surcharge HTTP) et le temps est mesuré avec performance.now() — résolution sous-milliseconde. Les résultats incluent uniquement le temps de traitement serveur, sans la latence réseau.

Formule

utilisateurs simultanés = requêtes/seconde × 3s (temps moyen entre actions)

Pourquoi c'est important

Un serveur à 40 €/mois avec une base de données bien indexée et Bun comme runtime peut servir des milliers d'utilisateurs simultanés. Pas de microservices, pas de Kubernetes, pas d'infrastructure à plusieurs millions d'euros nécessaire.

Ce que ça coûte ailleurs

Le même serveur (8 vCPU, 16 Go RAM) chez différents hébergeurs — tarifs mensuels, sans remises

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

Les hyperscalers (AWS, Google, Azure) proposent des services gérés, mais pour un portail avec une base de données bien indexée, un simple VPS offre les mêmes performances à une fraction du coût.

Testez-le vous-même

Installez k6 (open source, binaire unique) et exécutez le script ci-dessous.

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);
}

Vos résultats incluront la latence réseau — les nôtres sont mesurés directement sur le serveur. Le script utilise 50 utilisateurs virtuels pendant 30 secondes, avec une pause de 0,5s entre les requêtes.