Load testing van de Aviobook applicatie in AWS
Aviovision is een Belgisch bedrijf dat zich toelegt op de ontwikkeling van hoogwaardige, innovatieve oplossingen voor de luchtvaart. Zo ontwikkelde Aviovision een digitale variant van het flightbook ‘Aviobook’ dat via een tablet gemakkelijk gebruikt kan worden en overigens volledig gekoppeld is met de systemen van vluchtmaatschappijen. Een flightbook bevat alle manuals en routes die piloten nodig hebben voor ze mogen opstijgen. Met de Aviobook app kan de piloot gemakkelijk en snel alle nodige documentatie voor de vlucht verzamelen.
Nood van de klant
Aviovision was reeds aanwezig op de Europese markt. Met een focus op goederenvluchten rekenen ze op een volume van ongeveer 30.000 vluchten per week. Dankzij hun geplande roll-out naar de Amerikaanse markt zou het aantal vluchten per week verdubbelen naar 60.000.
Hierbij had Aviovision uiteraard één grote vraag. Kan het platform een verdubbeling van het volume wel aan? Kan de roll-out naar de Amerikaanse markt plaatsvinden zonder problemen aan de eigen applicatie? Er was nood aan een performantie testset die de reactie van het platform bij verhoogde load kon monitoren.
Daarnaast was er ook nood aan geautomatiseerde performantie testen. Aviovision was niet gewend om op regelmatige basis een load test uit te voeren voor hun platform. Dit zorgde natuurlijk voor late feedback over performantie bottlenecks in de nieuwe features.
Uiteraard bracht deze opdracht ook de mogelijkheid tot een historische catch-up van de applicatie. Ondertussen was de Aviobook applicatie twee jaar live. Dit was het ideale moment om eventuele toekomstige problemen in het platform te achterhalen en bij te stellen.
Refleqt oplossing + deliverables
De oplossing van Refleqt bestond uit verschillende elementen:
Technical analysis:
Aan de hand van een technische analyse hebben we het API landschap van de app & de admin website in kaart gebracht. Op deze manier hadden we een goed zicht op het netwerkverkeer en konden we de Aviovision applicatie in detail leren kennen. Door dit gedetailleerd inzicht in het platform, kon Refleqt snel de juiste performantie testset ontwikkelen. Na de technische analyse heeft Refleqt het nodige advies met mogelijke optimalisaties overgedragen aan het development team.
Performance testing:
Voor het opzetten van de performantietesten hebben we de OpenAPI documentatie gebruikt samen met een opensource template voor Scala. In combinatie met Swagger Codegen hebben we een Scala Library gegenereerd als artifact. Deze Scala Library werd geïmporteerd in Gatling om de nodige loadtesten mee te kunnen uitvoeren. Nadien werd er een loadgenerator op AWS geconfigureerd door gebruik te maken van Docker.
Voor de logging en monitoring tijdens de performantie testen werd Gatling gekoppeld aan een Grafana dashboard via Influx DB. Op deze manier was het mogelijk om real-time resultaten tijdens de loadtesting weer te geven zodat mogelijke problemen of errors snel opgepikt konden worden door het development team. In het dashboard konden we de gezondheid van het platform monitoren en werd volgende informatie real-time weergegeven:
- Aantal hits/minute
- Response times
- Error percentages
Uitvoering:
De uitvoering van de performatie testen gebeurde op er iteratieve wijze en in continue samenwerking met het technisch team van Aviobook. Op deze manier was het steeds mogelijk om oorzaken van negatieve testresultaten te onderzoeken.
Tools & Technologieën
- Technische Analyse: Charles (Proxy server)
- Performantie testing: Gatling, Scala, Maven, OpenAPI, Swagger CodeGen, Scala Build Tool
- Uitvoering: Grafana, Influx DB, Kibana, AWS, Docker
Resultaat
Aviovision heeft het werk van Refleqt zeer positief onthaald. Via de technische analyse werden er namelijk enkele bottlenecks in het platform ontdekt. Deze werden door het development team van Aviovison opgepikt en opgelost.
Daarnaast is de app ‘Aviobook’ klaar voor een verhoging in traffic dankzij gunstige resultaten bij de performantie testing. Het platform zal de verdubbeling van load kunnen dragen, zonder dat hier problemen bij te verwachten zijn.
Het QA-team van Aviovision werd volledig door Refleqt opgeleid aan de hand van een technische overdracht. Op deze manier kon ook na de performantie testing gebruik gemaakt worden van de test set-up.