Dit keer een serie wat meer technisch georiënteerde artikels over belangrijke pijlers onder mijn genealogische websites qua software en services. Een kijkje achter de schermen… over het gebruik van open source en Internet services, gemaakte architectuurkeuzen en maatwerk programmatuur.
- Deel 1 – Genealogie Online
Genealogie Online Onderstaand figuur geeft de belangrijkste software (linker pijler) en services (rechter pijler) weer waar Genealogie Online op is gebaseerd: Software In de software pijler (van alle in deze serie besproken diensten) kun je de LAMP solution stack herkennen. Het acroniem LAMP staat voor een bundel van gratis/opensource software oplossingen voor dynamische websites:
- Linux is het gebruikte (open source) operating systeem voor de server, meer specifiek Debian;
- Apache “serveert” alle dynamisch content, het is de (open source) webserver die bijvoorbeeld in maart 2009 zo’n 9,2 miljoen bevragingen (hits) kreeg (wat zo’n 41 GB aan netwerk verkeer genereert), het “lichtere” Lighttpd wordt gebruikt als webserver voor een deel van de statische (cachable) content als afbeeldingen, CSS stylesheets en Javascript bestanden (voordat het naar Amazon CloudFront gaat, verderop meer info hierover);
- MySQL is de (relationele, open source) database die alle data van de websites bevat (de productie data van Genealogie Online alleen al is 1,3 GB groot), wat beheerd wordt met de webapplicatie phpMyAdmin;
- PHP/Perl – de programmeertalen waarmee de applicaties zijn gemaakt, voor Genealogie Online houdt dit bijvoorbeeld in dat op basis van (maatwerk) Perl programmatuur een GEDCOM wordt verwerkt tot (ruim 7 miljoen, maatwerk) PHP pagina’s. Deze architectuurkeuze (generatie i.p.v. dynamisch vanuit GEDCOM of database) heeft grote voordelen qua schaalbaarheid en performance, maar ook nadelen, bijvoorbeeld qua flexibiliteit. Om de PHP pagina’s sneller te maken wordt er eAccelerator gebruikt (als extensie op Apache).
Een software component dat niet onbenoemd mag blijven is Swish-e. Deze open-source applicatie indexeert alle content op Genealogie Online en maakt deze doorzoekbaar. Waarom niet gewoon op Google vertrouwen? Omdat Google veel tijd nodig heeft om de bijna 7 miljoen pagina’s (die ook nog wel eens wijzigen) te indexeren, als de Google-spiders alle content al ophalen (geen garanties!). Alternatief om de websites doorzoeken te maken op (familie)naam heeft als nadeel dat er dan een groot deel van de rijke inhoud (denk aan notities) niet doorzocht wordt. Componenten Enkele kleinere software delen, ook wel componenten of widgets genoemd, die noemenswaardig zijn:
- Simile Timeline is een Javascript routine die wordt gebruikt om de interactieve tijdlijnen in Genealogie Online te maken.
- PHP/SWF Charts zijn PHP componenten die de interactieve grafieken realiseren op de tellingen pagina’s van de publicaties op Genealogie Online. Voor andere grafieken (bijvoorbeeld Gebruikte stamboomprogramma’s) wordt er trouwens weer de Google Chart API (dus service!) gebruikt en de Statistieken pagina’s zijn weer standaard HTML…
Services Waar software op de server zelf is geïnstalleerd en draait (en onderhouden moet worden), worden services op servers van andere partijen geboden en door Genealogie Online gebruikt.
- Amazon CloudFront (en het onderliggende Amazon S3) wordt gebruikt als Content Delivery Network. Statische content (de al eerder genoemde afbeeldingen, CSS stylesheets en Javascript bestanden) wordt hiermee “geserveerd” door een andere server en andere netwerkverbinding, wat meer bandbreedte over laat voor de overige dynamische content (ook al is de domeinnaam gewoon img3.coret.org, css3.coret.org en js3.coret.org!). Deze zeer schaalbare service van Amazon is één van de weinige betaalde services die wordt gebruikt;
- Scribd (iPaper) is een gratis service waar document kunnen worden gepubliceerd. Deze service wordt door Genealogie Online gebruikt om bijvoorbeeld alle stambomen en kwartierstaten in PDF formaat op te “hosten” (zie voorbeeld). Naast een betere user experience is ook dit een manier om bandbreedte te besparen.
- Google Feedburner wordt gebruikt voor het beschikbaar stellen van de diverse RSS feeds. Ook hier geldt weer, alle RSS readers en browsers halen de web feeds van Google Feedburner en alleen Google Feedburner haalt de web feeds op van Genealogie Online waardoor er dus weer een boel bandbreedte wordt bespaard.
- Google Analytics is een gratis dienst van Google die geeft inzicht in het bezoek van de website: hoeveel gebruikers, waar komen ze vandaan (land/website), wat doen ze (en hoe lang) en dit alles in inzichtelijke grafieken. Deze informatie kan gebruikt worden om de website te optimaliseren.
- Google Translate is (wederom) een gratis dienst van Google die realtime webpagina’s vertaalt in andere talen. Op Genealogie Online zorgt deze voor de automatisch vertaling naar Engels.
Eerste indruk Met dit eerste kijkje achter de schermen heb ik een indruk willen geven van wat een website als Genealogie Online behelst. Een deel van het werk is het maken (en onderhouden) van programmatuur. Maar een belangrijk deel van de software en services is er al, klaar om gebruikt te worden! Hierbij is het merendeel van de software en services ook nog eens gratis! De “investering” zit ‘m (naast hosting en bandbreedte) vooral in het slim “componeren” van eigen/andermans software en services om een mooie & nuttige website voor (in dit geval) stamboomonderzoekers neer te zetten. Veel aandacht gaat er bij goed lopende websites zitten in performance en schaalbaarheid. Heeft u specifieke vragen over de software of services, plaats deze dan in de reacties bij dit artikel! In deel 2 van deze serie zal ik ingaan op de pijlers onder het Stamboom Forum en de Stamboom Gids.
Bedankt voor dit kijkje achter de schermen, Bob! Ik wist niet dat je S3 gebruikte. Is dat lastig op te zetten?
Yvette,
Amazon S3 is vrij eenvoudig, vergelijkbaar met FTP. Je moet even registreren bij Amazon (creditcard gegevens aanleveren), aangeven dat je van S3 gebruik wilt maken, private/public key (via website) aanmaken en dan kan je al bestanden uploaden. Dit kan via een API of via een 3rd party tool (zoals S3 Organizer, een Firefox plugin).
Amazon CloudFront, het Content Delivery Network (dus op je content staat op meerdere geografische locaties en de servers zijn geoptimaliseerd op snel content te serveren) is niet meer dan een vinkje! Amazon zorgt dan voor de distributie van je content bij S3 richting de CloudFront servers. Ik heb trouwens eerst alleen gebruik gemaakt van S3, maar omdat CloudFront betere performance biedt ben ik "overgestapt".
Zowel bij S3 als CloudFront kun je gebruik maken van zogenaamde CNAME DNS records. Dus in ik laat bijv. j3.coret.org doorverwijzen naar d1vqxsf5a66a3m.cloudfront.net, zodat alle content nog steeds van mijn domein komt (maar een andere server).
Let wel, Amazon maakt het allemaal vrij makkelijk, maar aan alles hangt een prijskaartje! Bijv. het transporteren van 1GB data naar Amazon kost $0,03.
Een tip om de kosten te drukken: zorg dat de juiste HTTP headers worden geserveerd bij de statische content zodat browsers de content cachen!
Tenslotte, heb ik voor alle afbeeldingen die gebruikers aanbieden en uploaden (Genealogie Online, zoekplaatjes+profielen bij Stamboom Forum) een mechanisme gemaakt die dagelijks alle nieuwe content upload naar S3. Per afbeelding wordt bijgehouden of het al is geupload en of er dus een link moet komen naar img3.coret.org of nog vanaf img.coret.org.
mvg,
Bob Coret