Blog

CakeFest 2014 à Madrid : l’avènement de CakePHP 3.0

Damien et moi avons fait le déplacement à Madrid pour assister aux conférences de l’édition annuelle du CakeFest, la rencontre internationale des développeurs CakePHP : 2 jours d’ateliers suivis de 2 jours de conférences.

Cela faisait plusieurs années que je n’y avais pas assisté pour ma part, et ce fut une première pour Damien. Nous sommes revenus de Madrid plus que jamais motivés par le framework.

TL;DR

Déjà c’est agréable de voir ou revoir les membres de la communauté, qui font du framework ce qu’il est. Des personnes ouvertes, très sympathiques, prêtes à échanger et partager leur savoir.

La communauté est toujours aussi vivante et dynamique, et l’arrivée de CakePHP3 est plus que bien accueillie. Nous avons (comme beaucoup d’autres) hâte de commencer à l’utiliser sur des projets car le framework est désormais un bon compromis entre dernières avancées du langage et les principes « KISS / DRY » qui en font la singularité depuis sa création.

… en plus il y avait un vrai gâteau comme à chaque fois … miam !

CakePHP 3

C’est bien sûr le sujet de discussion du moment. CakePHP3 sort du cycle des versions alpha, pour entrer dans la phase bêta. La première version bêta a été annoncée lors du CakeFest. L’équipe prévoit 2 versions bêta suivies de 2 RC, ce qui donnerait une version stable en début d’année 2015.

La sortie de CakePHP3 marquera la fin de vie de la version 1.3. Néanmoins la branche 2.x devrait voir encore plusieurs versions mineures, et aura au moins 3 ans de support comme cela a été le cas pour la branche 1.3.

Dès à présent l’API pour la version 3.0 est figée et il n’y aura pas de gros changements cassant la rétrocompatibilité, nous pouvons donc commencer à jouer avec. J’ai commencé à présenter les nouveautés, mais il y a tellement de choses à dire que nous ferons un article spécial d’ici quelques jours ! Stay tuned ;)

D’ici là les plus impatients peuvent se plonger sur la documentation (tutoriel du blog, guide de migration) et jouer avec les exemples disponibles (principalement pour s’imprégner du nouvel ORM).

De plus, des composants réutilisables vont être extraits du framework prochainement afin de favoriser l’utilisation de ces librairies dans d’autres applications. Vous pouvez déjà utiliser les Collections, la Validation, les Évènements et bientôt l’ORM !

CakePHP et l’Authentification

Cette conférence a présenté quelque chose que à laquelle tout développeur web doit faire face : l’authentification et la gestion des autorisations. Bien que CakePHP propose tout ce qu’il faut pour gérer ça proprement, il est fréquent de voir du code qui ne tire pas suffisamment partie des mécanismes du framework … rendant ainsi le code plus difficile à maintenir.

Jettez un coup d’oeil aux slides en ligne pour plus d’informations, si par exemple vous n’utilisez pas :

  • plusieurs « Authorizers » ou « Authentifiers » dans votre application. Exemples :
    • class OwnerAuthorize extends BaseAuthorize {}
    • class CookieAuthenticate extends BaseAuthenticate {} pour la fonctionnalité « se souvenir de moi »
  • le plugin FriendsOfCake/Authenticate

Enfin, si vous mettez en place de l’authentification par des réseaux sociaux jetez un œil à la nouvelle version (beta) de OpAuth

L’optimisation de performances

Mark Story a présenté un lot de conseils visant à améliorer les performances d’une application, en insistant sur le fait que l’optimisation du code est un dernier recours … et que le fait d’avoir un code bien découplé facilite cette étape. Ces conseils sont issus de son expérience chez FreshBooks, et pas nécessairement liés à CakePHP.

Voici les différentes étapes d’optimisation à effectuer dans l’ordre afin d’arriver rapidement et facilement à des résultats :

  1. Minifier les assets
  2. Compresser les images (Smushit)
  3. Réduire le nombre de requêtes HTTP (« Gzip all the things », cache headers éloignés)
  4. Optimiser les requêtes à la base de données : sous-requêtes sur des tables jointes, utiliser des outils comme pt-visual-explain
  5. Mettre en place du cache (attention aux problématiques d’invalidation)
    • le cache fichier n’est pas forcément plus performant que les requêtes en base
    • l’utilisation des sessions par fichiers est une source fréquente de ralentissement : l’utilisation de Memcache ou Redis pour déplacer ce stockage en mémoire est une source d’optimisation
  6. Optimisation de code (dernier recours, en profilant le code : XHProf ou XDebug)

