Aplicarea unui update de aplicatie sau de sistem de operare, fie ca este vorba de un hotfix, fie de un patch sau ca se doreste trecerea la o noua versiune majora de cod, implica si riscul ca ceva sa nu mai mearga asa cum trebuie in urma acestui proces. Pot parea probleme care sunt cunoscute si pentru care exista workaround-uri rapide care sa nu introduca downtime sau pot aparea probleme necunoscute care aduc aplicatia sau sistemul intr-o stare de nefunctionalitate partiala sau totala. Asadar, orice proces de update trebuie sa contina si o procedura de rollback care sa descrie pasii care trebuie urmati pentru a readuce aplicatia sau sistemul in starea de buna functionare de dinaintea efectuarii update-ului.
Rollback #1. Simpla dezinstalarea a update-ului poate fi suficienta in unele cazuri pentru a aduce aplicatia sau sistemul inapoi pe linia de plutire. Aceasta optiune este regasita cu precadere in mediile de tip PaaS (Platform as a Service). Doar prin cateva click-uri, sysadmin-ul sau inginerul DevOps poate readuce mediul de dezvoltare intr-o stare consistenta de functionare anterioara aplicarii update-ului. Complexitatea acestui proces este transparenta pentru utilizator, ea fiind gestionata de furnizorul solutiei PaaS. Creste astfel gradul de uzabilitate a platformei, intrucat inginerii pot testa mai usor versiuni diferite ale aplicatiei creata cu versiuni diferite de tool-uri si pot identifica mai rapid incompatibilitati sau buguri software.
Rollback #2. Snapshot-ul reprezinta o captura statica a starii unui sistem facuta la un anumit moment de timp cu scopul de readuce sistemul in acea stare daca ceva nu functioneaza corespunzator. Snapshot-ul poate fi facut manual sau automat si permit restaurarea rapida a sistemului la o stare anterioara. Este foarte important de mentionat faptul ca orice date generate de sistem din momentul in care snapshot-ul este executat si pana cand se face restaurarea sistemului folosind acel snapshot vor fi pierdute pentru totdeauna. Snapshot-ul este metoda “quick and dirty” de rollback, iar pierderea acelor date este considerata acceptabila. Snapshot-ul este o metoda de backup folosita mai ales pentru instante de masini virtuale. Aceste resurse de compute pot avea date importante pe disk, dar si in memoria RAM (cum sunt aplicatiile de baze de date) caz in care snapshot-ul trebuie sa cuprinda atat datele de pe disk, cat si cele din memorie. Mai trebuie mentionat faptul ca un snapshot nu este un backup al instantei virtuale. Daca hard disk-ul virtual al instantei este sters sau daca storage-ul fizic sau infrastructura de virtualizare au probleme, atunci snapshot-ul nu poate fi folosit pentru a restaura instanta.
Rollback #3. Backup-ul unei instante virtuale reprezinta o copie independenta a datelor acesteia care nu este conectata la instanta. Spre deosebire de un snapshot, un backup poate fi mutat intr-un cloud sau intr-o locatie offsite pentru a tine in siguranta datele. Astfel, in caz de eroare catastrofala, se poate crea o noua instanta folosind datele din backup. Un backup ofera functionalitati pe care un snapshot nu le are, de exemplu se poate face backup doar acelor date care s-au modificat de la ultima efectuare a backup-ului pentru a conserva spatiul de stocare sau se pot restaura doar anumite fisiere sau aplicatii in caz de functionare necorespunzatoare sau incompatibilitati software (de exemplu, la updatarea unor drivere de sistem, aplicarea de setari prin AD GPO, exploatarea activa unor buguri)
Efectuarea update-urilor reprezinta o parte importanta din ciclu de viata al unei aplicatii sau al unui sistem prin care urmareste rezolvarea unor buguri software, eliminarea unor vulnerabilitati de securitate sau introducerea de noi capabilitati si functionalitati. Update-urile pot merge prost si de aceea trebuie intotdeauna avut la dispozitie o procedura de rollback ca parte dintr-un plan de mitigare a riscurilor care sa minimizeze un eventual downtime.
Mihai Dumitrascu, Sr Systems Engineer