Wat is software-implementatie?
- 3 minuten
Software-implementatie omvat alle activiteiten die een softwaresysteem beschikbaar maken voor gebruik. Het algemene implementatieproces bestaat uit verschillende onderling gerelateerde activiteiten, met mogelijke overgangen tussen deze activiteiten. Elk softwaresysteem is uniek, dus implementatie is een algemeen proces dat moet worden aangepast aan specifieke vereisten of kenmerken.
Sommige gebruiken de termen 'implementatie' en 'installatie' door elkaar, maar de software-installatie maakt slechts deel uit van het implementatieproces. Implementatie omvat meer. Implementatieactiviteiten kunnen onder andere het volgende omvatten:
- Een server in een rek plaatsen en stapelen.
- Een bijgewerkt stukje software implementeren op die server.
- Het gebruik van zaken zoals scripts en infrastructuur als code.
- Zelfs op kantoor rondlopen met een USB-stick om software handmatig op computers te installeren.
Het handmatig implementeren van software is arbeidsintensief en schaalt niet goed. Automatisering maakt het eenvoudiger en rendabeler om consistentie te garanderen wanneer u nieuwe software uitrolt of bestaande software in een organisatie bijwerkt.
Dit leertraject richt zich op het beste implementeren van software voor betrouwbaarheid. Deze module heeft niet alleen betrekking op software-implementatie, maar ook op het implementeren van de cloudinfrastructuur. Verwijzingen naar implementatie van een service of een oplossing kan betekenen dat software, cloudinfrastructuur, configuratie en alles wat nodig is om een softwaresysteem op een betrouwbare manier beschikbaar te stellen, worden geïmplementeerd.
Scenario: De epische implementatie
Het woord episch betekent "groot, monumentaal of enorm", maar in de context van deze discussie is het niet goed. Jez Humble en David Farley gebruiken de term in hun boek *Continuous Delivery: Reliable Software Releases through Build, Test and Deployment Automation* omdat het een enorme (en enorm ontregelende) onderneming vertegenwoordigt. Hier volgt een voorbeeld van hoe dit meestal gebeurt:
- Een organisatie ontwikkelt een verkoopgerelateerde toepassing. Deze toepassing wordt exact twee keer per jaar bijgewerkt.
- Tijdens deze updates worden alle nieuwe functies, bugfixes (groot en klein) en afhankelijkheidsupdates geïmplementeerd.
- De eerste implementatie van het jaar is gepland om te worden uitgevoerd in het weekend van Labor Day en de tweede in het weekend na Thanksgiving.
- Elke update is een 'alle handen op dek'-situatie. Het toepassingsteam, het ondersteuningsteam, het infrastructuurteam en het beheer zijn allemaal betrokken bij de implementatie.
- Services gaan tijdelijk offline terwijl de implementatie wordt uitgevoerd.
- De geschiedenis heeft aangetoond dat de implementatie altijd beladen is met problemen, engineering op aanvraag, probleemoplossing en wijzigingen in configuratiebeheer.
- Het gaat zelden goed en als het klaar is, voelt het over het algemeen aan als op een niet te reproduceren manier aan elkaar geplakt.
Dit is geen goede implementatiesituatie. De epische implementatiemethode is een intensieve handmatige taak die een aantal problemen oplevert:
- Het is complex.
- Het is stressvol.
- Het is riskant.
- Het is traag.
- Het is niet reproduceerbaar vanwege alle complexe stappen.
- Er zijn vaak meerdere afzonderlijke experts nodig om de implementatie te voltooien.
Omdat dit proces lang en lastig is, moet het worden gepland op tijdstippen die de minst verstorende gebruikersproductiviteit veroorzaken, wat betekent dat tijden die waarschijnlijk onhandig zijn voor het implementatieteam, zoals weekenden en feestdagen.
Teamleden kunnen zich haast voelen om de mammoetbewerking binnen het tijdsbestek te voltooien, waardoor ze configuratiefouten kunnen maken. Lange tijden tussen implementaties kunnen er ook toe leiden dat u precies vergeet hoe dingen werken.
Het implementatiedilemma
Software-implementatie is een complexe taak en wanneer u meerdere belangrijke wijzigingen, oplossingen en functietoevoegingen opslaat om alles in één keer te implementeren, verhoogt u de complexiteit en verhoogt u de kans dat er iets fout gaat. Bovendien, wanneer dingen echt misgaan, maakt deze complexiteit het moeilijker om precies te achterhalen wat het probleem heeft veroorzaakt.
Complexiteit kan ook problemen veroorzaken voor de eindgebruikers, omdat ze mogelijk te maken hebben met het leren van veel nieuwe functies en wijzigingen allemaal tegelijk, niet om te vermelden dat er fouten zijn die worden geïntroduceerd door de complexiteit van de epische implementatie.
Er moet een betere manier zijn, en er is. Het goede nieuws is dat de traditionele epische implementatiestrategie niet de enige optie is. In de volgende les leert u hoe u dit proces kunt voltooien.