Nginx, Starman en Plack

dancer-perlNe meeste bezoekers van een website zullen zich niet afvragen welke processen er nu precies op de achtergrond plaatsvinden bij het openen van een webpagina. Voor ons als ontwikkelaar is het echter van groot belang dat wij een stabiel, schaalbaar en flexibel platform hebben om onze websites mee te ontwikkelen. Een blik onder de motorkap van een moderne, door ons ingerichte webserver.

Nginx
Als eerste passeert het verzoek van de browser de Nginx webserver. Nginx is een zeer snelle, lichtgewicht webserver en reverse proxy server die gebruikt wordt in de drukste websites ter wereld. Alle statische content, zoals een plaatje of een voorgedefinieerde webpagina, wordt direct door Nginx verstuurd naar de browser. Alle andere verzoeken, meestal dynamische content zoals bv een formulier, wordt doorgestuurd naar Starman.

Starman
Starman is een webserver geschreven in de programmertaal Perl. Wij gebruiken Starman omdat het simpel, snel en volledig compatibel is met Plack de “middleware” tussen de webserver en de web-applicatie.

Plack
Starman stuurt het verzoek van Nginx door naar Plack. Plack is een soort van superlijm om web-applicaties aan webservers te koppelen. Maar het kan nog meer. Met behulp van reeds bestaande of zelfgemaakte modules kunnen wij de verzoeken en antwoorden van de web-applicatie bewerken, daarmee is het bijvoorbeeld mogelijk om:

– A/B testen te doen ten behoeve van marketing doeleinden.
– cachen van identieke aanvragen om de performance te verhogen.
– authorisatie van gebruikers te verwezenlijken.
– het bezoek van de website te loggen.
– het verkeer tussen de browser en de web-applicatie te inspecteren cq. debuggen.
– het detecteren van gebruikers platformen, denk aan mobiele telefoons, tablets etc…

Web-applicatie
Uiteindelijk belandt de aanvraag bij de web-applicatie. Een web-applicatie is bijvoorbeeld een CMS, een webshop of een blog. Hier wordt het antwoord op het verzoek van de browser samengesteld. Een mooi voorbeeld is een webpagina met lijst van beschikbare producten in een webshop. Ten eerste wordt een gesorteerde lijst van producten opgevraagd uit de database. Daarna wordt met behulp van een template (sjabloon) en de data een webpagina samengesteld die vervolgens via Plack, Starman en Nginx terug gaat naar de browser.

nginx starman plackNginx
Vanaf het moment dat het antwoord Nginx bereikt is de web-applicatie klaar om de volgende aanvraag af te handelen. Nginx verzorgt het versturen van de webpagina naar de browser. Het grote voordeel van deze opzet is dat, in het geval van bv. een trage mobiele internet verbinding, de web-applicatie niet hoeft te wachten op het afsluiten van de connectie en dus direct een volgend verzoek kan afhandelen.

En zo zijn we weer terug bij het begin. Op een webserver worden honderden van deze verzoeken parrallel verwerkt volgens het bovenstaande proces. Hoe wij al deze gelijktijdige verzoeken, en daarmee de schaalbaarheid, oplossen is stof voor een nieuw artikel.

Starman
Plack & Perl
Perl Dancer
Nginx informatie