8. 88
ü Respecter les standards
ü Ne pas réinventer la roue
ü Sélectionner vos outils
ü Créer un workflow
ü Ne jamais casser ce workflow
ü Automatiser ce workflow
Ruleof
thumb
10. 1010
• Mise en place d’une nouvelle
plateforme web
• Intégrer plusieurs projets
Canal+
• Être plus efficace pour les
livraisons
• Avoir de la visibilité sur les
développements
• Réversibilité facile
Enjeux
12. 1212
Utilisation des outils standards PHP
• Respecter les normes PSR-X
• Composer
Utilisation des outils front
• Npm, Bower et Gulp
• Babel (ECMA 6), ReactJS
Editeur
• PHPStorm (Gratuit pour les projets open source)
• Autocomplete, service définition
Développement
17. 1717
Infra-as-Code: Définitions de configurations
systèmes
On peut supprimer facilement les machines et les
remonter.
Utilisation des modules de la communauté et
enrichissement grâce aux rôles: http_role,
http_cache_role, php_role, deploy_role, ci_role, …
La doc est dans le repository d’infra, suit les
changements d’infra; pas de décalage
Outil de
provisioning
de machines
Puppet
19. 19
Définitions des rôles pour
mieux intégrer les modules
avec les besoins
Définitions des environnements
Scripts de configurations
20. 2020
Permets aux développeurs de se concentrer sur le
code et pas sur la configuration d’outils
Le code puppet utilisé sera le même sur l’ensemble
des environnements
Détection très tôt des problèmes possibles sur la
production.
Vagrant
+
Puppet
22. 2222
Point d’entrée principal pour toutes les commandes
du projet
Simplification des docs
« make install »
Makefile
test-‐unit:
./bin/phpunit
-‐-‐testsuite=unit
test-‐front:
cd
./assets_src
&&
gulp
karma
test-‐behat:
./bin/qa_behat.sh
test-‐all:
test-‐unit
test-‐front
test-‐behat
optimize:
composer-‐optimize
clean
assets
composer-‐optimize:
composer
dump-‐autoload
-‐o
23. 2323
Pourquoi tester ?
• S’assurer que le code fonctionne correctement
• Permets de refactoriser le code
• « Sorte de documentation » d’usage du code
Les outils
• Tests unitaires: PHPUnit
• Tests fonctionnels: Behat + Selenium
Tests
24. 24
# setup infra
git clone git@github.com:vendor/infra.git .
vagrant up --provision
# install code
vagrant ssh
cd /vagrant
git clone git@github.com:vendor/code.git .
make install
27. 2727
L’industrialisation est également une histoire de
méthodologie
Accepter par les personnes de l’équipe.
Echange efficace de l’information, pas de perte de
temps
Tout le monde peut voir le statut du projet
Transparence des choix lors des réunions
Permets de se concentrer sur les futurs besoins
Méthodologie
Agile
28. 2828
Repos de code
Gestion des issues
Intégration facile d’outils externes via la gestion des
hooks
Pull Request
Github
29. 2929
Pas de commits dans le master / develop
Zone tampon pour échanger sur le code
Chaque PR doit avoir :
• Des tests
• De la documentation
• Du code
Github
–
Pull
Request
34. 3434
Machines et Réseaux
Services
Bases de données
Amazon
Web
Services
Amazon EC2
Amazon VPC
Elastic Load
Balancing
Amazon
Route 53
Amazon S3
Amazon EBS
Amazon RDS
Redis
35. 3535
Définition des instances dans Cloud Formation
Autoscaling pour les montées en charge de la
production
Destruction des environnements non critiques en
heures non ouvrées
Amazon
Web
Services
36. 3636
Le provisionnement des machines est lancé
automatiquement lors de la création des instances
EC2.
Utilisation de l’outil en mode masterless
Pas d’AMI prébuildé (pas le besoin pour le moment)
Puppet
39. 3939
Ordonnanceur de tâches
Permets de lancer
• Les déploiements
• Les tests sur les machines
Historisation des lancements des tâches
Jenkins
40. 4040
Outil de déploiement
Tâches lancés en parallèle sur les serveurs
Gestion de rôles et d’environnements
Utilisation des tags aws pour dynamiquement
charger les rôles des machines
Capistrano
41. 4141
1. Connexion sur le serveur de test
2. Déploiement de l’applicatif: chargement des
dépendances et lancement des tests
3. Récupération des rapports pour consolidation sur
le serveur jenkins
4. Push du code dans un répository de build
Tests
43. 4343
Déploiement sur la dev
1. Si les tests sont verts alors on push sur la dev
automatiquement
2. Recette possible par les ingénieurs / consultants /
clients
Déploiement sur la production
1. Les PO taggent la release sur github
2. Lance une tâche jenkins avec la release
3. Wait and See …
Releases
48. 4848
Etape 0
• L’équipe doit pousser les actions
• On définit la vision cible, et les étapes pour y arriver
Etape 1: la base
• A faire : tests, respecter les normes de codages
• Déploiement: Utilisation de Capistrano
Etape 2: code review
• On arrête de faire un push sur le master
• Pull Request
• Utilisation des fonctions de Github
Etape 3: automatisation
• On rajoute Jenkins pour ordonnancer les tâches
• On rajoute des outils de notifications
Etape 4: provisioning
• On utilise Puppet pour gérer l’infra
• On forme les équipes de Dev à parler avec les Ops
Etape 5: amélioration
• On améliore les étapes précédentes