Cakefest #3 – Premier jour de conférences

«»

Cohabitation et copropriété d’applications CakePHP – Robert Scherer

Le titre « original » est « Multi-Tenancy in CakePHP » mais j’ai eu un peu de mal à traduire le titre ;)

Cette présentation n’était pas planifiée initialement mais s’est avéré très intéressante car elle consiste en un retour concret d’expérience de la part d’une société de consulting. Le projet présenté consistait à fournir un système métier de gestion d’assurances automobiles en marque blanche. Ce projet a été développé en CakePHP par la société M-Invent GmbH (il me semble !) et était un vrai challenge au niveau de la conception.

En effet, il fallait créer une application générique pouvant être également très finement adaptée pour les besoins de chaque site créé. La solution qu’ils ont reprise (en place avant leur intervention) était assez mal développée et la duplication et la cohabitation des différents sites était gérée par du copier-coller pur et simple ! Il est évident que la maintenance de ces applications était devenue impossible. Au final, la solution livrée permettait de créer de manière haut-niveau un nouveau site contenant les informations souhaitées, et correspondant parfaitement à chaque attente spécifique. Ce logiciel était vendu en mode SaaS.

Chaque application devait contenir différents rôles communs à toutes les applications mais restreints à celle-ci. C’est à dire que chaque application contenait les rôles suivants :

  • Vendeur d’assurance (propriétaire du projet)
  • Mandataires (entreprises automobiles)
  • Vendeurs (vendeurs de véhicules)

Et bien sûr chaque application devait être adaptée aux besoins de chacun des clients, ce qui a imposé des challenges concernant les points suivants :

  • Différence au niveau des fonctionnalités
  • Différence de processus métier
  • Séparer clairement les données et les sécuriser (chaque application doit être totalement cloisonnée)
  • Apparences différentes (CSS spécifiques et utilisation des thèmes de CakePHP)

CakePHP a permis de résoudre simplement la plupart de ces challenges grâce aux mécanismes fournis et notamment aux composants Auth et ACL. De plus la gestion des thèmes proposée par CakePHP a été très utile pour la personnalisation de l’interface de chacune des applications. D’autre part, Robert a présenté rapidement l’architecture générique qui avait été choisie pour ce projet.

L’application était divisée en modules (classe et contrôleur) pouvant contenir plusieurs addons (classe et éléments). Les classes existantes étaient donc :

  • AppController
  • Modules : (AppController > ) ModuleAppController > ModuleController (pour chacun des modules)
  • Addon : intégrés et utilisés au sein de chaque ModuleController

Une fois cette architecture présentée, la conférence a consisté à une démonstration de certains écrans des applications prouvant à quel point ils étaient parvenus à personnaliser chaque application. Cette présentation était donc très intéressante car il s’agissait d’un retour concret d’expérience de professionnels ayant effectué un travail remarquable pour tirer pleinement partie du framework pour créer une application scalable, performante et très finement personnalisable !

Malheureusement les slides ne sont pas disponibles à ma connaissance … il faudra vous contenter de ces quelques explications :D

Partagez avec vos amis !
  • del.icio.us
  • Twitter
  • Tumblr
  • Facebook
  • Digg
  • LinkedIn
  • Google Bookmarks
  • email
  • Technorati
  • Wikio FR
  • Netvibes
  • RSS
If you enjoyed this post, make sure you subscribe to my RSS feed!

«»

Cet article a été publié dans En vrac avec les mots-clefs : , , , . Bookmarker le permalien. Laisser un commentaire ou faire un trackback : URL de trackback.
  • Merci pour ce retour complet, Pierre !
blog comments powered by Disqus
  • Speaker at the CakeFest 2010

    Creative Commons License


  • A lire aussi …