# Atelier déploiement (primo-déploiement du chef d’œuvre)
## Objectifs
- Connaître son application, faire l’inventaire des dépendances, des éléments de configuration et d’initialisation, recueillir les informations indispensables pour identifier les besoins côté environnement de déploiement (matériels, réseaux et logiciels) et les étapes nécessaires à un primo-déploiement
- Documenter l’ensemble, incluant un diagramme de déploiement (UML)
- Préparer puis exécuter le déploiement tel que décrit dans la documentation
- Tester le bon fonctionnement de l’application (tests fonctionnels manuels de niveau end-to-end)
> **Point important**
> Les applications seront accessibles depuis Internet, c'est le but :) Ajouter les balises `meta` pour rejeter toute tentative de référencement par les moteurs de recherche. Aussi, petit challenge à relever individuellement ou en groupe (en discuter entre vous), ajouter une authentification `HTTP BASIC` dans la configuration d'Apache (pour le front donc) obligeant de s'authentifier avec un login/pwd une seule fois sinon accès aux ressources pas possible...
## Analyser le contexte, les besoins
Ce travail d’analyse et de compréhension est indispensable pour spécifier et préparer l’environnement le plus adapté aux besoins et contraintes (techniques, fonctionnelles, financières, humaines) d’une application dans un contexte donné. Il s'agit de prérequis.
### Description de l’application
- Une application client-serveur organisée en 3 couches logiques (présentation, métier, données)
- Chaque couche peut être déployée indépendamment l’une de l’autre sur un même serveur ou des serveurs différents (couches matérielles)
- La couche présentation est une Single Page Application en s’appuyant sur un framework CSR
- La couche métier expose les services par une API Rest en utilisant un framework
- La couche des données persiste dans une base de données relationnelle
- Les 3 couches ont des dépendances logiques entre elles (l’application ne peut fonctionner que si les 3 couches sont déployées)
### Description détaillées des besoins
- Faire l’inventaire des besoins en matière de dépendances (bibliothèques, fichiers…)
- Vérifier les versions, éventuellement mettre à jour (tester en conséquence en environnement local)
- Identifier ce qui est commun et ce qui est spécifique à chaque environnement (configuration, initialisation)
- Besoins externes à l’application et à l’environnement de déploiement (mails, appels d’API externes…)
- Se soucier des privilèges de base de données
### L’environnement cible (ici « imposé », VPS chez OVH)
- Hébergement mutualisé : décrire avantages et inconvénients d’un hébergement mutualisé d'une manière générale, dans le but d’identifier de potentielles contraintes liées au déploiement de plusieurs applications (ici plusieurs chefs-d'œuvre)
- Décrire dans les grandes lignes ce qu’est un VPS, décrire les spécifications principales du VPS
- Comment accéder au VPS pour l’administration et pour mettre en œuvre le déploiement
- Programmes et outils nécessaires (installés ou non, versions…)
- Se préoccuper des protocoles, ports, IP/noms de domaines, sécurité réseau (firewalls, HTTPS...)