SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
Industrialisation
chezCanal+
22
Sonata Project Lead dev
Polyglot: PHP, Python, Go,
Javascript, Puppet, etc …
@th0masr
github.com/rande
ThomasRabaix
ArchitecteLogiciel
ekino.
3
Lathéorie
Del’industrialisationàl’industrialisation
4
5
66
Aussi vieux que l’informatique
Nouveaux outils
Accessibilité des outils
Industrialisation
77
Accompagnement
Provisionning
Qualité
Automatisation
Scalabilité
Livraison
Sérénité
Confiance
Création de valeur
Limiter la dette technique
Travailler en équipe
Industrialisation
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
9
Contexte
Comprendrelesenjeux
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
11
Undéveloppeur
Lecodeurdevosbesoinsmétiers
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
13
1414
Lechoixdesoutils
1515
Contrôle des VMs
Wrapper en mode cli de virtualbox, vmware, etc …
Machines ISO production
Attention à la configuration de vagrant
Vagrant
16
Est il possible d’écrire une documentation
d’installation des outils suivant ?
composer, php, php-fpm, phpunit, blackfire/xdebug/
xhprof, lib oracle, jvm, elasticsearch, redis,
ruby, puppet, jenkins, plugins jenkins, node, npm,
sass, bower, python, supervisor, mysql, apache,
nginx, varnish, haproxy, vim, tmux, capistrano,
gulp, sensu, supervisord, graphite, grafana,
rabbitmq, jasmine, fluentd, behat, htop, iotop,
fail2ban, memcached, mongodb, cron, postgresql,
ulimit, pip, rvm, virtualenv, gunicorn, logrotate,
dns, ntp, postfix, collectd, logstash, iptable,
shorewall …
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
18
19
Définitions des rôles pour
mieux intégrer les modules
avec les besoins
Définitions des environnements
Scripts de configurations
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
2121
Readme
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	
  
	
  
	
  
	
  
	
  
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
# 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
25
26
Uneéquipe
Lacohérencedessolutionsréalisées
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
2828
Repos de code
Gestion des issues
Intégration facile d’outils externes via la gestion des
hooks
Pull Request
Github
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
3030
Pouce Driven Development
Partage des connaissances
Accompagnement des nouveaux sur le projet
Github
–
Peer
Review
3131
Communication et agrégateur de flux
Accès rapide à l’information et aux changements
S’intègre à des services tiers
Flowdock
32
Uneinfrastructure
Supportevotreprojet
33
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
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
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
37
38
Unassistant
…pourautomatiserlesactions
3939
Ordonnanceur de tâches
Permets de lancer
•  Les déploiements
•  Les tests sur les machines
Historisation des lancements des tâches
Jenkins
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
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
42
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
44
45
4646
Accompagnement
Provisionning
Qualité
Automatisation
Scalabilité
Livraison
Sérénité
Confiance
Création de valeur
Limiter la dette technique
Travailler en équipe
Industrialisation
47
Commentfaire?
Détruirelesmythes
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
49
Questions?

Contenu connexe

Tendances

What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerGeeks Anonymes
 
Puppet, la philosophie DevOps
Puppet, la philosophie DevOpsPuppet, la philosophie DevOps
Puppet, la philosophie DevOpsJeoffrey Bauvin
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...Publicis Sapient Engineering
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteStephane Couzinier
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?rfelden
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?Membré Guillaume
 
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...Publicis Sapient Engineering
 
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Publicis Sapient Engineering
 
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauXebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauPublicis Sapient Engineering
 
Déploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesAdrien Siffermann
 
De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013Stephane Manciot
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsFactoVia
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 

Tendances (19)

What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
Symposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec MicrosoftSymposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec Microsoft
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
Puppet, la philosophie DevOps
Puppet, la philosophie DevOpsPuppet, la philosophie DevOps
Puppet, la philosophie DevOps
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverte
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
 
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
 
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
 
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauXebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
 
Déploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team Services
 
De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 

Similaire à Industrialisation PHP - Canal+

Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange LabsEmmanuel Hugonnet
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFSDenis Voituron
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetOlivier BAZOUD
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoCocoaHeads France
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Alexandre Touret
 
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]ANEO
 
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging Anne Nicolas
 
SUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE
 

Similaire à Industrialisation PHP - Canal+ (20)

Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFS
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey Macko
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
 
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging
 
SUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSP
 

Plus de ekino

Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Royekino
 
Spring data : Une api, quinze possibilités - Julien Roy
Spring data : Une api, quinze possibilités - Julien RoySpring data : Une api, quinze possibilités - Julien Roy
Spring data : Une api, quinze possibilités - Julien Royekino
 
Se lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
Se lancer dans l'aventure microservices avec Spring Cloud - Julien RoySe lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
Se lancer dans l'aventure microservices avec Spring Cloud - Julien Royekino
 
Panorama des solutions mobile hybrides
Panorama des solutions mobile hybridesPanorama des solutions mobile hybrides
Panorama des solutions mobile hybridesekino
 
Le « RUN » (ou la Tierce Maintenance Applicative)
Le « RUN » (ou la Tierce Maintenance Applicative)Le « RUN » (ou la Tierce Maintenance Applicative)
Le « RUN » (ou la Tierce Maintenance Applicative)ekino
 
