ENIGMA LOGICFROM COMPLEXITY TO CLARITY

VODIČ / ODRŽAVANJE

Programer koji je napravio vaš sistem je nestao

Čest scenario u srpskim firmama: pre nekoliko godina neko je napravio program za fakturisanje, magacin ili proizvodnju. Program i danas radi. Ali taj čovek se odselio, promenio posao, podigao cenu ili prosto prestao da se javlja. Sistem od koga zavisi posao sada niko ne sme da dira. Ovaj vodič je o tome šta se u toj situaciji radi, kojim redom, i šta je od strahova opravdano.

01

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.

02

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?
03

Prvo vratite vlasništvo, pa tek onda zovite programera

Ovo je najjeftiniji i najhitniji deo posla, a ne zahteva da iko razume kod:

  1. Prebacite domen i hosting na naloge koji glase na firmu, sa poslovnim e-mailom i firminom karticom. Uključite automatsku obnovu.
  2. Izvadite lozinke iz tuđih glava i sa papirića u menadžer lozinki koji je vlasništvo firme.
  3. Obezbedite kopiju izvornog koda i podataka kod sebe, nezavisno od bilo kog spoljnog saradnika.
  4. 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.

04

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.

05

Š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.

06

Kako izgleda uredno preuzimanje

Kada neko preuzima sistem koji ne poznaje, prvi mesec ne treba da donese nijednu novu funkciju. Treba da donese kontrolu:

  1. 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.
  2. 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.
  3. Minimalni runbook: kako se pokreće, kako se vraća iz backupa, kako se objavljuje izmena. Tri stranice su dovoljne.
  4. Prva izmena mora biti mala i laka za poništavanje. Njen cilj nije korist nego dokaz da ceo lanac radi.
Minimum koji mora da stane na tri stranice
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 lozinke

Merilo 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.

07

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.

AUTOR

David Božić, autor vodiča

David Božić

Osnivač i softverski inženjer

Radio na razvoju i održavanju bankarskih i fintech sistema, gde greška u podacima ima cenu. Danas gradi i preuzima poslovne sisteme za proizvodne firme, magacine i administrativne agencije.

LinkedIn profil

Imate sistem koji niko ne održava?

Recite nam šta imate i šta ne znate da imate. Popis i provera oporavka su mali posao, a posle njih se mnogo lakše odlučuje šta dalje.

Recite nam problem↗