Qu'est-ce que Drupal ?
Drupal est un système de gestion de contenu (CMS), qui se double d'une plateforme de développement (CMF)
Créé en 2001 par Dries Buytaert, écrit en PHP et distribué sous les termes de la licence GNU General Public Licence.
Drupal permet de créer très rapidement un site / une application web sur mesure.
Les forces de Drupal
Une solution extrêmement flexible qui propose une très large couverture fonctionnelle.
- 26,931 Modules (dont 8 920 pour la version 7.x)
- 1,998 Themes
- 823 Distributions
Une commnunauté très active (la plus active dans le monde des CMS open source)
- 1 069 209 utilisateurs dans 230 pays parlant 181 langues propulsent Drupal
- 33 619 developpeurs
Source : drupal.org (juin 2014)
Une solution professionnelle
Une solution professionnelle, performante, robuste, et sécurisée
- Une des solutions les plus sécurisées (veille permanente, Security team, bulletin d'alerte, organisation, etc)
- Sites à très forte audience / complexes
- Quelques exemples : whitehouse.gov, gouvernement.fr, voyages-sncf.com, nasa.gov, le groupe radio france, arte.tv, bnpparibas.com, Harvard (myriade de plus de 2000 sites), le blog officiel de Twitter, etc.
- Une amélioration constante de la sécurité par la réalisation d'audits avancés
-
Drupal.org : plateforme collaborative (1 million d'utilisateurs, 2 millions et quelques de contenus)
Une ligne directrice
- Un leadership continu assuré par Dries Buytart, CTO Acquia
- Une solution OpenSource disposant d'un support professionnel, au travers de la société Acquia entre autres
- Un développement du Coeur communautaire, mais aussi...
- ...par des experts employés par des entreprises utilisant Drupal (give back to Drupal)
Et une animation forte
DrupalCon : 2 conférences internationales par an (~3000 participants)
Positionnement de Drupal
Quelques éléments
Le carré magique de Gartner
Drupal un CMS/CMF puissant......et donc complexe
Une courbe d'apprentissage rude
Mais de moins en moins avec l'adoption des standards
L'écosystème propre à Drupal s'oriente vers les standards avec Drupal 8
L'intégration / l'utilisation du framework Symfony2 en lieu et place de l'ecosystème Drupalien
OOP, HTTPKernel, HTTPFoundation, Routing, DependencyInjection, ClassLoader, YAML
Un peu de vocabulaire
3 notions fondamentales
- les entités (à comparer à une classe)
- les bundles (à comparer à une instance de classe)
- les fields (champs)
Drupal fournit 3 entités de base
- les noeuds (contenu)
- les utilisateurs
- les termes de taxonomy (pour organiser le contenu)
Création de Bundles
- Pour chaque entité, on peut créer une infinité de bundles (modulo les users)
- Et à chacun de ces bundles, on peut associer autant de champs différents que nécessaire
- On obtient alors un "objet" spécifique qui disposera de tous les attributs métier voulus
Un puissant constructeur de requêtes
Rules : un framework en soi
Pour la programmation des logiques métier en quelques clics
Extension des fonctionnalités
Presque 8 000 modules contribués pour étendre les fonctionnalités de Drupal, sans avoir besoin donc de réinventer la roue.
Et quand les logiques métier sont trop spécifiques :
- Field API
- Database API
- Entity API
- Form API
- Rules
- etc.
Architecture
- Cette flexibilité de création d'objet impose l'utilisation d'un modèle de données "dynamique".
- Les entités / bundles disposent de leur table, avec quelques propriétés par défaut (auteur, publié, date, etc)
- L'extension des bundles avec des champs spécifiques génère une création de table pour chaque champ.
La récupération d'un objet nécessite donc autant de jointures que de champs.
Architecture (suite)
- Ce modèle peut avoir un impact en terme de performances et/ou en terme d'intégration au SI
- Il suffit alors de créer sa propre entité pour implémenter toutes ses propriétés dans une seule et même table
- Une entité spécifique bénéficie de toute la puissance de Drupal, au même titre que les entités de base.
Drupal est un framework......et un peu plus
Un framework déjà opérationnel
- Un framework, comme Symfony2, ne fournit rien "out of the box". Les interfaces, les pages, les formulaires, la gestion des utilisateurs, les droits d'accès doivent être développées (sur la base de briques fournies, mais développées quand même)
- Avec Drupal, les interfaces utilisateurs sont disponibles "out of the box", mais aussi la gestion des utilisateurs, la gestion des droits d'accès, les formulaires de saisies, l'accès et le controle à la base de données, etc.
- Un outil extensible avec un certain niveau d'abstraction
Pourquoi Drupal ?
- Pour développer rapidement un site / une application sur mesure
- Pour se concentrer sur la logique métier
- Pour s'appuyer sur le travail de milliers de développeurs
- Pour bénéficier d'une solution maintenue et portée par une communauté très active et non pas par une unique société ou quelques développeurs
L'industrialisation de sites avec Drupal
Plusieurs solutions, non exclusive les unes des autres
Pourquoi une usine à site ?
- Le temps - mise en production d'un site dans un délai court
- Réduction du coût de fabrication
- Réduction du coût de maintenance
- Respect d'un catalogue de fonctionnalités et de mises en pages communes
- Recyclage d'un site existant
Les architectures potentielles
- Sites 100% indépendants (code et bdd différents)
- Sites 50% indépendants (même code, bdd différentes)
- Sites 0% indépendants (même code et bdd)
Sites 100% indépendants : les profils
- Utilisation de profils d'installation
- ou d'une distribution sur mesure
- Les sites sont installés préconfigurés et sont tout de suite opérationnels
- Mais ils restent indépendants et nécessitent chacun une maintenance spécifique
Sites 50% indépendants : multi-site
- Installation d'un drupal multi-site
- Les sites partagent le même code Drupal
- Les sites disposent d'un même socle commun de fonctionnalités
- Les sites peuvent être configurés de façon différente
Une installation multi-site
Sites 0% indépendants : Un seul site pour n sites
- Utilisation de Domain Access ou Organic Groups
- Simule la création de N sites depuis la même instance de Drupal
- Une seule base de données pour tous les sites
- Les contenus et utilisateurs peuvent donc être partagés
- Impose une configuration relativement similaire pour les N sites
- Une maintenance facilitée
Architecture Domain Access
Les sites sont accessibles depuis un sous-domaine
Architecture Organic Group
Les sites sont accessibles depuis un espace du site principal