Blog

Déployer plusieurs applications à partir d'un mono dépôt sur Scalingo

Chargement...

5 min de lecture

Déployer plusieurs applications à partir d'un mono dépôt sur Scalingo

Suivez nos étapes pour déployer plusieurs applications à partir de code hébergé dans un mono dépôt.

Certain équipes de développeurs préfèrent rassembler le code source de toutes les applications sur lesquelles ils travaillent dans un seul dépôt au lieu de l'approche traditionnelle d'un dépôt par application. Cette stratégie d'organisation du code est souvent appelée « mono dépôt » ou « monorepo » en abrégé. Le déploiement de telles applications nécessite une certaine configuration. Suivez nos étapes pour déployer plusieurs applications à partir du code hébergé dans un mono dépôt.

Pourquoi un monorepo ?

Imaginez que votre projet suit le modèle monorepo et a la structure de code suivante :

my-app
├── api
├── front
├── admin
└── cockpit
my-app
├── api
├── front
├── admin
└── cockpit
my-app
├── api
├── front
├── admin
└── cockpit
my-app
├── api
├── front
├── admin
└── cockpit

Il est facile d'imaginer que ces applications forment un tout homogène avec une méthode de communication standardisée (appel HTTP synchrone, mise en file d'attente de messages, etc.) entre elles.

Les monorepos ont plusieurs avantages :

  • Organisation simplifiée

  • Facilité de coordination des changements entre les applications

  • Dépendances simplifiées

  • Processus unique de lint, de construction, de test et de publication

  • Un seul endroit pour signaler les problèmes

  • Les tests entre les modules sont exécutés ensemble → trouve plus facilement les bogues qui touchent plusieurs modules

  • Simplifier le refactoring de code à grande échelle – Étant donné que les développeurs ont accès à l'ensemble du projet, les refactorisations peuvent garantir que chaque partie du projet continue de fonctionner après un refactoring.

  • Collaboration fluide entre les équipes

  • Réutilisation du code

Dans notre exemple, une version est la publication de l'ensemble des applications api, front, admin et cockpit, et en mettant en place un pipeline d'intégration continue robuste, vous pouvez vous assurer que les 4 applications fonctionneront correctement ensemble.

Et au fait, Google utilise monorepo.

Déploiements sur Scalingo

Avec une telle configuration, vous devrez créer 4 applications sur Scalingo : une pour l'API et 3 pour les autres applications. Vous pouvez utiliser le tableau de bord web ou la CLI pour ce faire.

Utiliser l'intégration GitHub

Dans la section "Code" de chaque application sur le tableau de bord web, activez l'intégration GitHub avec votre mono dépôt. Vous pouvez activer le déploiement automatique sur l'une des branches afin que l'application soit automatiquement déployée lorsqu'un commit est poussé sur cette branche. Il est préférable que vous choisissiez la même branche pour les 4 applications.

Avec le code de chaque application étant dans un sous-dossier différent, vous devez enseigner à Scalingo où trouver le code source en définissant la variable d'environnement PROJECT_DIR de chaque application pour correspondre au dossier correspondant. Par exemple, l'application API devrait avoir la variable d'environnement suivante : PROJECT_DIR=api.

Applications de révision

Si vous avez configuré l'intégration GitHub et activé la fonctionnalité Auto Deploy, vous pouvez également activer les applications de révision. Les applications de révision sont des applications construites dynamiquement chaque fois qu'une demande de tirage est ouverte contre le dépôt GitHub connecté. Bien sûr, cette fonctionnalité fonctionnera également dans le cas d'un monorepo !

Par exemple, si la PR #42 est ouverte contre notre exemple de monorepo, Scalingo construira et déploiera automatiquement 4 applications Scalingo nommées api-42, front-42, admin-42 et cockpit-42, disponibles derrière leurs propres domaines scalingo.io. Et elles suivront le flux de travail standard des applications de révision : lorsque la PR est fermée, ces 4 applications temporaires seront détruites par Scalingo.

L'alternative Git uniquement

Si votre code n'est pas hébergé sur GitHub, le flux de travail est un peu plus manuel. Nous allons configurer Git pour envoyer le code vers différents remote. Après avoir créé les 4 applications sur Scalingo, allez dans le répertoire racine de votre projet et ajoutez les 4 remotes avec :

git remote set-url scalingo --push --add git@scalingo.com:api.git
git remote set-url scalingo --push --add git@scalingo.com:front.git
git remote set-url scalingo --push --add git@scalingo.com:admin.git
git remote set-url scalingo --push --add git@scalingo.com:

git remote set-url scalingo --push --add git@scalingo.com:api.git
git remote set-url scalingo --push --add git@scalingo.com:front.git
git remote set-url scalingo --push --add git@scalingo.com:admin.git
git remote set-url scalingo --push --add git@scalingo.com:

git remote set-url scalingo --push --add git@scalingo.com:api.git
git remote set-url scalingo --push --add git@scalingo.com:front.git
git remote set-url scalingo --push --add git@scalingo.com:admin.git
git remote set-url scalingo --push --add git@scalingo.com:

git remote set-url scalingo --push --add git@scalingo.com:api.git
git remote set-url scalingo --push --add git@scalingo.com:front.git
git remote set-url scalingo --push --add git@scalingo.com:admin.git
git remote set-url scalingo --push --add git@scalingo.com:

Lorsque vous souhaitez déployer une modification, poussez simplement vers le scalingo remote :

git push scalingo master
git push scalingo master
git push scalingo master
git push scalingo master

Si vous souhaitez déployer une branche avec un nom différent de master (par exemple prod), remplacez master dans les commandes précédentes par prod:master.

Conclusion

Avec cette configuration, vous êtes maintenant prêt à être super efficace dans le déploiement de vos applications. Il suffit de ajouter un nom de domaine personnalisé et de continuer à coder !

Si vous souhaitez approfondir le sujet du monorepo, vous pouvez commencer par lire cette super liste de ressources et de lectures.

Photo par Faye Cornish sur Unsplash

Yann Klis, Scalingo

Yann Klis

Yann KLIS a fondé Scalingo en 2015 avec son associé Léo Unbekandt avec la vision de proposer une plateforme cloud d'hébergement web, véritable alternative européenne et souveraine aux géants américains. Aujourd'hui Scalingo héberge plusieurs milliers d'applications web déployées par des clients du monde entier ! L'objectif de Scalingo est de devenir la plateforme cloud de référence pour les développeurs web en Europe. Auparavant, il a fondé Novelys, un studio de développement spécialisé dans la technologie Ruby on Rails.

Restez informé

Recevez des articles et des mises à jour de la plateforme dans votre boîte de réception.

Prêt à déployer en toute confiance ?

Découvrez des déploiements sans temps d'arrêt, une mise à l'échelle automatique intelligente et une infrastructure entièrement gérée. Commencez à déployer vos applications sur Scalingo dès aujourd'hui.

Aucune carte de crédit requise • Déployez en quelques minutes • Annulez à tout moment

Déployez une première application ou base de données

Commencez à déployer

Rejoignez les équipes qui misent sur une plateforme conçue pour livrer rapidement, opérer sereinement, avec des valeurs européennes et un support humain.

Déployez une première application ou base de données

Commencez à déployer

Rejoignez les équipes qui misent sur une plateforme conçue pour livrer rapidement, opérer sereinement, avec des valeurs européennes et un support humain.

Déployez une première application ou base de données

Commencez à déployer

Rejoignez les équipes qui misent sur une plateforme conçue pour livrer rapidement, opérer sereinement, avec des valeurs européennes et un support humain.