Drupal 8

Een delegatie webdevelopers van Cegeka was er bij toen Drupal-oprichter Dries Buytaert, een Belg inderdaad, in september tijdens de Drupalcon conferentie in Barcelona de eerste release candidate van Drupal 8 aankondigde. Een Release Candidate is een fase in het ontwikkelproces, waarin een versie uitkomt die finaal kan zijn als er geen bugs meer worden gevonden.

Dat moment is er nu, op 19 november 2015 is Drupal 8 officieel. En kort samengevat: Drupal 8 is een state-of-the-art platform dat zowel dienst kan doen:

  • Als traditioneel content management systeem voor de reguliere website waarbij de content centraal staat.
  • Als voor het bouwen van moderne interactieve webapplicaties en alles daartussen in.

In dit artikel lichten we enkele nieuwe features in Drupal 8 kort toe:

Twig: front-end code gecentraliseerd

De grootste aanpassing in Drupal 8 is het gebruik van Symfony, een objectgeoriënteerd application framework. Twig is de template engine van Symfony, en zorgt ervoor dat alle code voor front-end gecentraliseerd is. Zo wordt de front-end code voortaan in templates gemaakt, en niet meer in de code van een module zitten.

De grootste troef van Twig is het gebruiksgemak voor de ontwikkelaar en dus een snellere time-to-market. Anderzijds is deze technologie in staat om makkelijker en sneller in te spelen op de trends (mobile app, headless website) van vandaag en morgen, wat resulteert in een website die garant staat voor de komende jaren.

Servicegericht platform maakt omnichannel mogelijk

De abstractie tussen front-end (wat je ziet) en back-end (achter de schermen) zorgt ervoor dat Drupal 8 zich uitstekend leent voor het bouwen van een servicegericht platform. Omdat hierdoor de gegevens uit de krachtige backend van Drupal 8 worden doorgegeven aan een front-end applicatie die bijvoorbeeld is gebouwd met AngularJS zijn we in staat om webapplicaties te ontwikkelen die inspelen op de nieuwe trends binnen webdevelopment. Zo kan bijvoorbeeld een (native) mobile app gebouwd worden of een POS in een winkel.

Kortom, Drupal 8 laat toe om volledig omnichannel te gaan, gebruik makend van de touchpoints die verder gaan dan Drupal en web alleen.

Pluginstructuur en rendercaching: snellere ontwikkeltijd en makkelijker onderhoud

Naast aandacht voor front-end zijn op Drupalcon ook veel nieuwigheden in de backend aan bod gekomen, waaronder de nieuwe pluginstructuur en rendercaching.

Plugins zijn kleine blokjes functionaliteit die onderling uitwisselbaar en herbruikbaar zijn. De nieuwe pluginstructuur in Drupal 8 vervangt het oude procedurele patroon binnen Drupal op een hedendaagse, objectgeoriënteerde manier. Dit betekent dat niet alleen bepaalde, vooraf vastgelegde functionaliteiten oversschreven kunnen worden, maar dat de basis-functionaliteit in Drupal 8 van A tot Z overschreven en aangepast kan worden.

Het gebruik van deze object georiënteerde principes levert kwalitatief betere en meer herbruikbare code op. Dit zal de ontwikkeltijd, onderhoud en toekomstige herbruikbaarheid alleen maar ten goede komen.

Performance: paginalaadtijd versnellen

Ook rond performante werd er veel gepraat in Barcelona. Nieuwe caching mechanismes is een van dé nieuwe features in Drupal 8, al was dit ook al mogelijk in Drupal 7 via een aantal “community modules”.

In Drupal 8 is het mogelijk om stukjes content te groeperen met behulp van een “cache tag”. Dit houdt in dat de beheerder van een website zeer selectief kan omgaan met het verversen van stukjes content, in plaats van de volledige cache van de website leeg te maken.

Concreet betekent dit dat Drupal in staat is om bijvoorbeeld alle stukjes cache leeg te maken die te maken hebben met één specifieke gebruiker. Deze selectieve manier van cache invalidatie heeft veel minder impact dan de cache van alle gebruikers leeg te maken. Dit resulteert in het sneller laden van pagina’s, wat de conversie van een gebruiker uiteraard ten goede komt.

Maar er zijn meer mogelijkheden om het tonen van een pagina sneller te laten verlopen. Vaak zijn er maar enkele kleinere dynamische stukken content in een pagina, het overige gedeelte is statische content (zoals een header, sidebar of footer). Die statische content kan nu ook selectief gecached worden, waardoor het “skelet” slechts eenmaal gerenderd wordt.

De specifieke invulling, die pagina-afhankelijk is, wordt dynamisch toegevoegd. Dit heeft een positieve effect op de laadtijd van een pagina, omdat alleen de specifieke, variërende content opge haald moet worden. De grote bulk statische content komt rechtstreeks uit de cache. Dit levert een aanzienlijke winst in performantie op.

SmallPipe en BigPipe

SmallPipe en BigPipe zorgen voor een stroom van informatie om zo snel mogelijk al een beeld voor te schotelen aan de gebruiker.

  • SmallPipe stuurt de pagina in de volgorde van de structuur van de pagina door in een stream, zodat de browser meteen kan beginnen om de site te tonen. De pagina wordt dan progressief opgebouwd en verstuurd.
  • BigPipe daarentegen is een asynchroon model dat eerst het skelet van de pagina doorstuurt naar de browser. Deze kan dus al beginnen met renderen, waarna er asynchroon (en dus gelijktijdig) de resterende delen worden opgehaald. Dit principe is gebaseerd op de werking van Facebook.

De totale verwerkingstijd van deze technieken is niet per definitie sneller dan het normaal aanleveren van een pagina, maar de bezoeker krijgt veel sneller feedback, waardoor hij het idee heeft dat de site sneller laadt.