gwift-book/adoc/deploy/index.adoc

2.6 KiB
Raw Blame History

Déploiement

On va déjà parler de déploiement. Si vous avez suivi les étapes jusquici, vous devriez à peine disposer dun espace de travail proprement configuré, dun modèle relativement basique et dune configuration avec une base de données simpliste. En bref, vous avez quelque chose qui fonctionne, mais qui ressemble de très loin à ce que vous souhaitez au final.

Il y a une raison très simple à aborder le déploiement dès maintenant: à trop attendre et à peaufiner son développement en local, on en oublie que sa finalité sera de se retrouver exposé sur un serveur. On risque davoir oublié une partie des désidérata, davoir zappé une fonctionnalité essentielle ou simplement de passer énormément de temps à adapter les sources pour quelles fonctionnent sur un environnement en particulier.

Aborder le déploiement maintenant permet également de rédiger dès le début les procédures dinstallation, de mise à jour et de sauvegardes. Déploier une nouvelle version sera aussi simple que de récupérer la dernière archive depuis le dépôt, la placer dans le bon répertoire, appliquer des actions spécifiques (et souvent identiques entre deux versions), puis redémarrer les services adéquats.

Dans cette partie, on abordera les points suivants:

  • La définition de linfrastructure nécessaire à notre application

  • La configuration de lhôte, qui hébergera lapplication: dans une machine physique, virtuelle ou dans un container. On abordera aussi rapidement les déploiements via Ansible, Chef, Puppet ou Salt.

  • Les différentes méthodes de supervision de lapplication: comment analyser les fichiers de logs et comment intercepter correctement une erreur si elle se présente et comment remonter linformation.

  • Une partie sur la sécurité et la sécurisation de lhôte.

Définition de linfrastructure

Comme on la vu dans la première partie, Django est un framework complet, intégrant tous les mécanismes nécessaires à la bonne évolution dune application. On peut ainsi commencer petit, et suivre lévolution des besoins en fonction de la charge estimée ou ressentie, ajouter un mécanisme de mise en cache, des logiciels de suivi, …​

Configuration et sécurisation de la machine hôte

Supervisor, nginx, gunicorn, utilisateurs, groupes, …​

entity Nginx entity "Gunicorn (sockets/HTTP)" as gunicorn database PGSQL

Aussi : Docker, Heroku, Digital Ocean, Scaleway, OVH, …​ Bref, sur Debian et CentOS pour avoir un panel assez large. On oublie Windows.

Mise à jour

Script de mise à jour.

Supervision

Quest-ce quon fait des logs après ? :-)