Gestroomlijnde IT-infrastructuur voor elke backend en frontend

Case Simpel APP
Frank Klaassen

16 juli 2019

In een serie artikelen vertellen onze teams welke technieken en tools zij momenteel gebruiken om tot hoogwaardige webapplicaties, API’s, websites, shops en portals voor onze klanten te komen. Dit is het derde artikel, waarin we kijken in de keuken van team InfinIT. Dit is het team binnen Enrise met focus op het beheer van de infrastructuur van Enrise en haar klanten. 

Bij Enrise werken we in zelfsturende teams. Dat zijn multidisciplinaire ontwikkelteams met een eigen propositie en een eigen (interne) naam. Als klant pas je op basis van je branche, uitdaging, bedrijfsgrootte, budget en technische stack beter bij het ene team dan het andere. Elk team heeft daarom een eigen set met de beste tools, technieken en frameworks.

In dit artikel vind je in tegenstelling tot de eerdere twee verhalen geen front-end frameworks. Als DevOps-team richten we ons op technologische infrastructuur, de basis voor elke back-end en front-end. We zetten servers op, configureren die zo optimaal mogelijk voor opdrachtgevers en developers en we monitoren ze permanent met customized dashboards. We nemen je mee langs onze favoriete tools van dit moment.

Nieuwe serveromgeving met Terraform

Het pad naar het opzetten van een serveromgeving begint hier. Met het open source Terraform bouwen we de blauwdruk van een nieuwe online omgeving. We bepalen het benodigde aantal servers, het type server en de fysieke locatie. Is een load balancer wenselijk? Dan zetten we ook die erbij. Of denk aan extra diensten zoals CDN’s of Web Application Firewalls. Compleet in harmonie met wensen en ambities stellen we de ideale IT-infrastructuur op voor development- en productieomgevingen.

We definiëren het infrastructuurplan in Terraform, omdat deze het direct in code schrijft. Dit levert een reproduceerbare omgeving op, wat het eenvoudiger maakt om serveromgevingen te dupliceren. Na het halen van een vers kopje koffie (of thee) staat de nieuwe omgeving klaar om verder ingericht te worden met aanvullende tools.

Saltstack serverconfiguratie

Nu Terraform zijn werk heeft gedaan, staan de nieuwe servers klaar voor verdere inrichting. De servers zijn nog leeg en hebben nog geen functie. Die functionaliteit gaan we toevoegen en configureren met Salt(stack), software voor IT-automatisering. 

Salt installeert en configureert alle benodigde onderdelen. Denk aan de installatie van software zoals web- of database-servers en de toepassing van beveiligings-policies en firewall-configuratie. Zodra Salt klaar is met zijn werkzaamheden is de server gebruiksklaar.

We gebruiken Salt naast configuratiemanagement ook als remote execution tool om snel bepaalde taken uit te voeren zoals het opvragen van versies of het uitvoeren van commando’s op een groep servers.

Zabbix monitoring

Nu de server klaar voor gebruik is, is het belangrijk om te weten hoe deze presteert. Ook willen we op de hoogte worden gesteld als er iets mis gaat. Hiervoor maken we gebruik van server-monitoring middels Zabbix. Met Zabbix houden we de spreekwoordelijke vinger aan de pols bij alle servers. 

We houden hier niet alleen servers mee in de gaten, ook onze hardware (routers, switches, access points) en de diverse AWS-diensten waar we gebruik van maken houden we in het vizier. Of we zetten het in voor het monitoren van specifieke onderdelen binnen applicaties, waarbij de ontwikkelaars zelf kunnen definiëren welke applicatie-onderdelen gemonitord moeten worden en hoe dit gaat.

Zabbix is interessant vanwege het voorspellend vermogen. Het laat bijvoorbeeld weten dat de schijfruimte van de server vol is binnen 7 dagen als de huidige trend zich gelijk voortzet. Zo loop je dus nooit achter de feiten aan. We hebben ook uitgebreide en automatische SSL monitoring om te zien wanneer certificaten verlopen. 

Visuele dashboards met Grafana

Om de veelal ruwe informatie van Zabbix visueel en beter inzichtelijk te krijgen, maken we gebruik van Grafana. Binnen Grafana hebben we een aantal dashboards gemaakt waarop we in een oogopslag de status van diverse serveromgevingen kunnen zien. Deze dashboards worden weergeven op onze monitoring-schermen bij Enrise.

Op het dashboard voor de infrastructuur binnen kantoor kunnen we bijvoorbeeld direct zien hoeveel gebruikers er gebruik maken van wifi, hoe de VPN verbindingen presteren en hoeveel bandbreedte er in gebruik is.

Amazon Web Services

Waar we voorheen voornamelijk gebruik maakten van eigen hardware is dat in de afgelopen jaren richting de cloud gegaan. Hiervoor zijn diverse redenen te noemen, waarbij de voornaamste voor ons is dat we hier op kostenefficiënte wijze snel complete omgevingen kunnen opzetten. Snelheid en veiligheid zijn twee belangrijke focuspunten.

Gitlab / Gitlab-CI

Waar Enrise ooit begon met Subversion en later Github voor het opslaan van de sourcecode, maken we tegenwoordig veel gebruik van Gitlab. Voor CI (Continuous Integration) wordt Gitlab-CI ingezet om onder andere build- en deployment pipelines te bouwen. 

Zodra een nieuwe release van een applicatie klaarstaat, gaat deze het proces in om (automatisch) getest te worden. Stapje voor stapje gaat de applicatie van QA-omgeving, naar Acceptatie-omgeving en uiteindelijk op Productie-omgeving. Gitlab-CI zorgt ervoor dat dit gestructureerd verloopt.

Gitlab biedt een totaaloplossing voor de opslag van code, samenwerking onderling en het uitvoeren van pipelines voor bijvoorbeeld deploys. Deze kan hosted worden afgenomen, maar kan ook in-house worden opgezet om volledige controle te behouden.

Deployer

Zoals je wellicht al hebt kunnen lezen in de vorige Keukengeheimen maken we ook veelvuldig gebruik van Deployer. Hiermee kunnen we snel en zonder downtime deployments uitvoeren van de software die we beheren.

Laravel/Lumen

Geen Ops zonder Dev. Om het ons en ook onze collega’s makkelijker te maken bouwt ons team tools, portals en dashboards om processen te automatiseren of inzichtelijk te maken. Hiervoor maken we veelvuldig gebruik van Laravel of Lumen.

Laravel is een uitgebreid PHP framework met een actieve community. Met een dergelijk framework onder je applicatie kan je je focussen op het schrijven van je applicatie-code in plaats van alles wat nodig is om het aan te sturen. Voor de compactere projecten gebruiken we Lumen, een micro-framework dat haar basis deelt met Laravel.

De genoemde tools, technieken en frameworks zijn een selectie van de volledige stack die we als Enrise bieden. In volgende artikelen in deze serie laten we ook andere teams aan het woord over hun development stack en voorkeuren. Meer weten over de mogelijkheden van technieken uit dit artikel? Neem contact op met een expert van Enrise. We vertellen er graag meer over.

Meer Keukengeheimen lezen? Je vindt hier het eerste artikel met onder andere VueJS, Docker en Laravel. Het tweede artikel gaat over razendsnel apps bouwen en publiceren met React Native & Expo.