Wir werden per DDoS angegriffen, tun aber nichts
- Seit mehreren Wochen versucht jemand einen DDoS-Angriff.
- Der Server wird mit Millionen von Requests überflutet, um die Konfigurationsdatei millionenfach herunterzuladen.
- Allein in den letzten 5 Tagen wurde mehr als 800.000 Mal ein Download versucht; die Konfigurationsdatei ist pro Download etwa 200 MB groß.
- Der Großteil des Traffics kommt aus der EU, insbesondere aus Deutschland und dem Vereinigten Königreich.
- Der Angriff läuft auch in diesem Moment weiter, während dieser Blogbeitrag geschrieben wird.
Was wir in dieser angespannten Situation tun
- Wir blockieren die IP-Adressen des Angreifers nicht.
- Wir nutzen Cloudflare, aktivieren aber den Modus „Under Attack“ nicht.
- Die Server-CPU ist während des Angriffs die meiste Zeit nahezu im Leerlauf.
- Im Grunde tun wir fast gar nichts.
Warum?
- Der Service kann problemlos mehrere Milliarden Requests pro Monat verarbeiten und kostet nicht viel.
- Es gibt etwa 8 API-Services und Datenbanken, die auch ohne Caching mehrere Milliarden Requests pro Monat verarbeiten können.
- Wir haben Cloudflare und unbegrenzte Bandbreite.
Wie ist das möglich?
- Das Design der TablePlus-App ist schlicht, und diese Philosophie gilt auch für die bewusst minimal gehaltenen Backend-Services.
- Es werden keine Drittanbieter-Dienste wie Vercel oder Netlify verwendet. Stattdessen kommen Webserver ohne Begrenzungen zum Einsatz.
- Früher wurde ein Monolith durch schwache VPS/Prozessoren zum Flaschenhals, aber heute können leistungsstarke VPS auf einer einzelnen Instanz mehrere Milliarden Requests pro Monat verarbeiten.
- Deshalb wird für jede App ein monolithischer Service gebaut. Das ist einfach bereitzustellen und zu warten.
Sprechen wir über Monolithen
- Es gibt die Tendenz, alles kompliziert zu machen, aber das ist kein Problem, bis man unter Druck oder an Grenzen gerät.
- Weil wir Komplexität nicht mögen, entscheiden wir uns für Monolithen. Alles, was die App braucht, wird in einen einzigen Service integriert.
- Das Deployment ist einfach. Es braucht nur eine einzige Konfigurationsdatei sowie Build und Deployment.
- Durch weniger Abhängigkeiten lassen sich Fehler leichter debuggen und Flaschenhälse einfacher identifizieren.
Ein einzelnes Web-Framework in Go oder Rust kann bei korrekter Implementierung mehrere Milliarden Requests pro Monat verarbeiten
- Es wird ein High-Performance-Framework gewählt.
- Die Datenbank wird indiziert, um die Abrufzeiten mit wachsendem Datensatz zu verkürzen.
- Die Hauptdatenbank wird von der Log-/Nutzungsdatenbank getrennt, damit Performance-Probleme das Kerngeschäft nicht beeinträchtigen.
- Ein leistungsfähiger Reverse Proxy wie Nginx verarbeitet und verteilt Requests an die Kern-API.
- Alles läuft hinter Cloudflare und ist passend konfiguriert.
- Es wird ein CDN mit DDoS-Schutz verwendet.
- Große Download-Dateien werden nicht ohne CDN oder Caching auf einem VPS abgelegt.
Sprechen wir über Deployment
- Bei TablePlus wird der Deployment-Prozess so weit wie möglich vereinfacht.
- Es werden weder Docker, Kubernetes noch Container verwendet, und es ist keine Umgebungs-Konfiguration nötig.
- Es werden Binärdateien verwendet. Diese lassen sich kopieren und auf einem Linux-Server als Prozess ausführen.
- Gewählt werden Go und Rust. Das sind High-Performance-Sprachen, die Binärdateien für das Deployment erzeugen können.
Update
- Vercel hat sich gemeldet und erklärt, dass es Funktionen gibt, mit denen die Site in solchen Situationen geschützt werden kann.
- Über Ausgabenverwaltung lassen sich Ausgabenlimits setzen, und es gibt einen Attack-Challenge-Modus, der dem „Under Attack“-Modus von CF ähnelt.
Meinung von GN⁺
- Dieser Artikel betont die Bedeutung einer leistungsfähigen Infrastruktur und einer vereinfachten Deployment-Strategie, die selbst unter DDoS-Angriffen einen stabilen Servicebetrieb ermöglichen.
- Die monolithische Architektur zeigt Vorteile bei der Reduzierung von Komplexität, der Vereinfachung von Deployments und der Performance-Optimierung.
- Der effektive Einsatz von Cloud-Services und CDN zur Erhöhung der Widerstandsfähigkeit gegen DDoS-Angriffe kann auch für andere Unternehmen ein gutes Beispiel sein.
- Dieser Ansatz bietet insbesondere Startups in der Frühphase oder kleinen und mittleren Unternehmen Einblicke in den Aufbau einer kosteneffizienten Infrastruktur.
- Allerdings ist ein monolithischer Ansatz nicht für jedes System oder jede Anwendung geeignet; wichtig ist, eine Architektur zu wählen, die zu den jeweiligen Anforderungen und Rahmenbedingungen passt.
1 Kommentare
Hacker-News-Kommentare
Zusammenfassung des ersten Kommentars:
Zusammenfassung des zweiten Kommentars:
Zusammenfassung des dritten Kommentars:
Zusammenfassung des vierten Kommentars:
Zusammenfassung des fünften Kommentars:
Zusammenfassung des sechsten Kommentars:
Zusammenfassung des siebten Kommentars:
Zusammenfassung des achten Kommentars:
Zusammenfassung des neunten Kommentars:
Zusammenfassung des zehnten Kommentars: