A-t-on vraiment besoin d’une infrastructure cloud complexe ?
- En écoutant Pieter Levels parler dans le podcast de Lex Fridman, j’ai eu beaucoup de déclics
- Pieter exploite ses applications sur un serveur unique et a construit avec succès une activité de micro-SaaS rentable
- Il est important d’éviter la complexité de l’infrastructure cloud et de se concentrer sur l’adéquation produit-marché
- Cela ne convient peut-être pas à toutes les startups, mais il faut éviter la complexité pour la complexité
Observations récentes
Projet 1 : surcharge de Lambda
- Exploitation de divers services avec 20 à 30 fonctions Lambda
- Tâches en arrière-plan avec SQS et Lambda
- Logs dispersés dans CloudWatch
Résultat : le débogage est difficile, les changements sont compliqués et le déploiement est complexe. Il aurait été possible de simplifier cela avec un conteneur NodeJS unique ou une application Python Flask/FastAPI et Redis.
Projet 2 : confusion autour des microservices
- Exploitation de 7 petits microservices sur Kubernetes (EKS)
- Services séparés pour le CRUD et la logique métier
Résultat : davantage de temps passé à gérer l’infrastructure. On peut se demander si ce niveau de séparation était réellement nécessaire.
La force d’une configuration sur serveur unique
- Les serveurs modernes sont puissants. Hetzner et latitude.sh proposent des VM puissantes à bas prix
- Les VM GCP et les instances EC2 sont elles aussi proposées à des tarifs raisonnables
- Une puissance de calcul importante avec 40 Go de RAM et plusieurs cœurs
- Tout est centralisé, donc plus facile à administrer
- Les problèmes de montée en charge à plusieurs millions de QPS pourront être traités plus tard
Ce qu’il faut pour une configuration sur une VM unique :
- Une machine puissante (EC2, VM GCP, Hetzner, etc.)
- Un accès sécurisé (HTTPS, SSH restreint par IP ou SSM)
- Du CI/CD pour des déploiements sans interruption
- Une configuration DNS
- Des sauvegardes régulières de la base de données
- De la redondance avec une VM de secours
Docker Compose
- Docker Compose est excellent pour le développement local
- Il permet de gérer plusieurs services avec une seule commande
- Il est moins utilisé en production
- Il peut entraîner un temps d’arrêt pendant les mises à jour
Docker Compose Anywhere : un projet de week-end
- Docker Compose Anywhere a été développé sur un week-end
- Il offre les fonctionnalités suivantes :
- Configuration en un clic d’un serveur Linux via GitHub Actions
- Déploiements sans interruption avec GitHub Container Registry et Docker Rollout
- Gestion des variables d’environnement et des secrets (avec réflexion autour de l’usage de
ageousops) - Sauvegardes Postgres automatisées via GitHub Actions
- Prise en charge de plusieurs applications sur une VM unique
- SSL automatique avec Traefik et Let's Encrypt
Quelques points à considérer
Pour la sécurité :
- Définir des règles de pare-feu strictes (n’ouvrir que les ports nécessaires)
- Sécuriser les clés SSH (sur AWS, préférence pour SSM ; sur GCP, préférence pour le CLI)
- Utiliser un bastion host pour renforcer la sécurité
- Protéger les secrets et envisager l’usage d’un WAF ou de Cloudflare
Protection des données :
- Envoyer des sauvegardes chiffrées de la base de données vers un stockage cloud sécurisé (par exemple S3)
- Créer régulièrement des snapshots disque pour une redondance supplémentaire
- Mettre en place des politiques de rétention pour les sauvegardes et les snapshots
Récapitulatif GN⁺
- Cet article souligne que les startups devraient éviter les infrastructures cloud complexes et se concentrer sur l’adéquation produit-marché avec une configuration simple
- Il présente les avantages d’une configuration sur serveur unique et une méthode de déploiement simple avec Docker Compose
- Il est important de ne pas gaspiller du temps dans la gestion d’une infrastructure complexe et de se concentrer sur le développement du produit principal
- Des projets proposant des fonctionnalités similaires incluent Heroku et DigitalOcean
1 commentaires
Commentaires sur Hacker News
Dans de nombreux projets, des équipes qui veulent utiliser les technologies les plus récentes produisent souvent des livrables de mauvaise qualité
Dans une petite startup, on fait tourner nginx, une webapp, postgres, redis, etc. sur une seule VM
Un SaaS démarre sur un seul serveur puis s'étend à plusieurs serveurs
Les fonctions clés de Kubernetes, comme les déploiements, les services de pods et les déploiements blue-green, sont utiles
Beaucoup de gens construisent une infrastructure complexe pour apprendre Kubernetes
Même les livres sur les microservices recommandent de « construire d'abord un monolithe »
Il n'est pas recommandé de choisir dès le départ un framework complexe
Dans le cloud, on n'utilise que des VM, du stockage bloc et blob, le DNS, un IdP et un registraire de domaines
Un projet a tourné pendant 6 ans sur un seul VPS à 10 $/mois
Les solutions cloud sont préférées, mais de manière sélective