Articles
Sep 1, 2025

Comment Railway a simplifié mon projet backend (et pourquoi c'était la bonne solution)

Pour mon dernier projet IA, je chercher un outil qui me permettait de déployer mon API backend de manière simple et efficace afin de tester l'idée de base.J'ai d'abord pensé à Vercel, mais je n'étais pas convaincu par la solution dans mon cas précis.

Comment Railway a simplifié mon projet backend (et pourquoi c'était la bonne solution)

C'est alors que j'ai découvert Railway.

Ce que j'ai vécu ensuite m'a fait réaliser que Railway était particulièrement bien adapté à l'architecture de mon projet. Aujourd'hui, je vais vous expliquer pourquoi, et comment cette plateforme a résolu mes problèmes spécifiques.

🎯 Pourquoi Railway était la bonne solution pour mon projet

L'architecture qui pose défis

Mon projet a une architecture particulière qui nécessite :

  • Traitement asynchrone avec des queues Redis
  • Workers multiples qui doivent rester actifs
  • Health checks robustes pour un monitoring fiable
  • Variables d'environnement complexes (API keys, connexions DB, etc.)
  • Déploiements fréquents sans interruption de service

Pourquoi pas Vercel ?

Vercel est excellent pour les applications frontend et les fonctions serverless, mais pour mon cas :

  • Pas de support natif pour les processus long-running (mes workers)
  • Limitations avec les connexions persistantes (Redis, MongoDB)
  • Architecture serverless qui ne correspond pas à mon modèle

Pourquoi pas AWS ?

AWS offre une puissance immense, mais pour mon projet :

  • Complexité de configuration disproportionnée à mes besoins
  • Gestion des instances qui nécessite du DevOps
  • Coûts fixes même en cas de faible utilisation
  • Temps de déploiement plus long pour des mises à jour fréquentes

🚀 Ce que Railway apporte de spécifique

Gestion des processus long-running

Railway gère parfaitement mes workers qui tournent en continu :

"restartPolicyType": "ON_FAILURE",
"restartPolicyMaxRetries": 10

Traduction : Si un de mes workers plante, il redémarre automatiquement. C'est crucial pour la fiabilité de mon système de queue.

Vue de l'architecture complet

Railway présente de manière très intuitive l'architecture de mon projet avec les iens entres les différents services.
Il est d'ailleurs très simple de créer de nouveaux services et de les connecter entre eux.
Ma base de données, mon système de queue ont été créés directement sur Railway en 2 cliques, sans avoir à créer de configuration complexe.

🏗️ Configuration adaptée à mon besoin

Le fichier railway.json minimal

{
 "$schema": "https://railway.app/railway.schema.json",
 "build": {
   "builder": "DOCKERFILE",
   "dockerfilePath": "Dockerfile"
 },
 "deploy": {
   "startCommand": "yarn start",
   "healthcheckPath": "/health",
   "healthcheckTimeout": 100,
   "restartPolicyType": "ON_FAILURE",
   "restartPolicyMaxRetries": 10,
   "numReplicas": 1
 }
}

15 lignes qui configurent exactement ce dont j'ai besoin, sans sur-ingénierie.

Optimisations spécifiques :

  • Image Alpine : Légère et sécurisée
  • Multi-stage build : Séparation build/production
  • Health checks : Intégrés au container

🔍 Monitoring et observabilité

Ce que Railway m'apporte

  • Logs en temps réel : Je vois immédiatement si un worker plante
  • Métriques système : CPU, mémoire, réseau pour diagnostiquer les problèmes
  • Health checks : Vérification automatique de la santé de l'application
  • Historique des déploiements : Suivi des versions et rollback si nécessaire

Pourquoi c'est important pour mon projet

Avec des workers qui tournent 24/7 et traitent des milliers d'articles, je dois pouvoir :

  • Détecter rapidement les problèmes
  • Diagnostiquer les causes
  • Résoudre sans interruption de service

🎯 Quand choisir Railway

Railway est idéal pour :

  • Applications backend avec des processus long-running
  • Projets qui nécessitent des workers ou des queues
  • Développeurs qui veulent se concentrer sur le code, pas l'infrastructure
  • Projets avec des variables d'environnement complexes

⚠️ Considérer d'autres options pour :

  • Applications frontend statiques (Vercel)
  • Projets nécessitant un contrôle total de l'infrastructure (AWS)
  • Applications serverless simples (Vercel, Netlify)
  • Projets avec des besoins de scaling très spécifiques

🚨 Points d'attention

Limites de Railway

  • Ressources limitées : Pas de scaling infini
  • Vendor lock-in : Migration vers d'autres plateformes possible mais non triviale
  • Fonctionnalités avancées : Moins de contrôle que sur AWS

Solutions

  • Monitoring proactif pour anticiper les limites
  • Architecture modulaire pour faciliter les migrations futures
  • Documentation de la configuration pour l'équipe

💭 Retour d'expérience honnête

Ce qui fonctionne bien

  • Déploiement simple : Configuration en 15 lignes
  • Monitoring intégré : Tout ce dont j'ai besoin est disponible
  • Stabilité : Mes workers tournent sans interruption
  • Support : Équipe réactive quand j'ai des questions

Ce qui pourrait être amélioré

  • Limites de ressources : J'atteins parfois les limites CPU
  • Documentation : Certaines fonctionnalités avancées sont peu documentées
  • Intégrations : Moins d'outils tiers que sur AWS

🔮 Évolution du projet

Prochaines Étapes

  1. Multi-replicas : Passage à plusieurs instances pour la haute disponibilité
  2. Monitoring avancé : Intégration avec des outils externes si nécessaire
  3. Optimisation continue : Ajustement de la configuration selon l'usage

Flexibilité

Si mes besoins évoluent, je peux :

  • Rester sur Railway et optimiser la configuration
  • Migrer vers AWS pour plus de contrôle (avec plus de complexité)
  • Utiliser Vercel pour certaines parties frontend

🎉 Conclusion

Pourquoi Railway Était la Bonne Solution

Railway a résolu mes problèmes spécifiques :

  • Simplicité pour un projet complexe
  • Gestion des processus long-running que d'autres plateformes ne gèrent pas bien
  • Monitoring intégré qui correspond à mes besoins
  • Coûts prévisibles pour un projet avec des charges variables

Recommandations

  1. Évaluez vos besoins : Railway n'est pas la solution universelle
  2. Testez : Commencez simple et optimisez progressivement
  3. Gardez l'esprit ouvert : D'autres plateformes peuvent être meilleures pour d'autres projets

🔗 Ressources

💬 Discussion

Avez-vous des projets similaires ? Comment gérez-vous les processus long-running ?

Utilisez-vous d'autres plateformes ? Partagez vos expériences !

Questions sur la configuration ? Je peux vous aider !

Cet article reflète mon expérience personnelle avec Railway pour ce projet spécifique. Chaque plateforme a ses forces - l'important est de choisir selon vos besoins.

Tags : #Railway #NodeJS #Docker #Deployment #Backend #API #DevOps