Sommaire
- Introduction
- L'environnement de développement à IDCI
- L'environnement de développement idéal
- Solutions mises en place et démonstrations
- Conclusion
- Sites clients hors-lignes
- Outils innaccessibles
- 2 semaines d'arrêt
Introduction
- Problème serveur le 26 décembre 2014.
-
-
Prise de décision immédiate
- Arrêt de l'offre d'hébergement ⇨ Trouver des partenaires
- Acquisition d'un serveur de développement ⇨ Remise en question des procédures et des outils utilisés
Introduction
Qu'est-ce qu'un environnement de développement?
Du matériel (local & distant)
Des logiciels
Des méthodes de travail
L'environnement de développement à IDCI
- Basé sur ce que l'on voit ailleurs
- Déploiement vers "des" serveurs
L'environnement de développement idéal
Gestion de projet
Qu'est ce que c'est?
- Création, assignation de tâches
- Planification
- Notifications
Gestion de projet
Analyse
Recherche d'autres logiciel de gestion de projet
Gestion de projet
Actions à mener
Installer redmine sur le nouveau serveur de développement
Gestion du code
Qu'est ce que c'est?
SCM - Logiciels de gestion de version
- Historique des modifications
- Travail en équipe
- Accès concurrent
Gestion du code
Avant
- Git avec Github
- Svn avec Websvn
Analyse & recherche
- On a deux outils pour une même fonction ⇨ On souhaite garder Git
- On souhaite pouvoir héberger du code source privé ⇨ Rechercher des alternatives à Github
Gestion du code
Actions à mener
Migration des anciens projets Subversion sous Git avec git-svn
Installation de Gitlab
Intégration continue
Qu'est ce que c'est?
Amélioration de la qualité du code source
- Lancement de tâches lors de la réception de modification de code
- ⇨ Détection rapide des erreurs
- ⇨ Qualité du code mesurable
- ⇨ Automatisation de la livraison
Intégration continue
Qu'est ce que c'est?
Intégration continue
Avant
Pas d'outils d'intégration continue
Intégration continue
Analyse & recherche
Intégrer gitlab avec un outil d'intégration continue
Intégration continue
Actions à mener
Mettre en place Gitlab-CI
Base de connaissance
Qu'est ce que c'est?
- Partage de connaissance
- Permet de regrouper des données utiles au quotidien et des savoirs faire
- Se construit en équipe
Base de connaissance
Avant
Pas d'outils dédié à la documentation
Base de connaissance
Analyse & recherche
Trouver un outil en accord avec nos exigences
Base de connaissance
Actions à mener
Installer Dokuwiki
Partage de fichiers
Qu'est ce que c'est?
- Faciliter le partage de fichiers
- Ordonner les fichiers
- Synchronisation
Partage de fichiers
Avant
Pas d'outils dédié au partage
- Fonctionnement par mail
- Partage sur le réseau de manière peu organisé
Partage de fichiers
Analyse & recherche
Trouver un outil en accord avec nos exigences
Partage de fichiers
Actions à mener
Installer Owncloud
Configuration du poste de travail
Configuration du poste de travail
Qu'est ce que c'est?
Installer les logiciels nécessaire au développement d'une application
- Récupérer le code source
- Modifier la configuration du serveur web
- Ajouter une nouvelle entrée DNS
- Créer une nouvelle base de données
- Importer les données
- Installer les paquets nécessaires au projet
- Modifier la configuration de projet
- Initialiser le projet
- ...
Configuration du poste de travail
Avant
Installation manuelle
Configuration du poste de travail
Analyse
- Long à mettre en place
- Complexe
- Sujet à de nombreuses erreurs
Configuration du poste de travail
Recherche
Virtualisation
Avantage
- Facile à manipuler
- Installation facile
- Simuler un environnement de production est simple
Inconvénients
- Performances amoindries
- Librairies non mutualisées
- La configuration reste fastidieuse
Configuration du poste de travail
Recherche
Docker
Configuration du poste de travail
Actions à mener
Automatisation avec Docker
Déploiement
Qu'est ce que c'est?
Aboutissement du travail avec la livraison du produit
Déploiement
Analyse
Conséquence : impossible à réutiliser, long à mettre refaire l'architecture, pas de redondance
- Trop spécifique à notre architecture serveur.
- Trop sensible aux problèmes matériels
Déploiement
Recherche
Déploiement avec Ansible
Outils CM (Configuration management)
- Courbe d'apprentissage intéressante
- Pas d'installation nécéssaire sur les serveurs
- Configuration réutilisable
Déploiement
Actions à mener
Créer les fichiers de configuration pour les déploiements en pre-prod et en prod
L'hébergement
Qu'est ce que c'est?
- Un serveur materiel
- Un interlocuteur avec qui travailler
- Des méthodes de travail à établir
L'hébergement
Avant
Serveur dédié chez OVH
L'hébergement
Analyse
- Faible proximité avec notre hébergeur
- Manque de connaissance sur la supervision matérielle
- Modèle non rentable : 1440€/an, 20 jours/an soit 72€/jour
L'hébergement
Recherche
Souhaits
- Info-gérance
- Proximité géographique
- Facturation directe par le client
Proposition de plusieurs offres pour nos clients
Possible grâce à Ansible (travailler de la meme manière sur plusieurs machines)
L'hébergement
Actions à mener
Prise de contact avec 3 hébergeurs
Actuellement en cours de discussion
Conclusion personnelle
- De nombreuses connaissances et compétences techniques acquises
-
- Docker
- Ansible
- Gitlab & Gitlab-CI
- Compétences de communication mise à profit
- Compétences pédagogiques
Ces nouvelles méthodes de travail font leur preuves
Elles restent encore très récentes et vont demander un temps de test
Conclusion globale
- Outils adoptés et utilisés tous les jours
- Méthodes de travail encore très récentes
- Seul le déploiement en production reste à tester
- Migration des sites prévue au 31 juillet 2015
Ces nouvelles méthodes de travail font/doivent encore faire leur preuves
Vont demander en temps de test
Merci de votre écoute
Avez vous des questions?
1 / 55
Amélioration de l'environnement et des flux de travaux à idci-consulting
Baptiste Bouchereau