FORUM PHP PARIS 2014FORUM PHP PARIS 2014
- 24/10/2014
1
La mesure, ce n'est pas que pour le
DEVOPS
06/02/2015 2
• Pourquoi mesurer ?
• Quel type de mesure ?
• Comment mesurer ?
La mesure, pourquoi ?
06/02/2015 3
●
Pourquoi mesurer ?Pourquoi mesurer ?
– En LEAN Startup, comme en DEVOPS, le feedbackfeedback
est primordial pour
– L'Amélioration continue
●
Quel type de mesure ?
●
Comment mesurer ?
La mesure, le type
06/02/2015 4
●
Pourquoi mesurer ?
●
Quel type de mesure ?Quel type de mesure ?
– AAA : Actionnable, Auditable, Accessible
– Efficace / Vanité
●
Ex : % de code actif / nombre de ligne de code
– AARR : Acquisition, Activation, Rétention, Refère,
Revenue
●
1 utilisateur, s'enregistre, reviens, fait de la pub, achète le
produit
●
Comment mesurer ?
La mesure, comment
06/02/2015 5
●
Pourquoi mesurer ?
●
Quel type de mesure ?
●
Comment mesurer ?Comment mesurer ?
– Le plus connu : Google Analytics : simple, génération
de dashboard, Query Explorer pour export JSON, les
données chez Google
– Le plus « in » : statsDstatsD + Graphite : évolué, collectes
via UDP donc non intrusif, maîtrise les données.
La mesure, exemples
06/02/2015 6
Analytics
Graphite
Grafana
Tessera
La mesure, comment
06/02/2015 7
●
Pourquoi mesurer ?
●
Quel type de mesure ?
●
Comment mesurer ?Comment mesurer ?
– Les autres : MixPanels, PirateMetrics (hébergés)
– Dans l'application : AppDynamicsAppDynamics, Catchy.io
La mesure, chez Techsys
06/02/2015 8
●
Que retenir pour Techsys?
– Une bonne métrique est AAA (*)
– Une bonne métrologie est AARR (*)
– L'analyse permet de s'améliorer (donc de s'enrichir)
●
Quels outils regarder ?
– StatsD / Graphite / Grafana
●
Et nos clients ?Et nos clients ?
– Ils sont encore frileux, soyons prêts avant eux !
Industrialisation des environnements de dev
avec Puppet et Amazon
06/02/2015 9
●
Définition du besoin
●
Retour d'expérience,
les succès
●
Retour d'expérience,
les erreurs
Industrialisation, le besoin à la demande
06/02/2015 10
●
Définition du besoinDéfinition du besoin
– Environnements techniques complexes et variés
●
PHP, Symphony, RabbitMQ, MongoDB, Reddis, MySQL, ...
– BDD ou images non identiques à la production
●
bug, erreur normale, à cause de l'expression de besoin, ...
– Réactivité : maquettes pour le marketting
– Se rapprocher de l'hébergeur historique
●
Retour d'expérience, les succès
●
Retour d'expérience, les erreurs
Industrialisation : faciliter le provisionning
06/02/2015 11
●
Définition du besoin
●
Retour d'expérience, les succèsRetour d'expérience, les succès
– Offre Amazon énoOorme et adaptable
– Connaissances internes Puppet, gestion des dépendances (puis
utilisation de Foreman)
– Utilisation de packer.iopacker.io pour faciliter les workflows de provisionning
– Les alertes de budget d'AWS sont indispensables
– Kitchen, un framework pour Chef : « Infrastructure as codeInfrastructure as code »
– Opérationnel en 3 mois !
●
Retour d'expérience, les erreurs
Industrialisation : les erreurs à éviter
06/02/2015 12
●
Définition du besoin
●
Retour d'expérience, les succès
●
Retour d'expérience, les erreursRetour d'expérience, les erreurs
– Abandon de Puppet au profit de ChefChef utilisé en production
– Chef est moins contraignant, mieux documenté pour Amazon EC2
(via : CloudFormation)
– Réfléchir aux synchro de BDD (ex est-ce bien utile de répliquer une
instance qui ne bouge jamais comme les résultats d'élection ?)
– Attention, qui dit « à la demande » dit « éteindre les services inutiles »
sous peine de dépassement de budget !dépassement de budget !
Industrialisation : une spécialité Techsys ?
06/02/2015 13
●
Que retenir pour Techsys ?
– Amazon est mature, mais pas les utilisateurs, et encore moins les
collaborateurs : penser à monter un labo Techsys « pour se faire la
main » ?
– Bien étudier le besoin avant de répondre : puppet vs chef par exemple,
AWS vs Rackspace ou OVH, ...
●
Quels outils regarder ?
– Chef, Kitchen, Packer.io sont indispensables pour AWS (en 2014)
●
Et nos clients ?Et nos clients ?
– Ils ont du mal à identifier un prestataire Amazon de qualité.
– Ils ne savent pas encore que le Cloud à la demande revient vite plus
cher que l'hébergement illimité traditionnel en cas de mauvais réglage.
– Ils en veulent tous tout de suite.
PHP dans les distributions RPM
06/02/2015 14
●
PHP et les RPM
●
Les distributions RPM professionnelles
●
Les distributions RPM personnelles
●
Le futur pour les satisfaire tous
RPM : quel problème avec PHP ?
06/02/2015 15
●
PHP et les RPMPHP et les RPM
– Évolutions rapides, beaucoup de dépendancesdépendances :
PECL, PEAR, …
– PHP et les modules, combien de RPMs ?
●
Les distributions RPM professionnelles
●
Les distributions RPM personnelles
●
Le futur pour les satisfaire tous
RPM, rappel des distributions
06/02/2015 16
●
PHP et les RPM
●
Les distributions RPM professionnellesLes distributions RPM professionnelles
– RHEL / CentOS / OracleLinux
– Stabilité (13 ans), packages anciens mais avec les
patchs de sécurité
– Backports sans support
●
Les distributions RPM personnelles
●
Le futur pour les satisfaire tous
RPM, rappel des distributions
06/02/2015 17
●
PHP et les RPM
●
Les distributions RPM professionnelles
●
Les distributions RPM personnellesLes distributions RPM personnelles
– Fedora (labo à faire monter en RHEL)
– Packages très récents (parfois trop)
– Maximum 1 an pour une distribution
●
Le futur pour les satisfaire tous
RPM, rappel des distributions
06/02/2015 18
●
PHP et les RPM
●
Les distributions RPM professionnelles
●
Les distributions RPM personnelles
●
Le futur pour les satisfaire tous
– Les Software CollectionSoftware Collection ! « versionnées » par version majeure
d'application : la toute dernière version de PHP est dispo en RHEL 5 !
– Supportée 100 % RedHat et Satellite
– Cohabitation possible de plusieurs versions sans virtualisation
(scl enable / VHOST par version / surcharge du shebang)
– Intégration continue de la stack PHP grâce à Koschei
RPM, Techsys sait faire.
06/02/2015 19
●
Que retenir pour Techsys ?
– Techsys est partenaire RedHat
– Nous DEVONS répondre « Software Collection » sur les questions de
maintenance
– Nous DEVONS répondre « Erratas » sur les questions de sécurité
uniquement
●
Quels outils regarder ?
– http://www.softwarecollections.org
– Debian cherche une solution similaire
●
Et nos clients ?Et nos clients ?
– Ils utilisent massivement RedHat en physique ou virtualisé
– Ils ont des contraintes de maintenance de version ou de tests multiples
– Nous avons des réponses logicielles légitimes et supportées
Laisse pas traîner ton log
06/02/2015 20
●
Un log, pour quoi faire ?
●
Les bonnes méthodes ELK, ce qui
marche
●
Le cas Bla Bla Car, ce qui n'est pas traité
Les logs : définition
06/02/2015 21
●
Un log, pour quoi faire ?Un log, pour quoi faire ?
– Les activités systèmes et applicatives
– L'analyse d'erreurs
– L'amélioration continue
– Lire un log à travers ssh avec grep, tail, awk :
c'est juste pénible et pas pratique
●
Les bonnes méthodes ELK, ce qui
marche
●
Le cas Bla Bla Car, ce qui n'est pas traité
Les logs : bonnes méthodes
06/02/2015 22
●
Un log, pour quoi faire ?
●
Les bonnes méthodes ELK, ce qui marcheLes bonnes méthodes ELK, ce qui marche
– ElasticSearch, Logstash, Kibana : un standard, un seul prod et hors-prod
pour comparer facilement
– rsyslog pour le système
– monologmonolog pour l'application PHP
●
Surcharge du contexte PSR3 (ex : via les processors ajout du user-id)
●
1 channel monolog par application (1 pour Symfony, 1 pour Security, 1
pour une doctrine)
– Graylog Extended Log Format (GELFGELF) pour alimenter Logstash
– Une seule machine Amazon et 1 % de loadav pour 200000 event/min
●
Le cas Bla Bla Car, ce qui n'est pas traité
Les logs : ce qui n'est pas encore prêt
06/02/2015 23
●
Un log, pour quoi faire ?
●
Les bonnes méthodes ELK, ce qui marche
●
Le cas Bla Bla Car, ce qui n'est pas traitéLe cas Bla Bla Car, ce qui n'est pas traité
– La redondance de l'infra ou l'extension du stockage pour la rétention
●
rapatriement en local en cours d'étude
– Le volume autorise la perte de logs
●
Transfert en UDP, peu intrusif sur l'application ou la charge OS
– Pas d'anonymisation des logs
– ELK n'est pas utilisé pour ou par le monitoring, les consoles sont
ouvertes en permanence
– Pas encore d'utilisation par les équipes marketing
– Le framework Heka (Mozilla) est encore trop jeune et trop complexe
pour remplacer le trio de référence ElasticSearch / Logstash / Kibana
Les logs, une spécialité Techsys ?
06/02/2015 24
●
Que retenir pour Techsys ?
– ELK est très mature et est une référence
– Il faut définir QUOI loguer AVANT de dire COMMENT.
– C'est un outil formidable mais sans valeur ajoutée
– Notre valeur ajoutée, sa configuration « facile »
●
Quels outils regarder ?
– ELK mais aussi monolog et GELF
– Heka, plus tard
●
Et nos clients ?Et nos clients ?
– Ils veulent économiser SPLUNK et maîtriser leurs logs.
– Ils ont déjà ELK mais ne savent pas encore exploiter les « dashboards »
– Nous avons les bonnes méthodes d'intégration en main.
Architecture d'une application Full API
orientée micro service
06/02/2015 25
●
Pourquoi faire un micro service ?
●
Comment intégrer les micro service ?
●
Et après ?
Les micro services, pourquoi
06/02/2015 26
●
Pourquoi faire un micro service ?Pourquoi faire un micro service ?
– Pour la scalabilité & la robustesse d'une fonctionnalité
– Pour les évolutions techniques d'uned'une fonctionnalité
– Pour avoir une approche mobile / responsive
– Un micro service pour :
●
Un moteur de recherche
●
Un sommaire
●
Un moteur d'envoi de SMS (...)
●
Comment intégrer les micro service ?
●
Et après ?
Les micro services, comment
06/02/2015 27
●
Pourquoi faire un micro service ?
●
Comment intégrer les micro service ?Comment intégrer les micro service ?
– Communication en HTTP, format JSON
– Gérer les erreurs et logs tout de suite
●
Logentries (en gros c'est un ELK en mode SAS)
●
Un tag par micro service (1 User-Agent)
– Séparation lectures / écritures
●
Traitements Asynchrones par IronMQ (JMS server en mode SAS)
– Cache publique Varnish, pas de cache privé pour ne pas avoir à gérer
les invalidations
– Authentification mutuelle des micro services (SSL / OAuth2)
– Équipes de développement humaine : 1 équipe par micro service
●
Et après ?
Les micro services, pourquoi
06/02/2015 28
●
Pourquoi faire un micro service ?
●
Comment intégrer les micro service ?
●
Et après ?Et après ?
– Passer de OpenVZ à DockerDocker
●
Gaudi est un service SAS pour les micro services
– Ne pas avoir peur de se tromper
Les micro services, Techsys, déjà ?
06/02/2015 29
●
Que retenir pour Techsys ?
– Cette présentation est trop en avance sur son temps (KlubUp)
– Elle donne de bonnes pistes sur ce que seront les infrastructures
●
Quels outils regarder ?
– Les applications SAS : Logentries, IronMQ, Gaudi.io
●
Et nos clients ?Et nos clients ?
– Ils en sont très loin dans la technique, mais sont prêts / près dans
l'approche et leurs besoins
– Il ne leur reste qu'à revoir le mode webservice Java vers du micro
service en terme de design
– Et donc à tout redéveloppertout redévelopper from scratch … (« ça tue pas le métier »)
– Techsys a maintenant les bonnes pratiques
Faster Application Development
with CakePHP 3.0
06/02/2015 30
●
Qu'est-ce que CakePHP
●
A quoi ça sert
●
Les outils associés
CakePHP : c'est quoi
06/02/2015 31
●
Qu'est-ce que CakePHPQu'est-ce que CakePHP
– C'est l'ancêtre des framework PHP
– Annoncé comme l'un des plus matures
– Mais aussi très peu utilisé en France
●
A quoi ça sert
●
Les outils associés
CakePHP : pour quoi faire
06/02/2015 32
●
Qu'est-ce que CakePHP
●
A quoi ça sertA quoi ça sert
– A développer des sites web facilement
– Sans connaissance
– Transforme PHP en application Middleware
– Object Relational Mapping natif (jointure SQL facilité)
– Intégration de mapreduce et optimisation de querycache
●
Les outils associés
CakePHP : les outils
06/02/2015 33
●
Qu'est-ce que CakePHP
●
A quoi ça sert
●
Les outils associésLes outils associés
– Migration PHP facilité par phinx.org
– « Let's baking, put the cake in the oven », Bake, générateur de code
PHP pour CakePHP
– DebugKit : barre d'outil intégrée pour … débugguer le code Bake
– CRUD plugin pour ne plus avoir à gérer les exceptions et erreurs
CakePHP : pour Techsys
06/02/2015 34
●
Que retenir pour Techsys ?
– C'est un framework que l'on peut conseiller
– Le projet a l'air sympa pour notre futur intranet
– Le mainteneur est cool (au sens ricain, pas au sens français)
●
Quels outils regarder ?
– CakePHP lui même, à la mode avec toutes ces émissions culinaires 
dans le poste de télévision ...
●
Et nos clients ?Et nos clients ?
– Nos clients utilisateurs de PHP ont encore des produits tout faits
(drupal, joomla, ….) et
– Sont donc encore loin de ce besoinloin de ce besoin
Retour d'expérience ARTE GIE :
développement API
06/02/2015 35
●
Les besoins
●
Les choix techniques
●
Le reste à faire
ARTE : les besoins
06/02/2015 36
●
Les besoinsLes besoins
– Interface multi-langues
– Diffusion de contenu vidéo : Arte +7, Arte Concert, mini-sites pour les
émissions, ...
– Accès multicanals : Browser, HBBTV, iOS, Android, FirefoxOS
– Respect des droits d'auteurs, gestion de la QoS, cloisonnement et sécurité
des applications …
– OpenData
●
Les choix techniques
●
Le reste à faire
ARTE : les choix
06/02/2015 37
●
Les besoins
●
Les choix techniquesLes choix techniques
– Symfony 2, REST, MongoDB, RabbitMQ
– OpenResty (Reverse Proxy Middleware pour le serveur Web NGINX)
– Micro Services (une API par application)
– Standard {json:api} : annotations, plusieurs documents en une requête
– Sécurité
●
Rôle et limites : OAuth2 => retour protocolaires HTTP
●
NGINX + LUA (access_by_lua) => scripting pour les API
●
Cache Varnish devant les API
●
Le reste à faire
ARTE : le reste à faire
06/02/2015 38
●
Les besoins
●
Les choix techniques
●
Le reste à faireLe reste à faire
– Être en capacité à accueillir plus de 1500 req/min si plus d'audience
– Libération du code du JMSSerializer sur Github
– Libération du code Serveur sur Github
– Exploitation des métriques avec statsD
– Intégration ArteTV dans un module Drupal (presque terminé)
– Loadbalancing avec HHVM
ARTE : pour Techsys
06/02/2015 39
●
Que retenir pour Techsys ?
– Retour sur des choix architecturaux
– Importance du respect des standards
●
Quels outils regarder ?
– OpenResty et son NGINX « adapté »
– Hip Hop Virtual Machine (HHVMHHVM) : la virtualisation du
Middleware PHP par Facebook ™
●
Et nos clients ?Et nos clients ?
– On n'en est pas encore là ….
Déploiement continu :
un pas de plus vers le DEVOPS
06/02/2015 40
●
Rappels sur le mouvement DEVOPS
●
Bonnes pratiques d'intégration continue
●
Solutions techniques
DEVOPS : le mouvement
06/02/2015 41
●
Rappels sur le mouvement DEVOPSRappels sur le mouvement DEVOPS
– Réunion des Développeurs et Opérationnels (sysadmin) pour :
●
Réduction du « Time To Market »
●
Diminution des risques
●
Amélioration continue
– « It is not the strongest of the species that survives, nor the most 
intelligent, but rather the one most adaptable to change. » (Leon C.
Megginson)
●
Bonnes pratiques d'intégration continue
●
Solutions techniques
●
Conclusions
DEVOPS : intégration continue
06/02/2015 42
●
Rappels sur le mouvement DEVOPS
●
Bonnes pratiques d'intégrationBonnes pratiques d'intégration
continuecontinue
– Méthode agile proche de SCRUM ou LEAN Startup : sprint de release
– Équipe à taille humaine : « pizza team » de Jeff Bezos
– Dans l'ordre : déploiement en assemblage, intégration continue, tests
et livraison, déploiement en production en permanence
– Répéter au maximum pour qu'une mise en production devienne banale
●
Solutions techniques
●
Conclusions
DEVOPS : techniques
06/02/2015 43
●
Rappels sur le mouvement DEVOPS
●
Bonnes pratiques d'intégration continue
●
Solutions techniquesSolutions techniques
– Versionning du code : SVN, Git, … , Github
– Se donner les moyens d'une « Infrastructure As A Code » avec Chef,
Puppet, Ansible, …
– Automatiser les phases de tests : Jenkins ou Travis (appli SAS)
– Mettre du monitoring à chaque étape : ELK ou NewRelic (appli SAS)
– Déploiement continu : Fabric, Capistrano
●
Conclusions
DEVOPS : conclusions
06/02/2015 44
●
Rappels sur le mouvement DEVOPS
●
Bonnes pratiques d'intégration continue
●
Solutions techniques
●
ConclusionsConclusions
– Le DevOps permet le « feature flippingfeature flipping » : mise en production d'une
et une seule fonctionnalité
– Le DevOps permet le « Canary TestingCanary Testing » : montée par pallier
– Le DevOps autorise le « Design to FailureDesign to Failure » : Netflix a inventé le job
de « Chaos Monkey » pour optimiser la robustesse de son code
DEVOPS : Techsys est prêt
06/02/2015 45
●
Que retenir pour Techsys ?
– Le métier d'adminsys laisse peu à peu la place au DevOps
– Les bonnes pratiques ne sont que des rappels évidents et permettent
l'amélioration continue et le gain d'argent
●
Quels outils regarder ?
– Travis, NewRelic, Capistrano
●
Et nos clients ?Et nos clients ?
– Ils sont à des années lumière de cette réflexion. Ils n'ont pas encore
compris l'intérêt du versionning applicatif pour certains.
– Les réalisations « Twitter / FlickR / NetFlix » leurs semblent
inaccessibles
Conclusions
06/02/2015 46
●
Que retenir pour Techsys ?
– Les mouvements DEVOPS et LEAN Startup permettent l'intégration
continue
– Un des moyens d'y arriver et de mesurer tous les indicateurs
– De multiplier les services ou les micro services
●
Quels outils regarder ?
– Monolog, rSyslog, ElasticSearch, Logstash, Kibana, statsD, Graphite,
Grafana, Puppet, Chef, packer.io, Kitchen, Capistrano, RabbitMQ,
OpenResty, Varnish
– MixPanels, Travis, NewRelic, Logentries, IronMQ
– Amazon AWS, Docker, Gaudi, HHVM
– Les Software Collections RPM, phinx.org
Conclusions
06/02/2015 47
●
A lire
– Lean Startup par Eric Ries
– State Of DevOps Reports par PuppetLabs
●
Le clou de la journée
– La démo par MicrosoftMicrosoft d'un déploiement agile de PHP dans un
environnement AzureAzure, pour héberger en 5 minutes un VM versionnée
avec GIT, son serveur Web Iis. Son administration se faisait via un
browser Chrome dans une Virtualbox démarrée sur un MacOS. Le tout
était permis grace à un HTC Android qui partageait la connexion 3G.
J'ai bien lu Microsoft au début ? Oui oui ….
– Le second, dans un registre différent, la « karaoke conferencekaraoke conference », une
clôture en mode « match d'improvisation » sur des slides improbables.
FORUM PHP PARIS 2014
06/02/2015 48
Avez-vous des questions ?
FORUM PHP PARIS 2014
06/02/2015 49
Vos idées sont les bienvenues
Merci !
+33.6.32.19.76.71
o.duquesne@techsys.fr
@techsys_fr
@oduquesne

Forum PHP 2014 day 1

  • 1.
    FORUM PHP PARIS2014FORUM PHP PARIS 2014 - 24/10/2014 1
  • 2.
    La mesure, cen'est pas que pour le DEVOPS 06/02/2015 2 • Pourquoi mesurer ? • Quel type de mesure ? • Comment mesurer ?
  • 3.
    La mesure, pourquoi? 06/02/2015 3 ● Pourquoi mesurer ?Pourquoi mesurer ? – En LEAN Startup, comme en DEVOPS, le feedbackfeedback est primordial pour – L'Amélioration continue ● Quel type de mesure ? ● Comment mesurer ?
  • 4.
    La mesure, letype 06/02/2015 4 ● Pourquoi mesurer ? ● Quel type de mesure ?Quel type de mesure ? – AAA : Actionnable, Auditable, Accessible – Efficace / Vanité ● Ex : % de code actif / nombre de ligne de code – AARR : Acquisition, Activation, Rétention, Refère, Revenue ● 1 utilisateur, s'enregistre, reviens, fait de la pub, achète le produit ● Comment mesurer ?
  • 5.
    La mesure, comment 06/02/20155 ● Pourquoi mesurer ? ● Quel type de mesure ? ● Comment mesurer ?Comment mesurer ? – Le plus connu : Google Analytics : simple, génération de dashboard, Query Explorer pour export JSON, les données chez Google – Le plus « in » : statsDstatsD + Graphite : évolué, collectes via UDP donc non intrusif, maîtrise les données.
  • 6.
    La mesure, exemples 06/02/20156 Analytics Graphite Grafana Tessera
  • 7.
    La mesure, comment 06/02/20157 ● Pourquoi mesurer ? ● Quel type de mesure ? ● Comment mesurer ?Comment mesurer ? – Les autres : MixPanels, PirateMetrics (hébergés) – Dans l'application : AppDynamicsAppDynamics, Catchy.io
  • 8.
    La mesure, chezTechsys 06/02/2015 8 ● Que retenir pour Techsys? – Une bonne métrique est AAA (*) – Une bonne métrologie est AARR (*) – L'analyse permet de s'améliorer (donc de s'enrichir) ● Quels outils regarder ? – StatsD / Graphite / Grafana ● Et nos clients ?Et nos clients ? – Ils sont encore frileux, soyons prêts avant eux !
  • 9.
    Industrialisation des environnementsde dev avec Puppet et Amazon 06/02/2015 9 ● Définition du besoin ● Retour d'expérience, les succès ● Retour d'expérience, les erreurs
  • 10.
    Industrialisation, le besoinà la demande 06/02/2015 10 ● Définition du besoinDéfinition du besoin – Environnements techniques complexes et variés ● PHP, Symphony, RabbitMQ, MongoDB, Reddis, MySQL, ... – BDD ou images non identiques à la production ● bug, erreur normale, à cause de l'expression de besoin, ... – Réactivité : maquettes pour le marketting – Se rapprocher de l'hébergeur historique ● Retour d'expérience, les succès ● Retour d'expérience, les erreurs
  • 11.
    Industrialisation : faciliterle provisionning 06/02/2015 11 ● Définition du besoin ● Retour d'expérience, les succèsRetour d'expérience, les succès – Offre Amazon énoOorme et adaptable – Connaissances internes Puppet, gestion des dépendances (puis utilisation de Foreman) – Utilisation de packer.iopacker.io pour faciliter les workflows de provisionning – Les alertes de budget d'AWS sont indispensables – Kitchen, un framework pour Chef : « Infrastructure as codeInfrastructure as code » – Opérationnel en 3 mois ! ● Retour d'expérience, les erreurs
  • 12.
    Industrialisation : leserreurs à éviter 06/02/2015 12 ● Définition du besoin ● Retour d'expérience, les succès ● Retour d'expérience, les erreursRetour d'expérience, les erreurs – Abandon de Puppet au profit de ChefChef utilisé en production – Chef est moins contraignant, mieux documenté pour Amazon EC2 (via : CloudFormation) – Réfléchir aux synchro de BDD (ex est-ce bien utile de répliquer une instance qui ne bouge jamais comme les résultats d'élection ?) – Attention, qui dit « à la demande » dit « éteindre les services inutiles » sous peine de dépassement de budget !dépassement de budget !
  • 13.
    Industrialisation : unespécialité Techsys ? 06/02/2015 13 ● Que retenir pour Techsys ? – Amazon est mature, mais pas les utilisateurs, et encore moins les collaborateurs : penser à monter un labo Techsys « pour se faire la main » ? – Bien étudier le besoin avant de répondre : puppet vs chef par exemple, AWS vs Rackspace ou OVH, ... ● Quels outils regarder ? – Chef, Kitchen, Packer.io sont indispensables pour AWS (en 2014) ● Et nos clients ?Et nos clients ? – Ils ont du mal à identifier un prestataire Amazon de qualité. – Ils ne savent pas encore que le Cloud à la demande revient vite plus cher que l'hébergement illimité traditionnel en cas de mauvais réglage. – Ils en veulent tous tout de suite.
  • 14.
    PHP dans lesdistributions RPM 06/02/2015 14 ● PHP et les RPM ● Les distributions RPM professionnelles ● Les distributions RPM personnelles ● Le futur pour les satisfaire tous
  • 15.
    RPM : quelproblème avec PHP ? 06/02/2015 15 ● PHP et les RPMPHP et les RPM – Évolutions rapides, beaucoup de dépendancesdépendances : PECL, PEAR, … – PHP et les modules, combien de RPMs ? ● Les distributions RPM professionnelles ● Les distributions RPM personnelles ● Le futur pour les satisfaire tous
  • 16.
    RPM, rappel desdistributions 06/02/2015 16 ● PHP et les RPM ● Les distributions RPM professionnellesLes distributions RPM professionnelles – RHEL / CentOS / OracleLinux – Stabilité (13 ans), packages anciens mais avec les patchs de sécurité – Backports sans support ● Les distributions RPM personnelles ● Le futur pour les satisfaire tous
  • 17.
    RPM, rappel desdistributions 06/02/2015 17 ● PHP et les RPM ● Les distributions RPM professionnelles ● Les distributions RPM personnellesLes distributions RPM personnelles – Fedora (labo à faire monter en RHEL) – Packages très récents (parfois trop) – Maximum 1 an pour une distribution ● Le futur pour les satisfaire tous
  • 18.
    RPM, rappel desdistributions 06/02/2015 18 ● PHP et les RPM ● Les distributions RPM professionnelles ● Les distributions RPM personnelles ● Le futur pour les satisfaire tous – Les Software CollectionSoftware Collection ! « versionnées » par version majeure d'application : la toute dernière version de PHP est dispo en RHEL 5 ! – Supportée 100 % RedHat et Satellite – Cohabitation possible de plusieurs versions sans virtualisation (scl enable / VHOST par version / surcharge du shebang) – Intégration continue de la stack PHP grâce à Koschei
  • 19.
    RPM, Techsys saitfaire. 06/02/2015 19 ● Que retenir pour Techsys ? – Techsys est partenaire RedHat – Nous DEVONS répondre « Software Collection » sur les questions de maintenance – Nous DEVONS répondre « Erratas » sur les questions de sécurité uniquement ● Quels outils regarder ? – http://www.softwarecollections.org – Debian cherche une solution similaire ● Et nos clients ?Et nos clients ? – Ils utilisent massivement RedHat en physique ou virtualisé – Ils ont des contraintes de maintenance de version ou de tests multiples – Nous avons des réponses logicielles légitimes et supportées
  • 20.
    Laisse pas traînerton log 06/02/2015 20 ● Un log, pour quoi faire ? ● Les bonnes méthodes ELK, ce qui marche ● Le cas Bla Bla Car, ce qui n'est pas traité
  • 21.
    Les logs :définition 06/02/2015 21 ● Un log, pour quoi faire ?Un log, pour quoi faire ? – Les activités systèmes et applicatives – L'analyse d'erreurs – L'amélioration continue – Lire un log à travers ssh avec grep, tail, awk : c'est juste pénible et pas pratique ● Les bonnes méthodes ELK, ce qui marche ● Le cas Bla Bla Car, ce qui n'est pas traité
  • 22.
    Les logs :bonnes méthodes 06/02/2015 22 ● Un log, pour quoi faire ? ● Les bonnes méthodes ELK, ce qui marcheLes bonnes méthodes ELK, ce qui marche – ElasticSearch, Logstash, Kibana : un standard, un seul prod et hors-prod pour comparer facilement – rsyslog pour le système – monologmonolog pour l'application PHP ● Surcharge du contexte PSR3 (ex : via les processors ajout du user-id) ● 1 channel monolog par application (1 pour Symfony, 1 pour Security, 1 pour une doctrine) – Graylog Extended Log Format (GELFGELF) pour alimenter Logstash – Une seule machine Amazon et 1 % de loadav pour 200000 event/min ● Le cas Bla Bla Car, ce qui n'est pas traité
  • 23.
    Les logs :ce qui n'est pas encore prêt 06/02/2015 23 ● Un log, pour quoi faire ? ● Les bonnes méthodes ELK, ce qui marche ● Le cas Bla Bla Car, ce qui n'est pas traitéLe cas Bla Bla Car, ce qui n'est pas traité – La redondance de l'infra ou l'extension du stockage pour la rétention ● rapatriement en local en cours d'étude – Le volume autorise la perte de logs ● Transfert en UDP, peu intrusif sur l'application ou la charge OS – Pas d'anonymisation des logs – ELK n'est pas utilisé pour ou par le monitoring, les consoles sont ouvertes en permanence – Pas encore d'utilisation par les équipes marketing – Le framework Heka (Mozilla) est encore trop jeune et trop complexe pour remplacer le trio de référence ElasticSearch / Logstash / Kibana
  • 24.
    Les logs, unespécialité Techsys ? 06/02/2015 24 ● Que retenir pour Techsys ? – ELK est très mature et est une référence – Il faut définir QUOI loguer AVANT de dire COMMENT. – C'est un outil formidable mais sans valeur ajoutée – Notre valeur ajoutée, sa configuration « facile » ● Quels outils regarder ? – ELK mais aussi monolog et GELF – Heka, plus tard ● Et nos clients ?Et nos clients ? – Ils veulent économiser SPLUNK et maîtriser leurs logs. – Ils ont déjà ELK mais ne savent pas encore exploiter les « dashboards » – Nous avons les bonnes méthodes d'intégration en main.
  • 25.
    Architecture d'une applicationFull API orientée micro service 06/02/2015 25 ● Pourquoi faire un micro service ? ● Comment intégrer les micro service ? ● Et après ?
  • 26.
    Les micro services,pourquoi 06/02/2015 26 ● Pourquoi faire un micro service ?Pourquoi faire un micro service ? – Pour la scalabilité & la robustesse d'une fonctionnalité – Pour les évolutions techniques d'uned'une fonctionnalité – Pour avoir une approche mobile / responsive – Un micro service pour : ● Un moteur de recherche ● Un sommaire ● Un moteur d'envoi de SMS (...) ● Comment intégrer les micro service ? ● Et après ?
  • 27.
    Les micro services,comment 06/02/2015 27 ● Pourquoi faire un micro service ? ● Comment intégrer les micro service ?Comment intégrer les micro service ? – Communication en HTTP, format JSON – Gérer les erreurs et logs tout de suite ● Logentries (en gros c'est un ELK en mode SAS) ● Un tag par micro service (1 User-Agent) – Séparation lectures / écritures ● Traitements Asynchrones par IronMQ (JMS server en mode SAS) – Cache publique Varnish, pas de cache privé pour ne pas avoir à gérer les invalidations – Authentification mutuelle des micro services (SSL / OAuth2) – Équipes de développement humaine : 1 équipe par micro service ● Et après ?
  • 28.
    Les micro services,pourquoi 06/02/2015 28 ● Pourquoi faire un micro service ? ● Comment intégrer les micro service ? ● Et après ?Et après ? – Passer de OpenVZ à DockerDocker ● Gaudi est un service SAS pour les micro services – Ne pas avoir peur de se tromper
  • 29.
    Les micro services,Techsys, déjà ? 06/02/2015 29 ● Que retenir pour Techsys ? – Cette présentation est trop en avance sur son temps (KlubUp) – Elle donne de bonnes pistes sur ce que seront les infrastructures ● Quels outils regarder ? – Les applications SAS : Logentries, IronMQ, Gaudi.io ● Et nos clients ?Et nos clients ? – Ils en sont très loin dans la technique, mais sont prêts / près dans l'approche et leurs besoins – Il ne leur reste qu'à revoir le mode webservice Java vers du micro service en terme de design – Et donc à tout redéveloppertout redévelopper from scratch … (« ça tue pas le métier ») – Techsys a maintenant les bonnes pratiques
  • 30.
    Faster Application Development withCakePHP 3.0 06/02/2015 30 ● Qu'est-ce que CakePHP ● A quoi ça sert ● Les outils associés
  • 31.
    CakePHP : c'estquoi 06/02/2015 31 ● Qu'est-ce que CakePHPQu'est-ce que CakePHP – C'est l'ancêtre des framework PHP – Annoncé comme l'un des plus matures – Mais aussi très peu utilisé en France ● A quoi ça sert ● Les outils associés
  • 32.
    CakePHP : pourquoi faire 06/02/2015 32 ● Qu'est-ce que CakePHP ● A quoi ça sertA quoi ça sert – A développer des sites web facilement – Sans connaissance – Transforme PHP en application Middleware – Object Relational Mapping natif (jointure SQL facilité) – Intégration de mapreduce et optimisation de querycache ● Les outils associés
  • 33.
    CakePHP : lesoutils 06/02/2015 33 ● Qu'est-ce que CakePHP ● A quoi ça sert ● Les outils associésLes outils associés – Migration PHP facilité par phinx.org – « Let's baking, put the cake in the oven », Bake, générateur de code PHP pour CakePHP – DebugKit : barre d'outil intégrée pour … débugguer le code Bake – CRUD plugin pour ne plus avoir à gérer les exceptions et erreurs
  • 34.
    CakePHP : pourTechsys 06/02/2015 34 ● Que retenir pour Techsys ? – C'est un framework que l'on peut conseiller – Le projet a l'air sympa pour notre futur intranet – Le mainteneur est cool (au sens ricain, pas au sens français) ● Quels outils regarder ? – CakePHP lui même, à la mode avec toutes ces émissions culinaires  dans le poste de télévision ... ● Et nos clients ?Et nos clients ? – Nos clients utilisateurs de PHP ont encore des produits tout faits (drupal, joomla, ….) et – Sont donc encore loin de ce besoinloin de ce besoin
  • 35.
    Retour d'expérience ARTEGIE : développement API 06/02/2015 35 ● Les besoins ● Les choix techniques ● Le reste à faire
  • 36.
    ARTE : lesbesoins 06/02/2015 36 ● Les besoinsLes besoins – Interface multi-langues – Diffusion de contenu vidéo : Arte +7, Arte Concert, mini-sites pour les émissions, ... – Accès multicanals : Browser, HBBTV, iOS, Android, FirefoxOS – Respect des droits d'auteurs, gestion de la QoS, cloisonnement et sécurité des applications … – OpenData ● Les choix techniques ● Le reste à faire
  • 37.
    ARTE : leschoix 06/02/2015 37 ● Les besoins ● Les choix techniquesLes choix techniques – Symfony 2, REST, MongoDB, RabbitMQ – OpenResty (Reverse Proxy Middleware pour le serveur Web NGINX) – Micro Services (une API par application) – Standard {json:api} : annotations, plusieurs documents en une requête – Sécurité ● Rôle et limites : OAuth2 => retour protocolaires HTTP ● NGINX + LUA (access_by_lua) => scripting pour les API ● Cache Varnish devant les API ● Le reste à faire
  • 38.
    ARTE : lereste à faire 06/02/2015 38 ● Les besoins ● Les choix techniques ● Le reste à faireLe reste à faire – Être en capacité à accueillir plus de 1500 req/min si plus d'audience – Libération du code du JMSSerializer sur Github – Libération du code Serveur sur Github – Exploitation des métriques avec statsD – Intégration ArteTV dans un module Drupal (presque terminé) – Loadbalancing avec HHVM
  • 39.
    ARTE : pourTechsys 06/02/2015 39 ● Que retenir pour Techsys ? – Retour sur des choix architecturaux – Importance du respect des standards ● Quels outils regarder ? – OpenResty et son NGINX « adapté » – Hip Hop Virtual Machine (HHVMHHVM) : la virtualisation du Middleware PHP par Facebook ™ ● Et nos clients ?Et nos clients ? – On n'en est pas encore là ….
  • 40.
    Déploiement continu : unpas de plus vers le DEVOPS 06/02/2015 40 ● Rappels sur le mouvement DEVOPS ● Bonnes pratiques d'intégration continue ● Solutions techniques
  • 41.
    DEVOPS : lemouvement 06/02/2015 41 ● Rappels sur le mouvement DEVOPSRappels sur le mouvement DEVOPS – Réunion des Développeurs et Opérationnels (sysadmin) pour : ● Réduction du « Time To Market » ● Diminution des risques ● Amélioration continue – « It is not the strongest of the species that survives, nor the most  intelligent, but rather the one most adaptable to change. » (Leon C. Megginson) ● Bonnes pratiques d'intégration continue ● Solutions techniques ● Conclusions
  • 42.
    DEVOPS : intégrationcontinue 06/02/2015 42 ● Rappels sur le mouvement DEVOPS ● Bonnes pratiques d'intégrationBonnes pratiques d'intégration continuecontinue – Méthode agile proche de SCRUM ou LEAN Startup : sprint de release – Équipe à taille humaine : « pizza team » de Jeff Bezos – Dans l'ordre : déploiement en assemblage, intégration continue, tests et livraison, déploiement en production en permanence – Répéter au maximum pour qu'une mise en production devienne banale ● Solutions techniques ● Conclusions
  • 43.
    DEVOPS : techniques 06/02/201543 ● Rappels sur le mouvement DEVOPS ● Bonnes pratiques d'intégration continue ● Solutions techniquesSolutions techniques – Versionning du code : SVN, Git, … , Github – Se donner les moyens d'une « Infrastructure As A Code » avec Chef, Puppet, Ansible, … – Automatiser les phases de tests : Jenkins ou Travis (appli SAS) – Mettre du monitoring à chaque étape : ELK ou NewRelic (appli SAS) – Déploiement continu : Fabric, Capistrano ● Conclusions
  • 44.
    DEVOPS : conclusions 06/02/201544 ● Rappels sur le mouvement DEVOPS ● Bonnes pratiques d'intégration continue ● Solutions techniques ● ConclusionsConclusions – Le DevOps permet le « feature flippingfeature flipping » : mise en production d'une et une seule fonctionnalité – Le DevOps permet le « Canary TestingCanary Testing » : montée par pallier – Le DevOps autorise le « Design to FailureDesign to Failure » : Netflix a inventé le job de « Chaos Monkey » pour optimiser la robustesse de son code
  • 45.
    DEVOPS : Techsysest prêt 06/02/2015 45 ● Que retenir pour Techsys ? – Le métier d'adminsys laisse peu à peu la place au DevOps – Les bonnes pratiques ne sont que des rappels évidents et permettent l'amélioration continue et le gain d'argent ● Quels outils regarder ? – Travis, NewRelic, Capistrano ● Et nos clients ?Et nos clients ? – Ils sont à des années lumière de cette réflexion. Ils n'ont pas encore compris l'intérêt du versionning applicatif pour certains. – Les réalisations « Twitter / FlickR / NetFlix » leurs semblent inaccessibles
  • 46.
    Conclusions 06/02/2015 46 ● Que retenirpour Techsys ? – Les mouvements DEVOPS et LEAN Startup permettent l'intégration continue – Un des moyens d'y arriver et de mesurer tous les indicateurs – De multiplier les services ou les micro services ● Quels outils regarder ? – Monolog, rSyslog, ElasticSearch, Logstash, Kibana, statsD, Graphite, Grafana, Puppet, Chef, packer.io, Kitchen, Capistrano, RabbitMQ, OpenResty, Varnish – MixPanels, Travis, NewRelic, Logentries, IronMQ – Amazon AWS, Docker, Gaudi, HHVM – Les Software Collections RPM, phinx.org
  • 47.
    Conclusions 06/02/2015 47 ● A lire –Lean Startup par Eric Ries – State Of DevOps Reports par PuppetLabs ● Le clou de la journée – La démo par MicrosoftMicrosoft d'un déploiement agile de PHP dans un environnement AzureAzure, pour héberger en 5 minutes un VM versionnée avec GIT, son serveur Web Iis. Son administration se faisait via un browser Chrome dans une Virtualbox démarrée sur un MacOS. Le tout était permis grace à un HTC Android qui partageait la connexion 3G. J'ai bien lu Microsoft au début ? Oui oui …. – Le second, dans un registre différent, la « karaoke conferencekaraoke conference », une clôture en mode « match d'improvisation » sur des slides improbables.
  • 48.
    FORUM PHP PARIS2014 06/02/2015 48 Avez-vous des questions ?
  • 49.
    FORUM PHP PARIS2014 06/02/2015 49 Vos idées sont les bienvenues Merci ! +33.6.32.19.76.71 o.duquesne@techsys.fr @techsys_fr @oduquesne

Notes de l'éditeur

  • #2 <numéro>