Continuous integration met JamOps

Bij het ontwikkelen van een applicatie zijn vele handelingen nodig die steeds opnieuw uitgevoerd moeten worden. Denk aan het deployen van code naar de verschillende omgevingen en het testen en het controleren van de wijzigingen. Dat kan efficiënter, vonden wij. Daarom ontwikkelden we JamOps, om deze processen te automatiseren en optimaliseren.

De klant

De gemeente Rotterdam ontwikkelt elk jaar tientallen apps om hun inwoners beter van dienst te zijn. Sinds kort gebruiken ze het Mendix platform om de applicaties sneller en efficiënter te kunnen ontwikkelen.

Bij het ontwikkelen met Mendix zijn er altijd verschillende acties die je keer op keer moet uitvoeren. Denk bijvoorbeeld aan het deployen van de code naar de test omgeving. Elke keer dat er functionaliteit af is, moet deze handmatig worden gedeployed. Voor de gemeente Rotterdam betekent dit dat het veel tijd kost om alle functionaliteiten steeds te deployen.

Bij JAM-IT volgen we de DevOps filosofie, wat inhoudt dat we ernaar streven om de functionaliteit zo snel mogelijk beschikbaar te maken voor de eindgebruiker. Tot nu toe werkte dit nog niet out of the box bij het gebruik van het Mendix platform, omdat er nog veel acties niet geautomatiseerd zijn. Als oplossing hiervoor hebben we JamOps ontwikkeld, een tool die zulke herhalende acties automatiseert. De tool zorgt er zo voor dat je de DevOps mentaliteit kunt gebruiken in combinatie met Mendix.

Om de tool bruikbaar te maken voor partijen buiten JAM-IT, zoals de gemeente Rotterdam, moest hij omgevormd worden naar een gebruikersvriendelijke applicatie.

De oplossing

JAM-IT heeft een Mendix applicatie ontwikkeld als schil voor de bestaande JamOps tool. Voor  de functionaliteiten maakt de applicatie gebruik van verschillende webservices. De tool automatiseert verschillende taken om zodoende de kwaliteit, veiligheid en efficiëntie van applicatie ontwikkeling te vergroten.

Ten eerste maakt JamOps Continuous Integration and Deployment mogelijk. De tool helpt met het automatisch deployen van de applicaties, door wijzigingen te detecteren, te testen en te deployen.

De tool voert automatisch unit tests en security scans uit, en checkt daarnaast of er datalekken zijn en of er alle instellingen veilig geconfigureerd zijn. Als alles goed gaat, dan zet hij de wijzigingen door naar de gewenste omgeving. Als er iets niet klopt, dan stuurt hij een e-mail naar de beheerders om het op te lossen.

Ten tweede automatiseert JamOps enkele beheeractiviteiten. Te beginnen met de Java dependencies; de tool zorgt voor de nieuwste versie van elk onderdeel en ruimt dubbele versies op. Daarnaast checkt het of er certificaten zijn die binnenkort verlopen, en als dat het geval is, stuurt hij een herinnering naar de beheerders. Tot slot optimaliseert het de export en import processen van Mendix modules in nieuwe projecten.

Omdat de applicatie continu bezig is met het verwerken van meerdere projecten en taken, maakt het veelvuldig gebruik van queue implementation en multithreading. Zo wordt de time-to-market geoptimaliseerd voor elke wijziging in de code.

Het resultaat

Dankzij het automatiseren van processen, zorgt JamOps voor snellere innovatie en verbetering van software. Sinds de gemeente Rotterdam de tool heeft geïmplementeerd, hebben ze een aanzienlijke kortere time-to-market bij het ontwikkelen van applicaties.

Daarnaast voorkomt de tool het lekken van data en andere gevaren. De kwaliteit en veiligheid van de software worden gewaarborgd door verschillende geautomatiseerde testen.

Een bijkomend voordeel is de mogelijkheid om processen te stroomlijnen en standaardiseren. Alle ontwikkelaars van de gemeente Rotterdam gebruiken JamOps bij het ontwikkelen van software. Omdat alle taken en projecten door dezelfde tool en met dezelfde tests verwerkt worden, worden vele handmatige fouten voorkomen. Dit resulteert in meer controle over de processen en meer veiligheid van de applicaties.