Smartfile: Vertrouwen terugkrijgen in je software

Het opschonen van een bestaande applicatie

Smartfile Mockup

De opdrachtgever

Smartfile is een alles-in-1 softwarepakket voor fysiotherapeuten met enorm veel functionaliteiten. Zo kunnen gebruikers hun klantenbestanden bijhouden, helpt het met het organiseren van patiëntendossiers, biedt het een mogelijkheid om afspraken te beheren en houdt het ook nog eens de administratie bij. Een supertool dus!

De uitdaging: probleemloos toevoegen van features

De software van Smartfile is heel organisch gegroeid. Het bedrijf begon als start-up en heeft op de wensen van de markt ingespeeld. Door elke keer nieuwe functionaliteiten toe te voegen, hebben ze een stuk software ontwikkeld wat precies voldoet aan de vragen en behoeftes van hun klanten. Toen Smartfile bij ons aanklopte hadden ze prima software, maar ontbrak een stabiele basis. Dat uitte zich vooral in problemen bij het toevoegen van nieuwe features.

Waarom weinig vertrouwen een probleem is

Op het moment dat een applicatie instabiel is, gaat dat ten koste van het vertrouwen wat je hebt in je eigen applicatie. Als je rekening moet houden met alles wat er fout zou kunnen gaan, kan je niet langer zorgeloos coderen. Als jij een stuk code gaat schrijven, en elke keer als je de code toevoegt ben je bang dat misschien alles stuk zou kunnen gaan (of nog erger dat je applicatie niet alleen stuk gaat maar dat je ook nog data verliest), dan ga jij nooit de snelste zijn die dingen op de markt brengt. Het is dan vaak ook geen vraagstuk óf de software stuk gaat, maar eerder wanneer het stuk gaat. Op het moment dat het vertrouwen heel laag is in je systeem, dan zijn grote functionaliteiten eigenlijk überhaupt niet meer toe te voegen. Je moet dan zo veel dingen aanpassen en met zoveel dingen rekening houden (om maar te zorgen dat er niets stuk gaat), dat je daar liever niet meer aan begint. Nou is het als bedrijf natuurlijk super vervelend als je geen vertrouwen meer hebt in je eigen software, maar voor Smartfile was dat nog niet eens het ergste. In hun software werken hun klanten met patiënteninformatie. Als er ook maar één keer een bug is waarbij de klant de patiënteninformatie van een andere fysiotherapeut te zien krijgt, dan zijn ze in een klap al het vertrouwen in jouw software kwijt. Dat gebrek aan vertrouwen stagneert de groei van je bedrijf. Als je al het gevoel hebt dat je applicatie niet zo stabiel is als dat je graag zou willen, dan ga je het natuurlijk niet voor heel veel klanten uitrollen. Dat was bij Smartfile het grootste probleem: er was geen slecht stuk software, maar het vertrouwen in de eigen software ontbrak en daar waren goede redenen voor aan te wijzen. Daardoor was er ook niet genoeg vertrouwen om te zeggen: “oké, hier gaan we keihard mee groeien!”

Een stabiele basis

We zijn begonnen met de fundering van de software. Een goed voorbeeld daarvan is op het gebied van autorisatie (wat krijgt een klant wel en wat krijgt een klant niet te zien). Door standaard niets te laten zien, en alleen maar aan te geven wat een klant wél mag zien, voorkom je problemen zoals het lekken van patiëntgegevens. Door de volledige basis van de software opnieuw te schrijven, is de applicatie een stuk stabieler geworden. Het toevoegen van nieuwe features levert hierdoor geen problemen meer op en het development team van Smartfile kan weer vol vertrouwen aan de slag.

Automatisch controleren

Elke keer als je nieuwe code toevoegt moet je de volledige software testen. Dat is een tijdrovend en intensief karwei. We zijn begonnen met het schrijven van automatische tests. Hiervoor hebben we een inventarisatie moeten maken van de huidige functionaliteiten. Als Smartfile voortaan iets nieuws programmeert, dan gaat de server voor hen al die automatische tests draaien. Zo weet je meteen of je software het aankan en dat is goed voor je vertrouwen in je systeem. Door continue de nieuwe code te testen, heb je altijd inzichtelijk of de applicatie nog steeds werkt nadat je aanpassingen hebt gedaan.

Automatisch uitrollen

Tot slot hebben we ons gericht op het automatiseren van het uitrol proces. Door deployment te automatiseren hebben we opnieuw een stuk veiligheid ingebouwd en de kans verkleint dat er in dat proces iets stuk gaat.

Wat doet automatische deployment en waarom wil je het hebben:

Op het moment dat je nieuwe code wil gaan deployen, bestaat dat proces gewoonlijk uit een stuk of 8 stappen. Die stappen moet je altijd allemaal in de juiste volgorde doen en als je er een vergeet, dan heb je een probleem. Als jij acht stappen moet doen, en je vergeet stap zes, dan is je software daarna gewoon stuk. En dan niet stuk als in ‘ow ik moet stap zes gewoon nog een keer doen’. Het zou zomaar kunnen dat als jij stap zes bent vergeten, stap zeven daardoor daadwerkelijk iets stuk heeft gemaakt. Dan ga je zo een uur downtime hebben om dat te herstellen. Dat gebeurt je één keer, en daarna heb je geen vertrouwen meer in dingen live zetten. Dus wat ga je doen: niet meer zo vaak dingen live zetten. Met als gevolg dat je ontwikkelsnelheid gigantisch naar beneden gaat. Daarnaast kost het ook een bult tijd. Je moet steeds kijken of de computer al klaar is met de huidige stap en door naar de volgende stap. Het kost je zo een half uur om dingen online te zetten. Op het moment dat je dat automatiseert, dan staat in 10 minuten je software online én kan je extra stappen toevoegen om je deployment te optimaliseren. Bij ‘klassieke’ deployment begin je in stap 1 met het aanzetten van de maintenance mode. Niemand kan dan het systeem meer gebruiken totdat je klaar bent. Tegenwoordig willen de meeste systemen zero downtime deploys. Een manier om dat mogelijk te maken is door een tweede omgeving te creëren waar je alle installatiestappen helemaal gaat doorvoeren. Als het klaar is, dan draai je die twee snel om, zodat de nieuwe versie live gaat. Wat dus ook betekent dat je meteen een roll-back mechanisme hebt. Dus als het live is en je denkt “ow nee, dit is helemaal misgegaan”, dan kan je met een druk op de knop alles weer terugdraaien alsof er niks is gebeurt.

Klaar voor de toekomst

Door op alle vlakken te kijken naar manieren van automatisering hebben we enorm veel winst weten te behalen. Hierdoor is de applicatie nu stabieler en het toevoegen van functionaliteiten veiliger. Zo kan Smartfile de komende jaren, vol vertrouwen, prima vooruit. Hoeveel nieuwe functionaliteiten ze ook bedenken.

Gebruikte technologieën: Ruby on Rails, GithubActions

Wil je ook hulp bij het opschonen van jouw huidige applicatie? Of wil je een professionaliseringsslag slaan voor de toekomst? Neem dan vooral contact met ons op en vraag naar de mogelijkheden!