Smartfile: Having confidence in your software

Cleaning up an existing application

  • Ruby on Rails
  • Platform
  • DevOps
  • Bauke
  • Ewout

Bauke and Ewout worked on this project

Smartfile is an all-in-1 software package for physiotherapists with a lot of functionalities. For example, users can keep track of their customers, it helps organize patient files, it offers the possibility to manage appointments and it also keeps track of administration. A super tool!

The challenge: seamlessly adding features

Smartfile's software has grown organically. The company started as a start-up and has responded to the wishes of the market. By adding new functionalities every time, they have developed a piece of software that exactly meets the demands and needs of their customers. When Smartfile knocked on our door, their software was fine, but lacked a stable basis. This mainly manifested itself in problems with adding new features.

Why a lack of trust is a problem

The moment an application is unstable, this is at the expense of the trust you have in your own application. If you have to take into account everything that could go wrong, you can no longer code worry-free. If you are going to write a piece of code, and every time you add the code you are afraid that maybe everything could break (or worse that your application will not only break but you will also lose data), then you will never be the fastest to bring things to market. It is often not a question of whether the software will break, but rather when it will break. When the trust in your system is very low, large functionalities can no longer be added. You’ll have to adjust so many things, and take so many things into account (just to ensure that nothing breaks), that you would rather not start on that at all. As a company it isn’t a nice situation if you no longer have confidence in your own software, but for Smartfile that wasn’t even the biggest problem. In their software, their customers work with patient information. If there is even one bug where the customer sees the patient information from another physical therapist, they lose all confidence in your software in one fell swoop. That lack of trust will stagnate the growth of your company. If you already have the feeling that your application is not as stable as you would like, then of course you are not going to roll it out for many customers. That was the biggest problem with Smartfile: there was not a bad piece of software, but there was a lack of confidence in the software and there were good reasons for it. As a result, there was not enough confidence to say: “Let’s grow with this!”

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.

Ewout
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!