04 januari 2018

Technische architectuur


Bij het bepalen van de architectuur en infrastructuur van DireXtion zijn we uitgegaan van de uitgangspunten: Schaalbaarheid, beschikbaarheid, onderhoudbaarheid en performance.

De eisen die we stelden aan schaalbaarheid en onderhoudbaarheid hebben geleid tot de keuze om onze software-architectuur te baseren op (micro-)services terwijl de beschikbaarheid en performance eisen geleid heeft tot een infrastructuur gebaseerd op full redundancy met gebruik van load-balancers. In dit artikel wordt beschreven op welke wijze en met welke middelen of technieken we dit hebben geïmplementeerd.

Wat verstaan we onder de verschillende begrippen?

  • Schaalbaarheid
    De mogelijkheid om de capaciteit zowel horizontaal (verdeling over meerdere servers) als verticaal (verdeling binnen één server) te schalen
  • Beschikbaarheid
    Het waarborgen van de beschikbaarheid van de applicatie voor de eindgebruiker
  • Onderhoudbaarheid
    Het vermogen om de applicatie eenvoudig te onderhouden
  • Performance
    Het voldoen aan voldoende resources en een snelle gebruikerservaring

In de oude infrastructuur was voorzien in een Windows2008R2 Hyper-V cluster. Dit cluster hoste verschillende single-instance virtuele servers en een aantal multi-instance virtuele applicatie servers. De applicatie servers waren identiek en met behulp van het Network Load Balancing (NLB) protocol werd de load over deze servers verdeeld. Bij een hardware storing van één van de tot het cluster behorende machines, zorgde het cluster voor high avalaibility door de virtuele machines te herverdelen over de overige machines van het cluster (Failover).

In de nieuwe infrastructuur zijn we van failover overgegaan naar full redundancy zonder een cluster. Alle hardware machines zijn stand-alone  en hosten meerdere virtuele machines waarbij een virtuele machine minimaal twee keer is uitgevoerd op verschillende hardware. Twee HAProxy loadbalancers dragen zorg voor de verdeling van het verkeer. Zowel de DireXtion front-end als de micro-services zijn redundant uitgevoerd over 9 verschillende virtuele servers op minimaal 3 verschillende hardware servers. Dit maakt het mogelijk om DireXtion te kunnen updaten of gepland systeem onderhoud uit te voeren zonder enige down-time. Capaciteit kan eenvoudig uitgebreid worden door (virtuele) machines bij te plaatsen (horizontale schaalbaarheid) of door micro-services op bestaande machines meerdere keren te installeren (verticale schaalbaarheid).

Op deze manier garanderen we de beste performance en beschikbaarheid voor onze klanten zodat zij 24/7 ongestoord van onze dienst gebruik kunnen maken.




Meldingen