Opasnost nije tamo gde je tražite
Prva misao je obično izvorni kod: nemamo kod, znači nemamo ništa. U praksi, kod je retko ono što će vas srušiti. Firme ne propadaju zato što ne mogu da dodaju novo dugme, nego zato što jednog jutra izgube pristup.
Domen istekne jer je registrovan na privatnu adresu bivšeg saradnika i obaveštenje o isteku ode njemu. Hosting se ugasi jer je kartica sa koje se plaćao istekla. Jedini čovek koji zna administratorsku lozinku ode na bolovanje. Sve su to situacije u kojima sistem i dalje tehnički postoji, a vi ga nemate.
Zato redosled nije: hajde da nađemo programera. Redosled je: hajde da prvo povratimo kontrolu nad onim što već imamo.
Popis koji treba uraditi ove nedelje
Ovo ne zahteva programera i možete ga uraditi sami. Cilj je da na jednom papiru stoji odgovor na svako od ovih pitanja:
- Gde sistem fizički radi? Server u vašoj kancelariji, iznajmljen server, nečiji nalog kod hosting firme?
- Ko plaća domen, hosting, sertifikat i licence, i sa čije kartice? Na čije ime i e-mail su registrovani?
- Postoji li izvorni kod i gde? Da li je to zaista verzija koja trenutno radi?
- Koja baza podataka, koja verzija, i gde su podaci?
- Ko ima administratorske pristupe i gde su zapisani?
- Postoji li backup, gde ide i da li iko proverava da je prošao?
- Šta se sve povezuje sa sistemom: banka, SEF, veb prodavnica, vage, čitači bar-koda?
Prvo vratite vlasništvo, pa tek onda zovite programera
Ovo je najjeftiniji i najhitniji deo posla, a ne zahteva da iko razume kod:
- Prebacite domen i hosting na naloge koji glase na firmu, sa poslovnim e-mailom i firminom karticom. Uključite automatsku obnovu.
- Izvadite lozinke iz tuđih glava i sa papirića u menadžer lozinki koji je vlasništvo firme.
- Obezbedite kopiju izvornog koda i podataka kod sebe, nezavisno od bilo kog spoljnog saradnika.
- Proverite ko je formalno vlasnik koda po ugovoru. Ako ugovora nema, to je stvar koju treba rešiti pre nego što zatreba.
Posle ova četiri koraka vaša situacija je bitno drugačija, čak i ako se u sistemu nije promenio nijedan red koda. Više niste zavisni od dobre volje nekoga ko se ne javlja.
Backup koji niste probali da vratite nije backup
Skoro svaka firma kaže da ima backup. Vrlo malo njih je ikada pokušalo da ga vrati. To su dve potpuno različite stvari, i razlika se otkriva u najgorem mogućem trenutku. Koja dva broja treba da znate pre tog testa, i kako se on izvodi bez rizika, razloženo je u vodiču o backupu i oporavku.
- Backup na istom serveru ili istom disku nije backup. Kvar diska ili ransomware odnose i original i kopiju.
- Kopija baze nije dovoljna. Trebaju vam i fajlovi, i konfiguracija, i podaci o tome kako se sistem uopšte pokreće.
- Backup koji niko ne proverava tiho prestane da radi. Obično se to otkrije mesecima kasnije.
Jedini pošten test je da se backup vrati na odvojeno okruženje i da se izmeri koliko je to trajalo. Taj broj je vaše stvarno vreme oporavka. Ako ga ne znate, vaš plan oporavka je samo nada.
Šta ako zaista nema izvornog koda
Pre nego što zaključite da ga nema, vredi dobro potražiti. Kod se često nađe u staroj prepisci, na nekom USB-u, ili na samom serveru. Kod sistema pisanih u jezicima koji se ne kompajliraju, kao što su PHP ili Python, ono što radi na serveru i jeste izvorni kod.
Ako je reč o kompajliranoj aplikaciji, a koda nema, situacija je teža ali nije bezizlazna. Najvažnije je razumeti šta je ovde zapravo vredno: u ogromnoj većini slučajeva to su vaši podaci, ne kod. Podaci se mogu izvući iz baze bez obzira na to da li program ume iko da menja.
Realan put tada nije prepisivanje svega iznova, nego postepeno obavijanje. Stari sistem nastavi da radi ono što radi, novo se gradi pored njega i preuzima deo po deo. Potpuno prepisivanje je najskuplja i najrizičnija opcija i bira se, iskreno, češće iz besa nego iz tehničkih razloga.
Kako izgleda uredno preuzimanje
Kada neko preuzima sistem koji ne poznaje, prvi mesec ne treba da donese nijednu novu funkciju. Treba da donese kontrolu:
- Faza posmatranja. Sistem se stavlja pod verzionisanje čak i ako nikada nije bio, i ništa se ne menja dok se ne razume šta radi.
- Podizanje u test okruženju. Ako sistem ne može da se podigne iz nule na drugoj mašini, niko ga zapravo ne kontroliše.
- Minimalni runbook: kako se pokreće, kako se vraća iz backupa, kako se objavljuje izmena. Tri stranice su dovoljne.
- Prva izmena mora biti mala i laka za poništavanje. Njen cilj nije korist nego dokaz da ceo lanac radi.
POKRETANJE
gde radi, kako se startuje, od čega zavisi
OPORAVAK
odakle se vuče backup
koraci vraćanja, izmereno trajanje
kada je poslednji put uspešno testirano
IZMENA
kako se objavljuje nova verzija
kako se vraća prethodna ako pukne
PRISTUPI
ko ima koji nalog, gde se čuvaju lozinkeMerilo da je preuzimanje uspelo je jednostavno: možete li ceo sistem da podignete na novoj mašini, iz backupa i koda, bez čoveka koji ga je napravio. Dok je odgovor ne, preuzimanje još traje.
Zamena nije uvek odgovor
Posle lošeg iskustva postoji snažan poriv da se sve baci i napravi iznova. Ponekad je to tačno, češće nije.
Zadržite i održavajte ako sistem radi posao, poslovna logika u njemu je ispravna i jedino što se promenilo su ljudi oko njega. Taj sistem u sebi nosi godine ispravljenih grešaka i izuzetaka kojih se niko više ne seća, a koji će se u novom sistemu pojaviti ponovo, jedan po jedan.
Zamenite ako platforma više ne dobija bezbednosne zakrpe, ako vas model podataka aktivno sprečava da radite ono što posao traži, ili ako sistem bukvalno niko ne ume da pokrene. I tada se zamena radi uporedo sa starim sistemom, nikad presecanjem preko noći.
