Nous subissons une attaque DDoS, mais nous ne faisons rien
- Depuis plusieurs semaines, quelqu’un tente une attaque DDoS.
- Il inonde le serveur de millions de requêtes pour essayer de télécharger le fichier de configuration des millions de fois.
- Rien qu’au cours des 5 derniers jours, plus de 800�0 tentatives de téléchargement ont eu lieu, et le fichier de configuration pèse environ 200 MB par téléchargement.
- L’essentiel du trafic provient de l’UE, en particulier d’Allemagne et du Royaume-Uni.
- L’attaque est toujours en cours au moment où cet article de blog est rédigé.
Ce que nous faisons dans cette situation urgente
- Nous ne bloquons pas les adresses IP de l’attaquant.
- Nous utilisons Cloudflare, mais nous n’activons pas le mode "Under Attack".
- Le CPU du serveur reste presque inactif la majeure partie du temps pendant l’attaque.
- En général, nous ne faisons presque rien.
Pourquoi ?
- Le service peut traiter des milliards de requêtes par mois sans problème et sans coûter cher.
- Nous avons environ 8 services API et des bases de données, et ils peuvent gérer des milliards de requêtes par mois, même sans cache.
- Nous avons Cloudflare et une bande passante illimitée.
Comment est-ce possible ?
- Le design de l’application TablePlus est simple, et cette philosophie s’applique aussi aux services backend, maintenus au minimum.
- Nous n’utilisons pas de services tiers comme Vercel ou Netlify. À la place, nous utilisons des serveurs web sans limites.
- Par le passé, le monolithique créait des goulots d’étranglement à cause de VPS/processeurs faibles, mais aujourd’hui, des VPS puissants peuvent traiter des milliards de requêtes par mois sur une seule instance.
- Nous construisons donc un service monolithique pour chaque application. C’est facile à déployer et à maintenir.
Parlons du monolithique
- Nous avons tendance à tout complexifier, mais ce n’est pas un problème tant qu’on ne subit pas de pression ou de contraintes.
- Nous n’aimons pas la complexité, donc nous choisissons le monolithique. Nous intégrons dans un seul service tout ce dont l’application a besoin.
- Le déploiement est simple. Il ne faut qu’un seul fichier de configuration, un build et un déploiement.
- Avec moins de dépendances, il est plus facile de déboguer et d’identifier les goulots d’étranglement.
Un framework web unique en Go ou Rust, s’il est correctement implémenté, peut traiter des milliards de requêtes par mois
- Nous choisissons des frameworks hautes performances.
- Nous indexons la base de données pour réduire le temps de récupération à mesure que le volume de données augmente.
- Nous séparons la base de données principale de la base de données de logs/d’usage afin que les problèmes de performance n’affectent pas le cœur du métier.
- Nous utilisons un reverse proxy puissant comme Nginx pour traiter et répartir les requêtes vers l’API principale.
- Nous plaçons tout derrière Cloudflare et le configurons correctement.
- Nous utilisons un CDN avec protection DDoS.
- Nous ne plaçons pas de gros fichiers à télécharger sur un VPS sans CDN ni cache.
Parlons du déploiement
- Chez TablePlus, nous simplifions au maximum le processus de déploiement.
- Nous n’utilisons ni Docker, ni Kubernetes, ni conteneurs, et aucune configuration d’environnement n’est nécessaire.
- Nous utilisons des binaires. Ils peuvent être copiés puis exécutés comme processus sur un serveur Linux.
- Nous choisissons Go et Rust. Ce sont des langages hautes performances qui peuvent produire des fichiers binaires pour le déploiement.
Mise à jour
- Vercel nous a contactés et a indiqué disposer de fonctionnalités capables de protéger le site dans ce type de situation.
- Avec le contrôle des dépenses, il est possible de définir une limite de dépenses, et il existe un mode de challenge contre les attaques, similaire au mode "Under Attack" de CF.
L’avis de GN⁺
- Cet article souligne l’importance d’une infrastructure robuste et d’une stratégie de déploiement simplifiée pour maintenir un service stable malgré une attaque DDoS.
- Il montre que l’architecture monolithique peut réduire la complexité, simplifier le déploiement et favoriser l’optimisation des performances.
- L’utilisation efficace des services cloud et d’un CDN pour renforcer la résilience face aux attaques DDoS peut aussi servir de bon exemple pour d’autres entreprises.
- Cette approche apporte notamment des pistes pour construire une infrastructure rentable, en particulier pour les startups en phase initiale ou les PME.
- Cependant, une approche monolithique ne convient pas à tous les systèmes ni à toutes les applications ; il est donc important de choisir une architecture adaptée aux besoins et au contexte de chacun.
1 commentaires
Avis Hacker News
Résumé du premier commentaire :
Résumé du deuxième commentaire :
Résumé du troisième commentaire :
Résumé du quatrième commentaire :
Résumé du cinquième commentaire :
Résumé du sixième commentaire :
Résumé du septième commentaire :
Résumé du huitième commentaire :
Résumé du neuvième commentaire :
Résumé du dixième commentaire :