Enfin, le point qui est revenu dans plusieurs autres conférences est que le travail réel (traitements métiers) n’a pas forcément à être optimisé. Le simple fait de mettre en place une architecture asynchrone permet d’améliorer considérablement la perception de performance tout en facilitant la maintenabilité de l’application (en utilisant RabbitMQ par exemple).

Écrire du code de qualité

J’ai remarqué que cette édition a eu son lot de conférences orientées qualité de code, comme beaucoup d’autres actuellement. Les sujets qui sont revenus sont notamment :

  • l’application des Objects Calisthenics afin d’améliorer la manière d’écrire du code et le rendre notamment plus testable
  • l’utilisation de librairies / code externes pour éviter de réinventer la roue (combattre le syndrôme du « Not Invented Here« )
  • les principes SOLID, DRY et autres GRASP ont été mentionnés à plusieurs reprises montrant qu’ils font partie de notre quotidien

Croogo pour des applications métiers

Cela a également été l’occasion pour moi de présenter nos retours d’expérience d’utilisation du CMS CakePHP Croogo comme socle pour construire des applications métiers. Étant le dernier conférencier du week-end (à 19h30 le dimanche !), j’étais comme beaucoup de participants assez fatigué et ne suis pas super satisfait de ma prestation … mais le message est passé et j’ai eu de bons retours.

Si vous voulez savoir comment arrêter de vous focaliser encore et toujours sur la construction d’un espace d’administration et sur des fonctionnalités « classiques » (gestion de catégories, mot de passe oublié …), jetez un coup d’oeil à ma présentation en ligne. Vous pourrez alors commencer vos projets par la logique métier spécifique à votre application.

Autres conférences

CakePHP étant utilisé pour construire des applications web, plusieurs conférences n’avaient pas de rapport direct avec le framework et ont permis de s’initier à des technologies que certains utilisent peu :

  • Initiation à Bootstrap 3
  • Initiation à AngularJS
  • Présentation de techniques pour utiliser MySQL à grande échelle : avec un tour d’horizon des outils mysql-utilities que je ne connaissais pas pour ma part
  • le A/B testing chez SeatGeek, avec présentation de leur outil Sixpack

Des sujets pratiques ont finis de rendre cette conférence très complète : un lot d’astuces pour mieux débugguer (outils techniques, astuces humaines), écrire des API que d’autres aimeront utiliser, améliorer l’expérience utilisateur sur les processus de paiements…

Enfin, l’utilisation de la très bonne librairie Faker du frenchy François Zaninotto a été mentionnée de nombreuses fois comme alternative aux fixtures. Cela va nous forcer à tester ça très rapidement !

Les « à côté »

La rencontre avec la communauté est l’occasion de rencontrer ceux qui font le framework et de sympathiser autour de bières, et ce CakeFest a encore une fois réussi sa mission.

Nous avons pu nous rendre compte de la grande utilisation du framework à l’étranger. Cela a permis de discuter de la « remotivation » de la communauté francophone et de la relation avec la fondation. Attendez vous donc à du nouveau dans les prochaines semaines !

En effet il y a une réelle volonté « marketing » de la part de la fondation. C’est à mon sens ce qu’il manque, alors faites la promotion du framework autour de vous, contribuez et discutons-en le plus possible !

Vers 2015

Vraiment plein de choses à ajouter dans notre backlog R&D ! Vivement l’an prochain pour revoir cette communauté qui me plaît tant. D’ici là j’espère avoir pu mettre le pied à l’étrier de Cake3 en production …

La prochaine édition sera sur le continent américain, vraisemblablement à New-York (à confirmer). Il se peut que d’ici là une rencontre ait lieu en Europe, mais ce qui est sûr c’est que vous aurez l’occasion de vous rencontrer en France ! Suivez l’évolution du site CakePHP-fr et le compte @cakephpfr.

Enfin pour toute question sur CakePHP3, n’hésitez pas à nous en faire part dans les commentaires, nous essaierons d’y répondre dans de futurs articles.