Bij Enrise zijn we gespecialiseerd in complexe, op maat gemaakte software. Dit doen we geregeld voor grote bedrijven in de B2B-sector. Voor Heigo Bedrijfskleding hebben we een compleet nieuw Kleding Management Systeem (KMS) gebouwd. Je kunt hier alles lezen over deze case. In dit blog focussen we op processen achter de livegang van dit project. Hoe garanderen we dat belangrijke functionaliteiten altijd werken, het systeem altijd bereikbaar is en dat het stabiel blijft werken? Om dit voor elkaar te krijgen hebben we een aantal processen en systemen opgezet. In deze blog neem ik je mee hoe we dit kunnen garanderen.
Losse omgevingen per ticket
De ontwikkeling begint allemaal bij een ontwikkelaar op zijn eigen machine. Hier werkt de ontwikkelaar aan een “ticket” waarin een stuk gewenste functionaliteit staat beschreven. Hij baseert deze functionaliteit op basis van de laatste versie op productie. Alles wat de ontwikkelaar creëert op zijn eigen branch (aftakking van de productieomgeving), wordt ook direct live gezet in een eigen omgeving, die specifiek voor dit ticket wordt gecreëerd.
Met deze review omgeving per ticket, kan het team gezamenlijk makkelijk bepalen of de nieuwe functionaliteit helemaal naar wens is. Ook een tester kan direct testen op deze review omgeving. Als het ticket af is, een andere ontwikkelaar heeft de code beoordeeld en de tester heeft alles OK gevonden, dan wordt de omgeving toegevoegd aan de productiecodebase. Automatisch worden de laatste wijzigingen naar de acceptatie omgeving doorgezet.
Omdat alle functionaliteit los van elkaar wordt opgeleverd, kan er op dagelijkse basis worden beslist of de gemaakte wijzigingen door kunnen naar de productieomgeving. Dit wordt gedaan in afstemming met ontwikkelaars en projectteam van Heigo. Zo kunnen we met hele kleine stapjes – in een gecontroleerde omgeving – toch snel live gaan met nieuwe functionaliteit.
Livegang met kwaliteits- en functionele garanties
Het proces rondom de livegang leunt op belangrijke en geautomatiseerde processen om te voorkomen dat er problemen ontstaan. Dit wordt gedaan op meerdere omgevingen. Zo sluiten we onaangename verrassingen bijna in zijn geheel uit.
- In een eerste stap van het releaseproces worden automatische tests gedraaid tegen de applicatie zelf. Denk hierbij aan code kwaliteitschecks en testen die de basale logica van de applicatie testen. Als hier (of in een volgende stap) iets mis gaat, stopt het automatische proces en wordt het ontwikkelteam op de hoogte gesteld. Zo kan het team blijven focussen op het leveren van functionaliteit. Net zo lang totdat het automatische proces aangeeft dat er iets mis loopt.
- In de tweede en derde stap wordt er een zogenoemde “container” gebouwd en live gezet in de Cloud van Google. Deze container bevat de complete Heigo KMS applicatie. Deze kan straks op zijn eigen link worden bezocht en gebruikt als een normale website.
- In een vierde en laatste stap gaan we de website geautomatiseerd testen. We doen hierbij alsof we een gebruiker zijn. We simuleren de belangrijkste use cases van de website om te checken of het KMS nog werkt zoals wij zouden verwachten. Zo zijn we direct op de hoogte als iets niet meer naar verwachting functioneert.
Met deze geautomatiseerde stappen en checks zijn we dus zeker van de functionaliteit die we opleveren. En dit wordt allemaal gecheckt op zowel de review omgeving, als de acceptatie en productie omgeving. Door op deze manier het proces in te richten creëren we veel rust en vertrouwen binnen het ontwikkelteam.
Stabiel live blijven met Kubernetes
Hoera, we zijn live! Maar hoe zorgen we dan dat we ook stabiel live blijven met het Heigo KMS? Hiervoor gebruiken wij Kubernetes op de Cloud van Google. Kubernetes is een systeem dat volgens onze instructies de applicatie in de Cloud draait en daarbij zorgt dat alles goed blijft werken.
Een van de belangrijke features van Kubernetes zijn de constante gezondheidschecks. Mocht een stukje van de applicatie niet meer werken, dan zorgt Kubernetes dat dit stukje snel wordt vervangen.
Daarnaast kan Kubernetes op- en afschalen op basis van gebruik. Hierdoor hoef je niet altijd grote en zware servers aan te hebben staan om incidentele pieken in je verkeer af te vangen. Maar Kubernetes kan automatisch een extra server opzetten op het moment dat die nodig is. Om er zeker van te zijn dat de applicatie altijd goed bereikbaar blijft en functioneert naar behoren, blijven we deze processen altijd optimaliseren. Heeft Heigo bijvoorbeeld een speciale kortingsactie en versturen ze een nieuwsbrief die ineens zorgt voor heel veel extra traffic? Ook dan blijft alles gewoon draaien zoals het hoort.
Automatische meldingen geven inzicht
Kubernetes neemt (na het goed afstellen) veel zorgen uit onze handen. Maar het voorkomt natuurlijk niet alle problemen. Daarvoor bestaan er in een complex project als deze te veel afhankelijkheden. Daarom is het belangrijk dat we goed inzicht houden in wat er draait en in welke hoedanigheid. Hiervoor hebben wij een systeem opgezet dat alle systemen in de gaten kan houden. En ons een melding geeft als er iets niet meer werkt zoals we verwachten. Hiervoor gebruiken we Prometheus met Grafana & Alertmanger.
Dankzij deze tooling hebben we inzicht in alle verschillende onderdelen van onze systemen. Denk hierbij aan:
- Gemiddelde laadtijd van alle webpaginas
- CPU en RAM gebruik van verschillende onderdelen
- Hoeveel het cluster op- en afschaalt op basis van gebruik
- Aantal servers in gebruik
- Bereikbaarheid van alle onderdelen
Mocht er – ondanks alle inspanningen – toch iets niet kloppen in bovenstaande punten, dan krijgt het ontwikkelteam daar automatisch een melding van. Hier kan dan direct naar gekeken worden door het team. Een groot deel van de meldingen wordt trouwens vaak door Kubernetes zelf opgelost. Maar het belangrijkste voor ons development team is de beschikbaarheid van tools om ervoor te kunnen zorgen dat alles nóg stabieler kan draaien!
Conclusie
Een livegang van een groot complex project is altijd spannend. Dus is het inbouwen van zekerheden erg prettig. Voor Heigo, maar ook voor ons als ontwikkelaars. Dankzij geautomatiseerde processen, tools en inzichten zorgen wij voor een zorgeloze ervaring. Zo kan Enrise zich focussen op het creëren van impact. En Heigo op de verkoop van hoogwaardige werkkleding en beschermingsmiddelen. Meer weten over deze case? Of kan je onze hulp gebruiken om je eigen proces te optimaliseren? We helpen je graag!