Forum PHP 2014 day 1

397 vues

Publié le

Quelques notes d'un administrateur système pas encore DevOps à un cycle de conférence très orienté PHP, mais aussi bonnes pratiques de développement ou architecture.

Publié dans : Ingénierie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Forum PHP 2014 day 1

  1. 1. FORUM PHP PARIS 2014FORUM PHP PARIS 2014 - 24/10/2014 1
  2. 2. La mesure, ce n'est pas que pour le DEVOPS 06/02/2015 2 • Pourquoi mesurer ? • Quel type de mesure ? • Comment mesurer ?
  3. 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. 4. 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 ?
  5. 5. 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.
  6. 6. La mesure, exemples 06/02/2015 6 Analytics Graphite Grafana Tessera
  7. 7. 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
  8. 8. 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 !
  9. 9. 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
  10. 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. 11. 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
  12. 12. 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 !
  13. 13. 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.
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. 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é
  21. 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. 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. 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. 24. 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.
  25. 25. 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 ?
  26. 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. 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. 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. 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. 30. Faster Application Development with CakePHP 3.0 06/02/2015 30 ● Qu'est-ce que CakePHP ● A quoi ça sert ● Les outils associés
  31. 31. 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
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. Retour d'expérience ARTE GIE : développement API 06/02/2015 35 ● Les besoins ● Les choix techniques ● Le reste à faire
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. 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à ….
  40. 40. 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
  41. 41. 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
  42. 42. 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
  43. 43. 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
  44. 44. 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
  45. 45. 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
  46. 46. 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
  47. 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. 48. FORUM PHP PARIS 2014 06/02/2015 48 Avez-vous des questions ?
  49. 49. 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

×