Déployer une application

D'un dépôt à une adresse en service, et ce qui se passe à chaque étape.

Une application est un programme en cours d'exécution, avec une adresse. Cette page explique comment elle y parvient, ce que vous contrôlez, et ce que la plateforme décide pour vous.

D'où vient le code

D'un dépôt connecté. Vous autorisez ISOGrid une fois auprès de votre hébergeur de code, vous choisissez un dépôt et une branche, et la plateforme construit à partir de là. Elle ne voit jamais que les dépôts que vous sélectionnez — autoriser la connexion ne lui livre pas tout votre compte.

De quelque chose de déjà empaqueté. Si votre équipe produit déjà un artefact déployable, téléversez-le dans le registre privé de votre organisation et déployez-le. Rien n'est construit ; la plateforme exécute ce que vous lui avez donné.

Déterminer comment le construire

La plupart des dépôts n'indiquent pas comment les construire : la plateforme le détermine donc elle-même — le langage et le framework, la façon d'installer les dépendances, la commande qui démarre l'application, et le port sur lequel elle écoute.

Deux choses à savoir :

Elle pose la question plutôt que de deviner. Si un dépôt est ambigu — deux points d'entrée possibles, aucune commande de démarrage évidente — vous recevez une question, pas une construction qui fonctionne à moitié. Il suffit de répondre une fois ; la réponse est retenue pour cette application.

Vous pouvez tout remplacer. Les paramètres détectés sont un point de départ, pas un verdict. Si vous connaissez la commande de démarrage, définissez-la.

Si votre dépôt contient déjà sa propre définition de construction, elle est utilisée telle quelle et rien n'est détecté.

Choisir une taille

Les tailles sont proposées sous forme de types d'instance nommés, par région, et non comme des valeurs brutes que vous inventez. Chacune indique son prix. Des tailles nommées plutôt qu'un choix libre, parce qu'une combinaison arbitraire ne peut être ni facturée honnêtement ni planifiée de façon prévisible.

Prenez la plus petite qui suffit à votre application. Monter en taille plus tard demande un redémarrage, pas une reconstruction.

Les copies, et ce qu'elles signifient

Une copie est la valeur par défaut et la moins chère. C'est aussi un point de défaillance unique : pendant qu'elle redémarre, personne ne peut atteindre votre application. C'est acceptable pour un environnement de préproduction, pas pour quoi que ce soit qu'un client utilise.

Deux copies ou plus sont placées sur des machines différentes lorsque la région en dispose. Les requêtes sont réparties entre elles, et en perdre une vous coûte de la capacité plutôt que de la disponibilité.

Les copies ne partagent pas de disque local. Tout ce qui est écrit à l'intérieur d'une copie en cours d'exécution est perdu à son redémarrage et invisible pour les autres. Si votre application écrit des fichiers qu'elle doit conserver, il lui faut un volume ou un espace de stockage — et si elle écrit des fichiers qu'elle doit partager, il lui faut un espace de stockage, car un volume appartient à une seule copie.

Déployer, et ce qu'un déploiement n'interrompt pas

Un déploiement démarre la nouvelle version, attend qu'elle réponde, bascule le trafic, et seulement ensuite arrête l'ancienne. Si la nouvelle version ne répond jamais, l'ancienne continue de servir et le déploiement est signalé comme échoué. Un déploiement raté devrait vous coûter une marque rouge dans l'historique, pas une interruption de service.

Avec une seule copie, ce n'est pas possible : il n'y a nulle part où exécuter la nouvelle version pendant que l'ancienne sert, d'où une coupure de quelques secondes. C'est la surprise la plus fréquente sur l'offre gratuite et les plus petites tailles, et la solution est une seconde copie.

Environnement et configuration

Les valeurs que votre application lit dans son environnement se définissent par application. Les paramètres ordinaires sont visibles par toute personne qui peut voir l'application.

Les secrets sont différents. Une valeur enregistrée comme secret est en écriture seule : vous la définissez, l'application en cours d'exécution la reçoit, et personne — vous compris — ne peut la relire ensuite via la console ou l'API. C'est voulu. Un secret que l'on peut récupérer sur une page web est un secret qui s'échappe dans une capture d'écran. Si vous le perdez, remplacez-le.

Modifier l'un ou l'autre redémarre l'application, car un programme en cours d'exécution lit son environnement une seule fois, au démarrage.

Cas particuliers à connaître avant d'y être confronté

La construction réussit, mais l'application ne démarre toujours pas. C'est presque toujours une valeur d'environnement manquante ou une base de données pas encore joignable. Les journaux de la copie défaillante disent laquelle ; ils sont conservés même pour les copies qui ne sont jamais devenues saines, précisément pour cela.

L'application démarre, mais rien ne l'atteint. Elle écoute sur un autre port que celui indiqué à la plateforme, ou uniquement sur localhost. Un programme lié à localhost à l'intérieur de sa propre copie est, par conception, injoignable depuis n'importe où ailleurs. Liez-le à toutes les interfaces.

L'application est lente à démarrer et se fait tuer. La plateforme attend qu'une nouvelle copie réponde pendant un délai généreux, mais limité. Une application qui doit exécuter des migrations, préchauffer un cache et indexer quelque chose avant de répondre peut le dépasser. Faites ce travail en arrière-plan et répondez immédiatement, sinon le déploiement continuera d'annuler une version qui aurait très bien fonctionné.

Un déploiement réussit, mais le trafic atteint toujours l'ancienne version. Laissez-lui un moment — les connexions déjà ouvertes peuvent se terminer au lieu d'être coupées. Les connexions de longue durée en sont la cause habituelle ; un client qui en garde une ouverte continuera de parler à l'ancienne copie jusqu'à ce qu'il se reconnecte.

Deux déploiements en même temps. Le second attend le premier. Ils ne sont pas appliqués en parallèle, car deux déploiements concurrents de la même application peuvent laisser en service des copies de trois versions différentes à la fois.

Pour continuer