7 adviezen voor continuïteit van je software en systemen

Tim de Pater
Martijn van de Polder & Tim de Pater

6 november 2018

Voor je online groeiende organisatie zijn een nieuwe site, applicatie, api of andere software geen projecten meer met een kop en een staart. Het gaat om continuïteit en je zult moeten doorontwikkelen om de beschikbaarheid van je software en systemen te kunnen garanderen voor je klanten en medewerkers. Hoe je dat doet? In dit artikel geven we onze kijk en ervaring op de continuïteit van je software en systemen.

1. Omarm DevOps

Ontwikkelen van applicaties is geen kortstondig eenrichtingsverkeer van developers. Het gaat hand in hand met het beheer van de applicatie op de lange termijn. Voor de continuïteit van je IT is het daarom van belang dat ontwikkelaars en beheerders samenwerken. DevOps heet dat, van Development en Operations. Nog mooier is het als je ontwikkelaars zelf ook de DevOps engineers zijn voor beheer en doorontwikkeling.

We zien vaak dat een Devops Engineer buiten het ontwikkelteam staat. Problemen verdwijnen als sneeuw voor de zon door ze uit het team ‘over de schutting te gooien’. Maar DevOps moet juist een teambrede verantwoordelijkheid zijn. Als je applicaties ontwikkelt en beheert, kun je als developer in je code al rekening houden met alle beheerfacetten. Je benut systemen efficiënter, maakt ze veiliger en je kunt vooraf al anticiperen op dingen die fout kunnen gaan.

2. Schrijf Agile code

Agile werken is niet een kunstje dat je leert, het is een way of (work)life. Naarmate je langer werkt volgens de methodiek die snelheid en continu bijsturen mogelijk maakt, dan gaat het zelfs in je code zitten. Met Agile code ga je er al bij de ontwikkeling van software vanuit dat wat je maakt ook wijzigt, iterative development genoemd. Daardoor zet je systemen en structuren flexibel op om handig en vlot in te spelen op verandering van wensen en uitbreidingen. Continuïteit garanderen is een stuk makkelijker als het ondersteund wordt door iteratieve engineering.

Containers

Software verwerk je bij voorkeur in een systeemlandschap op basis van kleinere, losse services, de zogeheten microservices. Je maakt daarmee bijvoorbeeld aparte services voor je orderproces, betaalproces, en je logistieke proces. Deze zogeheten containertechnologie maakt je microservices afzonderlijk configureerbaar, schaalbaar en vervangbaar. Het is namelijk vele malen eenvoudiger, sneller en goedkoper om een microservice te vernieuwen dan een compleet systeem waar alle services gecombineerd zijn.

3. Werk aan continuous improvement

Als je software maakt die zo flexibel is geschreven dat het Agile is en je continu kunt verbeteren, dan kom je in een flow van Continuous Development, Delivery en Integration. Dit houdt in dat je continu kleine brokjes functionaliteit ontwikkelt en op de productieomgeving plaatst. Dit vergt veel van de ontwikkelkwaliteit: je mag immers niet de stabiliteit van de productieomgeving in gevaar brengen. De uitrol en het testen van de software moet daarom bij voorkeur geautomatiseerd zijn. En controleer je ontwikkelde code altijd met zogeheten peer-reviews. Het logische voordeel is dat je software continu verbetert, zonder te wachten op vaste deployment cycles. En de bonus is dat de individuele releases klein zijn en daarmee direct minder complex en risicovol.

Als nieuwe functies vroeg live zijn, heeft dat ook als voordeel dat het eerder in gebruik wordt genomen door mensen of gekoppelde systemen. Dat levert feedback en data op waaraan je ziet dat het beter kan. De wensen, ideeën en veranderingen verwerk je op je backlog, zodat ze meteen meegaan in de iteratie voor de volgende versie van je applicatie.

Bij Enrise werken we al enige tijd met Continuous Deployment en Review Applications, waarmee je functionaliteit los van elkaar kunt opleveren. Dus geen set aan meerdere functies ontwikkelen en pas opleveren als alles klaar is, maar per functie ontwikkelen en publiceren. Eenmaal opgezet en ingericht is het veel eenvoudiger om snel nieuwe functionaliteit op te leveren.

 

4. Behoud door permanent onderhoud

