Door Arjen van der Meijden

Lead Developer

Tweakers 7: waarom een eigen Java-back-end?

Inleiding

Op 20 februari 2009 introduceerden we een snellere Pricewatch-engine, wat leidde tot aanzienlijke prestatieverbeteringen voor de overzichten van producten binnen een categorie. Dat was bij de introductie overigens ook de enige functie ervan. De nieuwe omgeving was in de vorm van een Java Servlet opgezet en werd via get-requests uitgelezen, vergelijkbaar met REST.

Naast en door die prestatieverbeteringen werd het ook mogelijk om de functionaliteit van de Pricewatch verder uit te breiden. Zo werden de intervallen bij de prijsfiltering gebruiksvriendelijker gemaakt en werd met Pricewatch 3.0 ook de zoekmachine voor producten erin overgebracht. Daarnaast kwamen toen ook de mooiere 'productspecificatiesamenvattingen' onder de productnaam en kwamen er 'berekende specificaties', zoals x euro per gigabyte bij harde schijven. Voor die laatste twee hebben we zelfs een dsl geïntroduceerd, zodat het beheer ervan bij onze contentmedewerkers kan blijven en niet door developers gedaan hoeft te worden.

Pricewatch-engine uitgebreid tot algemene engine

Tijdens het ontwerpen van Tweakers 7.0 werd besloten dat we de presentatie van lijsten zoals die van de Pricewatch overal zouden gaan doorvoeren. Alle lijsten, bijvoorbeeld van nieuws, reviews en video's, moesten voorzien worden van facetten en filters met de van de Pricewatch bekende, dynamische filteropties. Daarnaast wilden we graag de facetten uitbreiden met een indicatie van hoeveel resultaten eraan voldoen, zodat je als gebruiker minder hoeft te gokken. Bovendien moesten deze facetten hiërarchisch werken; als een redacteur het 'Crucial m4'-product koppelt aan zijn artikel, dan moeten bij de facetten ook het merk Crucial en de ssd-categorie getoond worden. En omgekeerd, als iemand het facet Crucial of ssd-categorie kiest, moet dat artikel er ook bij staan.

De techniek voor het samenstellen en afleiden van de facetten zat op dat moment uiteraard al in die Pricewatch-engine. Ook alle informatie voor die hiërarchische afleiding van facetten aan de hand van gekozen producten was daarin al voorhanden. Daarom kozen we er destijds voor om diezelfde aanpak, front-end in php en data/filter-back-end in Java, uit te breiden voor alle soorten informatie die we op een vergelijkbare manier wilden presenteren. Op enkele uitzonderingen na komt al onze content nu uit die engine. De meeste detailpagina's van artikelen en producten halen hun gegevens eruit, de meeste lijstjes van artikelen en producten komen ervandaan, zoekopdrachten worden erdoor uitgevoerd, enzovoort.

De engine faciliteert ook de directe en indirecte relaties tussen artikelen en onderwerpen. Als een redacteur een artikel bijvoorbeeld aan de Raptor-serie koppelt, dan weet de engine dat het ook over het merk Western Digital gaat.

Op het moment van schrijven is het Forum de belangrijkste uitzondering, maar ook die gaan we, in ieder geval gedeeltelijk, omzetten naar de nieuwe structuur. Dat heeft echter nogal wat voeten in aarde, waardoor we die stap niet gelijk hebben gemaakt. We wilden de introductie van Tweakers 7 niet ook daar nog van laten afhangen.

De keus om alles in een eigen Java-applicatie te bouwen leverde ons bij elke aankondiging weer nieuwe vragen op. Ook bij het artikel over Java-geheugengebruik werd er weer over gediscussieerd. Met dit artikel proberen we wat antwoorden op die vragen te geven.


Nintendo Switch (OLED model) Apple iPhone SE (2022) LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S22 Garmin fēnix 7 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2022 Hosting door True

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee