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.
2. La mesure, ce n'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, 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. 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.
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. 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. 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. 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 : 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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, 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. 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. 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
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. 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. 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. 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. Retour d'expérience ARTE GIE :
développement API
06/02/2015 35
●
Les besoins
●
Les choix techniques
●
Le reste à faire
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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 PARIS 2014
06/02/2015 48
Avez-vous des questions ?
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