Met continuous improvement ben je niet alleen maar iteratief nieuwe features aan het toevoegen. Je moet ook zorgen dat je software en systemen netjes blijven draaien. Waar je voorheen nog apart onderhoud pleegde aan een applicatie, is ook dat nu integraal onderdeel van de continue ontwikkeling. Bij vernieuwingen aan de software wordt oude code opgeruimd, verbeterd en voorzien van toekomstbestendige aanpassingen.

Ontwikkeling en beheer gaan hand in hand zodat je bij de komst van nieuwe apparaten, verandering van technologie, vervanging van systemen en het ontstaan nieuwe wensen snel kunt schakelen en technologie up to date houdt. Realtime inzicht in de performance  – in de breedste zin van het woord – van de applicatie is dan uiteraard wel een vereiste.

Service Level Indicator

Naast permanent onderhoud leg je ook zaken vast in een Service Level Agreement, vooral een juridisch document met afspraken. Maar om te voorkomen dat een SLA alleen in noodgevallen gebruikt wordt, is het vooral van belang dat je met je technisch partner afspraken maakt die gaan over de meetbaarheid van het serviceniveau. Stel KPI’s op die direct betrekking hebben op essentiële onderdelen in je organisatie. Denk aan een orderbestelflow die nooit mag uitvallen. Of aan specifieke conversiecijfers. Of de maximale wachttijd voor een gebruiker die de klantenservice belt.

5. Deel projectkennis zo breed mogelijk

Bij digitale producten die permanent in ontwikkeling zijn, doen je mensen veel kennis en ervaring op. Om ook de continuïteit van die kennis te waarborgen, is kennisdeling tussen mensen, teams en afdelingen essentieel. Rouleer je medewerkers op de diverse projecten. En neem je nieuwe mensen aan, geef ze dan de vrijheid om zich het product helemaal eigen te maken en hun ervaringen te delen d.m.v. kennisdelingsessies en presentaties.

Retro

Gebruik de Scrum-methodiek om in refinement-sessies, sprint reviews en retrospectives projectkennis te delen. Bij Enrise doen we dat zelfs met onze klanten, zodat ook zij weten waar wij mee bezig zijn en meer begrip krijgen voor de oplossingen die we aandragen.

Neem freelancers ook mee in alle kennisdeling. Freelancers zijn ideaal om tijdelijk extra werk te kunnen verzetten of bepaalde expertise in huis te halen, maar hun werk blijft tijdelijk. Met hun vertrek vertrekt ook de opgebouwde kennis van technieken en processen. Laat freelancers pas gaan als code en andere specifieke kennis gedocumenteerd en gedeeld is. Feitelijk moet dat de verantwoordelijkheid zijn van een goede freelancer, maar wees er als werkgever ook kritisch op dat het werkelijk gebeurt.

6. Budgetteer verandering

Continuïteit van software en systemen betekent ook continuïteit van je kosten. Doorontwikkeling, onderhoud en beheer brengen kosten met zich mee die nooit in een enkel projectbudget zijn te vatten. Daarom is er budget nodig dat projectoverstijgend is en eveneens gericht is op verandering en speelruimte. Dat betekent niet dat uitgaven ongelimiteerd moeten zijn, integendeel. Een goede strategie voor je online business valt of staat met  een degelijk en nauwkeurig budget dat voor alle stakeholders inzichtelijk is.

7. Van leverancier naar partner

Samengevat is continuïteit van software en systemen afhankelijk van het vermogen om adequaat in te kunnen spelen op veranderingen. Als veranderingen de enige constante zijn in de groei van je online business, kun je niet anders dan Devops omarmen, code agile opzetten en continuous developmentprocessen inrichten. Logischerwijs komen je KPI’s in een Service Level Agreement en deel je opgedane kennis zo breed mogelijk met alle betrokkenen.

Voor de continuïteit van je software hoef je niet steeds op zoek naar een externe partij, maar wil je vooral een technisch partnership aangaan om de langetermijn van je product te waarborgen. Kies een partner met een team van mensen die betrokken zijn en blijven bij de ontwikkeling van je product. Zij overzien samen met jou (en eventuele inhouse teams) het volledige landschap en bewaken ontwikkeling en processen. Je hebt een partij nodig die van ontwikkeling tot beheer met je meedenkt, adviseert, tegengas biedt en zich 100% medeverantwoordelijk voelt voor het succes van jouw product.