Présentation de

Drupal

Logo Drupal

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

Part de marché sur Internet

part de marché Internet Source : datanyse.com

Part de marché sur le Top 10K

part de marché top 10k Source : datanyse.com

Position de Drupal sur le Web

position drupal sur le marché Source : w3techs.com

Le carré magique de Gartner

Drupal learder selon Gartner

Drupal est désormais un concurrent direct des CMS propriétaires de Adobe, SiteCore, HP, Oracle et IBM

Drupal

un CMS/CMF puissant...

...et donc complexe

Une courbe d'apprentissage rude

Courbe apprentissage drupal

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

Sous le capot de Drupal

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 exemple de Bundle

    exemple de bundle

Un puissant constructeur de requêtes

    configuration d'une requête drupal avec Views

Rules : un framework en soi

    configuration d'une règle drupal avec Rules
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.

Et la base de données !?

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

Schéma d'une architecture 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

Schéma d'une architecture domain access Les sites sont accessibles depuis un sous-domaine

Architecture Organic Group

Schéma d'une architecture organic group Les sites sont accessibles depuis un espace du site principal

Les limites de Drupal ?

Votre imagination

Des questions ?