Development bij JustBetter

R&D dagen

Bij JustBetter hebben we elke eerste vrijdag van de maand een R&D dag. In teams wordt een uitdagende case opgelost waar designers, marketeers en developers veel van leren. Als afsluiting van de dag gaan we vaak met zijn allen nog even wat leuks doen.

Agile development

We developen Agile. In een planningsmeeting wordt het totaal aan werk voor de komende 2 weken in kaart gebracht. Hierbij werken we in overzichtelijke sprints. Na de 2 weken evalueren we met het team middels een retrospective en proberen we steeds beter te worden.

Laracon en meer!

Elk jaar bezoeken we interessante beurzen waar we veel nieuwe technieken en ideeën opdoen. Laracon is toch wel onze favoriet waar we sowieso elk jaar naar toe gaan. Een foto met Taylor Otwell mocht dan ook niet ontbreken!

Eigen projecten

We krijgen de tijd en ruimte om middels eigen projecten JustBetter steeds beter te maken. Hieronder kan je bijvoorbeeld lezen hoe we dat aangepakt hebben met de server monitoring.

JustBetter Hosting

Doordat we vrijwel alles zelf hosten (inmiddels meer dan 50 servers!) hebben wij zeer brede technische kennis in huis. Developers zijn breed inzetbaar en leren op deze manier elke dag bij.

Fun!

Naast de R&D dagen, borrels, pizza sessies, beurzen etc. hebben we ook ongeveer 6x per jaar een bedrijfsuitje waar we even niet aan werk denken. De “feestcommissie” tovert altijd weer iets geniaals uit de hoge hoed.

Magento (2)

Laravel

Statamic

We love open source!
big bubble

Intern project uitgelicht: Server Monitoring !

JustBetter Server Monitor

Bij JustBetter ontwikkelen wij niet alleen awesome websites, webshops en applicaties maar regelen wij ook uitmuntende hosting voor onszelf én onze klanten. Hiervoor gebruiken wij servers van Digital Ocean en OVH, deze draaien op Ubuntu en worden geprovisioned door Serverpilot of Laravel Forge. Daarnaast wordt de volledige infrastructuur (inmiddels meer dan 50 servers!) geautomatiseerd middels Chef. Denk daarbij aan het inregelen van backups, het toevoegen van SSH keys, etc. Maar het geheel dient ook gemonitord te worden, wat als er iets fout gaat?

Het idee

Voorheen werd het serverpark en alle websites daarop gemonitord door New Relic. Een mooi, maar kostbaar stukje software. Daarnaast miste wij veel functionaliteiten die wij in geen enkel ander systeem hebben kunnen vinden en dus zijn wij begonnen met de ontwikkeling van een eigen server monitoring systeem in Laravel. Een aantal van onze wensen:

  • Directe notificaties wanneer er iets fout gaat.
  • Flexibele server checks met niet alleen alleen CPU, memory en disk maar ook de mogelijk om bijv. de MySQL versie uit te lezen.
  • Platform versie controles, draait een WordPress of Magento site wel op de laatste versie? Zonder dat daar een plugin voor nodig is.
  • Automatisch importeren van nieuwe servers en sites om zo min mogelijk foutgevoelig handwerk te hebben.
Server monitor
big bubble

De basis

Hoe kunnen we alle informatie uit de servers krijgen? We hadden een agent kunnen ontwikkelen zoals New Relic ook werkt. Het nadeel is dat die agent op alle servers geïnstalleerd moet worden, zo geregeld middels Chef maar hoe gaan we die agent up-to-date houden? Zorgt dat ervoor dat we snel kunnen ontwikkelen en direct kunnen releasen? Uiteindelijk hebben wij ervoor gekozen om middels phpseclib een SSH verbinding te maken met de servers. Op die manier kunnen wij alle servers monitoren, ook de servers die niet bij ons in beheer zijn én hoeven wij niet een server en een client applicatie te ontwikkelen.

laravel new servermonitor en beginnen maar! Eerst de database structuur, de models, etc. en dan het importeren van de servers en websites. Twee packages voor Serverpilot en Laravel Forge verwerken in een artisan command en vervolgens kunnen we al mooie BREAD’s (Browse, Read, Edit, Add, Delete) maken.

Server checks

We willen eenvoudig checks kunnen beheren, dus een shell command, een naam en “run minutes” in een config file. Deze laatste geeft aan hoe vaak een check uitgevoerd moet worden op een server. Bijvoorbeeld de CPU load en het geheugengebruik wordt elke minuut opgehaald van alle servers via een cronjob, schijfruimte elke 5 minuten en alle overige checks waaronder security/package updates, Ubuntu versie, MySQL versie, Redis versie, etc. elke 24 uur.

Servemonitor
big bubble

Server informatie ophalen

Om server informatie op te halen, hebben we ook een artisan command gemaakt, dat inlogt op de servers en daar, afhankelijk van de “run minutes” van de checks, het shell command uitvoert. De output wordt opgeslagen, zodat we een history kunnen opbouwen en hier grafieken van kunnen maken. De waarde wordt daarnaast gecontroleerd met de alert policies die eenvoudig via de interface beheert kunnen worden. Is de schijfruimte bijvoorbeeld boven de 90%, dan wordt er een warning gestuurd. Boven de 95% wordt er een error gestuurd en als er een actieve alert is opgelost krijg je daarover een notificatie.

Websites online?

We hebben het systeem een server monitor genoemd, maar het monitort niet alleen de servers, maar ook de websites. Zo worden alle websites elke minuut gecontroleerd. Zijn de websites online? Klopt de HTTP status code? Is het SSL certificaat nog geldig? Is er een bepaalde tekst op de website te vinden?

Servermonitor justBetter

Game of Thrones? Map!

Bij JustBetter is er gekozen om niet klant specifieke servers naar Game of Thrones houses te vernoemen. Hoe cool is het dan om een Game of Thrones map op een van onze TV’s aan de muur te hebben? Op de TV zijn de servers gepositioneerd en wanneer er iets fout gaat komt er een melding én wordt de intro song van Game of Thrones afgespeeld! Nu nog Drogon, Rhaegal en Viserion die af en toe over de TV vliegen… Hoe dit functioneel werkt? We hebben Pusher geïmplementeerd, zodat we de pagina niet hoeven te refreshen en ook niet hoeven te pollen met Ajax calls voor nieuwe meldingen.

Toekomst

De server monitor wordt continu doorontwikkeld, op het moment van schrijven willen wij bijvoorbeeld nog de Pagespeed score van alle websites ophalen en tonen, onze klanten nog meer transparantie geven door ook toegang te geven, etc. Grote kans dat deze nieuwe features er inmiddels al in zitten. Heb je een tof idee, kan je ons helpen met mooie geanimeerde draken of lijkt het je vet om aan de server monitoring van JustBetter te sleutelen? Neem contact op, kom langs of solliciteer op onze vacatures!

server monitor

E-commerce consult

Vraag vrijblijvend een e-commerce consult aan voor jouw e-commerce vraagstuk.

  • Concrete vervolgstappen
  • Innovatieve ideeën