In de vorige aflevering las je alles over de grondig uitgewerkte IA voor Club Brugge en zijn website. Nu richten we de spotlights op het framework dat we – na rijp beraad – gekozen hebben voor de ontwikkeling van de site. We evalueerden een heleboel frameworks en content management systems en ontdekten dat Symfony 2 perfect was voor deze job, en wel om 3 belangrijke redenen.
Waarom Symfony? ‘t Is slim gemaakt…
Heel veel hangt af van de filosofie en de technieken die gebruikt worden om een framework te ontwikkelen. We geloven niet dat het mogelijk is om websites te creëren die goed presteren bij een zeer hoge belasting, met veel features en integraties, gedurende lange tijdsperiodes, zonder een codebase die rigoureus de best practices in software development volgt en die gebouwd is met de interoperabiliteit met andere systemen in het achterhoofd.
Met Symfony 2 zijn we er 100% zeker van dat alle componenten van een uiterst hoge kwaliteit zijn. Samen met externe bundels die zichzelf dezelfde hoge kwaliteitseisen opleggen, kunnen we ons focussen op het bouwen van de website die we ambiëren, en hoeven we onze tijd niet te verdoen met het schrijven en onderhouden van honderdduizenden lijnen boilerplate code. Zo sparen we niet alleen tijd en geld, maar duiken er ook veel minder issues op tijdens de levensduur van het project.
… wordt door heel veel (slimme) mensen gebruikt…
De populariteit en de grootte van de community van het framework is niet de allerbelangrijkste reden, maar toch van groot belang. Als meer mensen een stuk software gebruiken, dan wordt de codebase vanzelf beter getest, dan zijn er meer voorgebouwde bundels die de functionaliteit verhogen, en – last but not least – dan zijn er meer mensen met kennis van zaken om vragen aan te stellen.
Als er meer organisaties en grote websites dit framework gebruiken, dan blijven de performantie, kwaliteit en veiligheid steeds de grootste prioriteiten voor de developers van het framework. Momenteel hebben bekende CMS software projecten zoals Drupal (8, de volgende versie) en eZ Publish aangekondigd dat ze ook verder zullen bouwen met Symfony 2, om dezelfde redenen als wij. En deze lijst blijft groeien.
… en het heeft een slimme licentie.
Symfony 2 en alle beschikbare bundels zijn gelicentieerd onder de MIT open-source licentie. Dat is een soepele vrije software licentie die ons toelaat het framework te gebruiken, het aan te passen en het te verdelen zolang we de licentietermen blijven opnemen.
De ‘open source’-status heeft veel voordelen voor ons. Vooral om veiligheidsredenen. Er bestaat een maxime die de ‘Linus’ Law’ heet, genoemd naar Linus Torvalds, de uitvinder van de Linux Kernel, die zegt: “Given enough eyeballs, all bugs are shallow.” Dit geldt voor algemene issues, maar is vooral nuttig bij veiligheidsissues. Hoe meer developers werken met de code en de code kunnen zien, hoe sneller de gebreken opgemerkt en gefikst worden. Dit is het omgekeerde dan de ‘security by obfuscation’-techniek (veiligheid door verduistering), die vaak gebruikt wordt bij closed source-projecten. In praktijk betekent dit voor ons dat veiligheidsgebreken snel gedetecteerd en hersteld worden, wat de integriteit van de website en zijn gegevens verzekert.
De tweede reden om open source te gebruiken is ‘Vrijheid’. De vrijheid om in de codebase te werken, die aan te passen en eraan deel te nemen, maar ook het totaal vermijden van vendor lock-in met een community van ervaren developers en bedrijven.
En last but not least: de kosten. Er zijn al jaren discussies aan de gang over de ‘total cost of ownership’ van open-source software, maar wij merken dat met een kwalitatief hoogstaand open source-product, het gebrek van licentiekosten een groot verschil maakt. Het laat onze klanten toe hun budget toe te spitsen op wat ze nodig hebben, niet op wat er nodig is om te bouwen wat ze nodig hebben.
Tijd om iets terug te doen!
Zoals we eerder al zeiden is de community een groot deel van wat Symfony 2 voor ons de beste oplossing maakt. Het zou schijnheilig zijn om te profiteren van deze community zonder iets terug te geven. Daarom hebben we onze 15 jaar ervaring in het creëren van content management systemen, samen met de allerlaatste best practices en hebben zo enkele bundels gebouwd die ons toestaan onze websites en administratie interfaces te creëren met de user experience en features die onze klanten nodig hebben. Deze bundels worden open source vrijgegeven onder de MIT-licentie en zijn beschikbaar op GitHub en Packagist.
Hoe sneller hoe beter
Een website bouwen voor een sportteam houdt altijd in dat je moet kunnen omgaan met hoge bezoekerspieken tijdens en rond de wedstrijden, transferperiodes en grote competities. Als je deze vereiste combineert met het feit dat websiteperformantie een regelrechte invloed heeft op gebruikerstevredenheid en Google search rankings, is het meteen duidelijk dat elk aspect van de website heel performant moet zijn, op elk tijdstip. Symfony 2 is op zichzelf al heel snel, toch combineerden we het met Varnish setup en we vergemakkelijkten de implementatie van onze caching met de ingebouwde ESI mogelijkheden van Symfony 2 en de LiipCacheControlBundle. We monitoren de performantie, de verwerkte hoeveelheid materiaal en de end user rendering voortdurend met NewRelic, zodat we kunnen anticiperen op performantie-issues en ze tijdig kunnen corrigeren, nog voordat ze een probleem stellen.
120 jaar in één website
Een van de basisvereisten van de website was zoveel mogelijk van de 120-jarige geschiedenis van de Club via de website te ontsluiten. Om 120 jaar spelers (meer dan 500), teams (A-team, vrouwen, juniors…), wedstrijden, verschillende competities etc. te beheren hadden we een uitgebreide maar toch gemakkelijk beheerbare interface nodig. Spelers worden gelinkt aan wedstrijden, teams en competities, en we houden ook alle belangrijke cijfers nauwkeurig bij, zoals gespeelde minuten, goals etc. om accurate statistieken op te bouwen. Deze statistieken, gecombineerd met de scores van alle andere ploegen in de Belgische competitie, worden gebruikt om de huidige stand in de Belgische eerste klasse te berekenen. De hele klassementsberekening met al zijn uitzonderingen is binnen de website ontwikkeld omdat er helaas geen officiële API’s beschikbaar waren om deze data aan te spreken.
De bezoeker is Club’s twaalfde man, dankzij PubNub
Een andere belangrijke vereiste was om de bezoekers/fans als 12de speler in het team te beschouwen. Omdat het uiteindelijk allemaal rond wedstrijden draait, werd er een live module ontwikkeld om de wedstrijden naar de bezoekers te brengen. Tijdens de wedstrijden werd het volledige matchverslag gestreamed in tekst en verteld geluid voor de bezoekers. Wedstrijddagen zijn dagen met een zeer hoge belasting, dus werkten we met de PubNub cloud messaging service om de updates aan een ongelimiteerde hoeveelheid bezoekers in bijna real time te kunnen streamen. We verkozen PubNub boven websocket gebaseerde oplossingen omdat een belangrijke gebruikersgroep van de live module de mobiele bezoeker zou zijn. De website is volledig responsief, maar op oudere Android toestellen vielen de websockets terug op Flash, een plugin die de bezoekers manueel moesten installeren. Toen werd aangekondigd dat Flash niet langer ondersteund zou worden op Android was de kogel helemaal door de kerk. PubNub gaf ons uitstekende support en een steengoede service, prober het zeker eens uit op de volgende thuismatch!