Braucht Ihr Startup wirklich komplexe Cloud-Infrastruktur?
(hadijaveed.me)Braucht man wirklich komplexe Cloud-Infrastruktur?
- Beim Hören von Pieter Levels im Lex Fridman Podcast habe ich viele Einsichten gewonnen
- Pieter betreibt Anwendungen auf einem einzelnen Server und hat damit ein erfolgreiches Micro-SaaS-Business aufgebaut
- Es ist wichtig, die Komplexität von Cloud-Infrastruktur zu vermeiden und sich auf Product-Market-Fit zu konzentrieren
- Das gilt vielleicht nicht für jedes Startup, aber man sollte Komplexität um der Komplexität willen vermeiden
Jüngste Beobachtungen
Projekt 1: Lambda-Überlastung
- Betrieb verschiedener Services mit 20–30 Lambda-Funktionen
- Hintergrundjobs mit SQS und Lambda
- Über CloudWatch verteilte Logs
Ergebnis: Debugging ist schwierig, Änderungen sind mühsam und Deployments sind kompliziert. Das hätte sich mit einem einzelnen NodeJS-Container oder einer Python-Flask-/FastAPI-App und Redis vereinfachen lassen.
Projekt 2: Microservices-Chaos
- Betrieb von 7 kleinen Microservices auf Kubernetes (EKS)
- Separate Services für CRUD und Business-Logik
Ergebnis: Es wurde mehr Zeit für das Infrastruktur-Management aufgewendet. Fraglich, ob diese Art der Trennung wirklich nötig war.
Die Stärke eines Single-Server-Setups
- Moderne Server sind leistungsstark. Hetzner und latitude.sh bieten starke VMs zu günstigen Preisen an
- Auch GCP-VMs und EC2-Instanzen sind preislich vernünftig
- Sie bieten starke Rechenleistung mit 40 GB RAM und mehreren Kernen
- Alles ist zentralisiert und dadurch einfach zu verwalten
- Das Problem, auf Millionen QPS zu skalieren, kann man später lösen
Für ein Single-VM-Setup braucht man:
- Eine leistungsstarke Maschine (EC2, GCP VM, Hetzner usw.)
- Sicheren Zugriff (HTTPS, SSH mit IP-Beschränkung oder SSM)
- CI/CD für Zero-Downtime-Deployments
- DNS-Konfiguration
- Regelmäßige Datenbank-Backups
- Redundanz durch eine Standby-VM
Docker Compose
- Docker Compose ist hervorragend für die lokale Entwicklung
- Mehrere Services lassen sich mit einem einzigen Befehl verwalten
- In Produktionsumgebungen wird es seltener eingesetzt
- Während Updates kann es zu Downtime kommen
Docker Compose Anywhere: ein Wochenendprojekt
- Docker Compose Anywhere wurde an einem Wochenende entwickelt
- Es bietet folgende Funktionen:
- One-Click-Setup für Linux-Server über GitHub Actions
- Zero-Downtime-Deployments mit GitHub Container Registry und Docker Rollout
- Verwaltung von Umgebungsvariablen und Secrets (unter Erwägung von
ageodersops) - Automatisierte Postgres-Backups über GitHub Actions
- Unterstützung mehrerer Apps auf einer einzelnen VM
- Automatisches SSL mit Traefik und Let's Encrypt
Einige Überlegungen
Für die Sicherheit:
- Strenge Firewall-Regeln setzen (nur notwendige Ports öffnen)
- SSH-Keys absichern (bei AWS bevorzugt SSM, bei GCP die CLI)
- Einen Bastion Host zur Härtung der Sicherheit verwenden
- Secrets schützen und den Einsatz von WAF oder Cloudflare erwägen
Zum Datenschutz:
- Verschlüsselte Datenbank-Backups in sicheren Cloud Storage übertragen (z. B. S3)
- Regelmäßig Disk-Snapshots für zusätzliche Redundanz erstellen
- Aufbewahrungsrichtlinien für Backups und Snapshots umsetzen
Zusammenfassung von GN⁺
- Dieser Beitrag betont, dass Startups komplexe Cloud-Infrastruktur vermeiden und sich mit einfachen Setups auf den Product-Market-Fit konzentrieren sollten
- Er stellt die Vorteile eines Single-Server-Setups und einfache Deployment-Methoden mit Docker Compose vor
- Wichtig ist, keine Zeit mit komplexem Infrastruktur-Management zu verschwenden, sondern sich auf die Entwicklung des Kernprodukts zu konzentrieren
- Ähnliche Projekte mit vergleichbaren Funktionen sind etwa Heroku und DigitalOcean
1 Kommentare
Hacker-News-Kommentare
In vielen Projekten versuchen Teams, die neuesten Technologien einzusetzen, und liefern dabei oft Ergebnisse von geringer Qualität
In einem kleinen Startup wird eine einzelne VM genutzt, um nginx, webapp, postgres, redis usw. zu betreiben
Ein SaaS wurde auf einem einzelnen Server gestartet und dann auf mehrere Server skaliert
Die Kernfunktionen von Kubernetes wie Deployments, Pod-Services und Blue-Green-Deployments sind nützlich
Viele bauen komplexe Infrastrukturen auf, um Kubernetes zu lernen
Selbst in Büchern über Microservices wird empfohlen: "Baue zuerst einen Monolithen"
Es ist nicht empfehlenswert, sich von Anfang an für komplexe Frameworks zu entscheiden
In der Cloud werden nur VM, Block- und Blob-Storage, DNS, IdP und Domain-Registrar genutzt
Ein Projekt wurde 6 Jahre lang auf einem einzelnen VPS für 10 $/Monat betrieben
Cloud-basierte Lösungen werden bevorzugt, aber selektiv eingesetzt