Programvaruredundans är inkluderingen av flera, oberoende komponenter eller system i en mjukvaruapplikation eller system som är utformade för att utföra samma funktion. Om en komponent misslyckas kan de andra ta över, säkerställa kontinuerlig drift och förhindra fullständigt systemfel. Detta är en avgörande aspekt av att bygga pålitliga och feltoleranta system.
Det finns flera sätt att mjukvara redundans kan implementeras:
* hårdvaruredundans (på mjukvaranivå): Detta innebär att du kör samma programvara på flera fysiska maskiner eller processorer. Om man misslyckas fortsätter de andra att fungera. Detta uppnås ofta med hjälp av tekniker som kluster.
* Programvaruredundans (rent programvara): Detta innebär att ha flera kopior av samma programvarumodul eller process som körs samtidigt. Om en instans misslyckas kan andra ta sin plats. Detta kan implementeras genom tekniker som processreplikation eller flertrådning med failover-mekanismer.
* Data Redundans: Detta hänvisar till att lagra flera kopior av data på olika platser. Om en lagringsplats misslyckas är uppgifterna fortfarande tillgängliga från andra kopior. Detta involverar ofta databasreplikation eller distribuerade filsystem.
* Funktionell redundans: Detta handlar om att använda flera, olika algoritmer eller metoder för att lösa samma problem. Om en algoritm misslyckas eller ger ett felaktigt resultat kan de andra ge en säkerhetskopia eller korskontrollera resultaten.
Den viktigaste fördelen med programvaruredundans är ökad tillförlitlighet och tillgänglighet. Men det introducerar också komplexiteter:
* Ökad kostnad: Mer hårdvara eller mjukvaruresurser krävs.
* Ökad komplexitet: Att hantera och samordna flera komponenter kan vara utmanande.
* Potential för inkonsekvenser: Om de redundanta komponenterna inte är perfekt synkroniserade kan inkonsekvenser uppstå.
Den specifika typen av redundans som används beror på kritiken i applikationen, den acceptabla nivån för driftstopp och tillgängliga resurser. Till exempel skulle ett livskritiskt system sannolikt använda en hög grad av redundans, medan ett mindre kritiskt system kan använda en enklare strategi.