Kinect pour les développeurs Web
Kinect pour les développeurs WebKinect pour les développeurs Web
Kinect pour les développeurs Webekino
 
Expériencer les objets connectés
Expériencer les objets connectésExpériencer les objets connectés
Expériencer les objets connectésekino
 
Industrialise PHP ~ ZendCon Europe 2013
Industrialise PHP ~ ZendCon Europe 2013Industrialise PHP ~ ZendCon Europe 2013
Industrialise PHP ~ ZendCon Europe 2013ekino
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?ekino
 
Responsive Web Design - Enjeux, Solutions, Méthodologie
Responsive Web Design - Enjeux, Solutions, MéthodologieResponsive Web Design - Enjeux, Solutions, Méthodologie
Responsive Web Design - Enjeux, Solutions, Méthodologieekino
 
Java GC - Pause tuning
Java GC - Pause tuningJava GC - Pause tuning
Java GC - Pause tuningekino
 
SnapyX
SnapyXSnapyX
SnapyXekino
 
HTML5 vu par Ekino
HTML5 vu par EkinoHTML5 vu par Ekino
HTML5 vu par Ekinoekino
 
OOM m'a tuer - Devoxx France 2012
OOM m'a tuer - Devoxx France 2012OOM m'a tuer - Devoxx France 2012
OOM m'a tuer - Devoxx France 2012ekino
 

Plus de ekino (14)

Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Roy
 
Spring data : Une api, quinze possibilités - Julien Roy
Spring data : Une api, quinze possibilités - Julien RoySpring data : Une api, quinze possibilités - Julien Roy
Spring data : Une api, quinze possibilités - Julien Roy
 
Se lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
Se lancer dans l'aventure microservices avec Spring Cloud - Julien RoySe lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
Se lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
 
Panorama des solutions mobile hybrides
Panorama des solutions mobile hybridesPanorama des solutions mobile hybrides
Panorama des solutions mobile hybrides
 
Le « RUN » (ou la Tierce Maintenance Applicative)
Le « RUN » (ou la Tierce Maintenance Applicative)Le « RUN » (ou la Tierce Maintenance Applicative)
Le « RUN » (ou la Tierce Maintenance Applicative)
 
Kinect pour les développeurs Web
Kinect pour les développeurs WebKinect pour les développeurs Web
Kinect pour les développeurs Web
 
Expériencer les objets connectés
Expériencer les objets connectésExpériencer les objets connectés
Expériencer les objets connectés
 
Industrialise PHP ~ ZendCon Europe 2013
Industrialise PHP ~ ZendCon Europe 2013Industrialise PHP ~ ZendCon Europe 2013
Industrialise PHP ~ ZendCon Europe 2013
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
Responsive Web Design - Enjeux, Solutions, Méthodologie
Responsive Web Design - Enjeux, Solutions, MéthodologieResponsive Web Design - Enjeux, Solutions, Méthodologie
Responsive Web Design - Enjeux, Solutions, Méthodologie
 
Java GC - Pause tuning
Java GC - Pause tuningJava GC - Pause tuning
Java GC - Pause tuning
 
SnapyX
SnapyXSnapyX
SnapyX
 
HTML5 vu par Ekino
HTML5 vu par EkinoHTML5 vu par Ekino
HTML5 vu par Ekino
 
OOM m'a tuer - Devoxx France 2012
OOM m'a tuer - Devoxx France 2012OOM m'a tuer - Devoxx France 2012
OOM m'a tuer - Devoxx France 2012
 

Industrialisation PHP - Canal+

  • 2. 22 Sonata Project Lead dev Polyglot: PHP, Python, Go, Javascript, Puppet, etc … @th0masr github.com/rande ThomasRabaix ArchitecteLogiciel ekino.
  • 4. 4
  • 5. 5
  • 6. 66 Aussi vieux que l’informatique Nouveaux outils Accessibilité des outils Industrialisation
  • 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
  • 13. 13
  • 15. 1515 Contrôle des VMs Wrapper en mode cli de virtualbox, vmware, etc … Machines ISO production Attention à la configuration de vagrant Vagrant
  • 16. 16 Est il possible d’écrire une documentation d’installation des outils suivant ? composer, php, php-fpm, phpunit, blackfire/xdebug/ xhprof, lib oracle, jvm, elasticsearch, redis, ruby, puppet, jenkins, plugins jenkins, node, npm, sass, bower, python, supervisor, mysql, apache, nginx, varnish, haproxy, vim, tmux, capistrano, gulp, sensu, supervisord, graphite, grafana, rabbitmq, jasmine, fluentd, behat, htop, iotop, fail2ban, memcached, mongodb, cron, postgresql, ulimit, pip, rvm, virtualenv, gunicorn, logrotate, dns, ntp, postfix, collectd, logstash, iptable, shorewall …
  • 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
  • 18. 18
  • 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
  • 25. 25
  • 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
  • 30. 3030 Pouce Driven Development Partage des connaissances Accompagnement des nouveaux sur le projet Github – Peer Review
  • 31. 3131 Communication et agrégateur de flux Accès rapide à l’information et aux changements S’intègre à des services tiers Flowdock
  • 33. 33
  • 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
  • 37. 37
  • 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
  • 42. 42
  • 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
  • 44. 44
  • 45. 45
  • 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