Vad är programvarudistribution?
Enligt Wikipedia består "programvarudistribution" av alla aktiviteter som gör ett programvarusystem tillgängligt för användning. Den allmänna distributionsprocessen består av flera relaterade aktiviteter, med möjliga övergångar mellan dem. Varje programvarusystem är unikt. Därför bör ”distribution” tolkas som en generell process som måste anpassas enligt specifika krav eller egenskaper.
Vissa använder termerna "distribution" och "installation" omväxlande, men programvaruinstallationen är bara en del av distributionsprocessen. Distribution omfattar mycket mer än så. Distributionsaktiviteter kan inbegripa:
- "Racking and stacking" en server.
- Distribuera en uppdaterad programvara till servern.
- Använda saker som skript och infrastruktur som kod.
- Till och med gå runt på ett kontor med en USB-enhet och installera programvara manuellt på datorer.
Manuell installation av programvara kräver mycket arbete och skalar inte särskilt väl. Automatisering gör det enklare och mer kostnadseffektivt att säkerställa konsekvens när du distribuerar ny programvara eller uppdaterar befintlig programvara i en organisation.
Vårt fokus som en del av den här utbildningsvägen är hur du bäst distribuerar programvara för tillförlitlighet. Den här modulen behandlar inte bara programvarudistribution, utan även distribution av molninfrastruktur. Referenser till distribution av en tjänst eller lösning kan syfta på distribution av programvara, molninfrastruktur, konfiguration samt allt som behövs för att på ett tillförlitligt sätt göra ett programvarusystem tillgängligt för användning.
Scenario: Den episka distributionen
Ordet epos betyder "grand, monumental eller vast", men i samband med denna diskussion är det inte bra. Termen "episk" myntades av Jez Humble i hans bok Continuous Delivery: Reliable Software Releases through Build, Test och Deployment Automation eftersom det representerar ett massivt (och massivt störande) åtagande. Här är ett exempel på hur det ofta går till:
- En organisation utvecklar ett säljrelaterat program. Det här programmet uppdateras exakt två gånger per år.
- Under dessa uppdateringar distribueras alla nya funktioner, buggkorrigeringar (stora och små) och beroendeuppdateringar.
- Årets första distribution ska ske under Labor Day-helgen, och den andra sker veckan efter Thanksgiving.
- Varje uppdatering innebär att alla måste rycka in. Programteamet, supportteamet, infrastrukturteamet, ledningen; alla deltar i distributionen.
- Tjänster går offline tillfälligt medan distributionen pågår.
- Historiken har visat att distributionen alltid är fylld av problem, teknik på begäran, felsökning och ändringar i konfigurationshantering.
- Det går sällan som det ska, och när distributionen är klar känns den ofta provisorisk på ett sätt som inte går att reproducera.
Det här är ingen bra distributionssituation. Metoden för episk distribution är en intensiv manuell uppgift som ger upphov till ett flertal problem:
- Det är komplext.
- Det är stressigt.
- Det är riskabelt.
- Det är långsamt.
- Det är inte reproducerbart på grund av alla komplexa steg.
- Den kräver ofta flera enskilda experter för att distributionen ska slutföras.
Eftersom processen är lång och arbetskrävande måste den förläggas till tider som orsakar minsta möjliga störning av användarnas produktivitet. Det innebär att man väljer tider som är obekväma för distributionsteamet, till exempel helger och helgdagar.
Teammedlemmar kan känna sig skyndade att få mammutåtgärden slutförd inom tidsramen, vilket gör att de gör konfigurationsmisstag. Långa tider mellan distributioner kan också få dig att glömma exakt hur saker och ting fungerar.
Distributionsdilemmat
Programvarudistribution är en komplex uppgift, och när du "sparar" flera större ändringar, korrigeringar och funktionstillägg för att distribuera allt i ett svep ökar du komplexiteten och ökar därmed sannolikheten för att något går fel. Och när saker går snett gör den här komplexiteten att det blir svårare att ta reda på exakt vad som orsakade problemet.
Komplexitet kan också skapa problem för slutanvändarna, eftersom de kan behöva ta itu med att lära sig många nya funktioner och ändringar samtidigt, för att inte tala om eventuella buggar som introduceras av den episka distributionens komplexitet.
Det borde finnas ett bättre sätt, och det finns det. Den goda nyheten är att den traditionella strategin med episk distribution inte är det enda alternativet. Vi lär oss ett bättre sätt att gå vidare med den här processen i nästa lektion.