Imprimer

Idées

Quelques idées de refactoring, optimisations, environnement et méthodologie de développements.

Forum PHP 2010

Les idées ci-dessous sont très largement inspirées des conférences du Forum PHP 2010, dont les slides sont disponibles sur le site de l'AFUP : Résumés du Forum 2010 (external link)

pair programming pro-actif et test-unitaires

  • 10 % du temps par exemple,
  • faire un planning pour faire en sorte que toutes les paires soient faites, en insistant sur celles qui ont le plus d'intérêt
  • Faire un planning et s'y tenir. Reporter en cas d'urgence.
  • Faire des revues avec pour cible les revues de code des low perfs
  • Utiliser des tests unitaires sur le cœur du framework
  • Pourquoi pas étendre à quelques objets métiers importants

Analyse de code source

  • Outils de suivi de standards de codage (syntaxe et pratiques)
  • PHP-CodeSniffer (external link) : cf. présentation pour les rulesets
  • Plateforme d'intégration de métrique : phpUnderControl, mais surtout, SonarPHP (maintenu par le conférencier)
  • D'autres outils plus pointus/expérimentaux :
    • PHP-Depend : adhérence du code source
    • PHPLoc : métriques de base mais efficace
    • PHPCPD : copy paste detector (!)
    • VLD : code inattegnable (!)

Lisibilité du code source

  • PHP Doc systématique
  • Splitter CMbObject (2400 lignes !!!) :
    • CPropsObject
      • Classification: modules
      • Metamodel: properties, class, validation
    • CStoredObject extends CPropsObject
      • Observation: handlers
      • Persistence: storage, navigation, querying, merging, seeking, cache, userlog
    • CMbObject extends CStoredObject
      • Configuration: permissions, object configs
      • Business: notes, documents, aides, views, affectations personnels (!), model templates

Sécurité

  • Arrimage de session plus fort, pour éviter le vol des cookies, par exemple sur l'adresse IP (le user agent est complètement falsifiable, l'IP l'est moins)
  • Vérifier les ACL sur toutes les URL: analyse de syntaxe, présence d'un CCanDo dans toutes les vues.

Persistance

  • Créer un driver CPDODataSource
  • Logger les requêtes SQL lentes et sans index (?) : baisser le threshold à 500ms
  • Envisager d'utiliser du NoSQL pour les données massives
  • Envisager d'utiliser la mémoire partagée key-value distribuée pour la scalabilité et la mise en cache : MemCached (+++), Redis

Monitoring

  • Nagios, zabbix : outil de monitoring apache
  • Pinba : extension PHP pour durée CPU RAM
  • Siege : tir de charge multi URL
  • jMeter : outil ultime, existe un session logger pour Firefox pour permettre de rejouer en charge
  • Zabbix : monitoring métier

Performances

  • Apache : Extension keepAlive, vérifier on utilisation, positionner à 3 sec par exemple
  • Xdebug : reprendre la présentation
  • Webgrind sur le serveur de dev
  • Aggrégation CSS,
  • Data URI Pour les petites images
  • toolbar monobloc au dessus de la barre des menus
  • Utiliser le cache pour les médicament BCB
  • Tracer toutes les data sources? SQL

Cloud computing

A titre indicatif, lire les slides (external link) très intéressantes.

  • Idée phare : self service de réssources formatiques, en particulier des serveurs web et mysql
  • Amazon fournit des serveurs de 10c a 2€ de l'heure
  • Pilotage par PHP possible, il existe des extensions et des classes pour monter/démonter des serveurs et les monitorer.
  • Force de frappe utile pour faire de la conversion de masse, des imports de masse, etc.
  • Il nous faut une image permettant d'avoir un Mb ready-to-go
  • Baobapp (external link) : plateforme beta du conférencier

Dernièrement modifié par Fabien2069 points  , Basé sur le travail de lryo10504 points  et mytto15470 points  .
Modifiée dernièrement le mardi 23 de novembre, 2010 14h21m06.

Sponsors privilégiés

Mediboard project