Preskoči na sadržaj
Datasoft

Django i razvoj

Sigurna nadogradnja Django aplikacije u produkciji

Kako pripremiti, testirati i provesti Django deploy s migracijama i mogućnošću povrata.

Datasoft · · 4 min čitanjaAžurirano:

Najrizičniji trenutak za poslovnu web aplikaciju često nije razvoj nove funkcije nego njezino puštanje u rad. Neuspjela migracija baze, promjena postavki ili nedostajuća ovisnost mogu zaustaviti sustav. Siguran Django deploy zato treba biti ponovljiv postupak s testovima i mogućnošću oporavka.

Priprema počinje prije produkcije

Sve promjene trebaju proći pregled koda i automatske testove. U testnom okruženju potrebno je koristiti konfiguraciju dovoljno sličnu produkcijskoj, posebno kada su važne baze podataka, predmemoriranje ili vanjske integracije. Sintaktički ispravan kod nije dovoljan: provjerite i prijavu korisnika, najvažnije poslovne radnje te promjene ovlasti.

Django ima korisnu provjeru python manage.py check --deploy koja ukazuje na dio sigurnosnih postavki. Ipak, treba zasebno provjeriti tajne, dozvoljene hostove, HTTPS, statičke datoteke i način rada aplikacijskog servera.

Migracije baze: najosjetljiviji dio

Nisu sve Django migracije jednako sigurne. Dodavanje nullable polja često je jednostavnije od preimenovanja ili brisanja stupca koji stara verzija aplikacije još koristi. Kod sustava s visokom dostupnošću razmotrite proširi–migriraj–ukloni pristup: najprije dodajte kompatibilnu strukturu, zatim postupno prenesite podatke, a zastarjela polja uklonite tek kada ih ništa ne koristi.

Prije većih zahvata napravite i provjerite backup. Obrnuta migracija nije uvijek moguća, a povrat koda ne vraća automatski obrisane podatke. Plan za rollback mora razlikovati aplikacijski kod i stanje baze.

Primjer kontroliranog postupka

  1. Označite izdanje u repozitoriju i pripremite opis promjena.
  2. Provedite testove i pregledajte plan migracija.
  3. Potvrdite nedavnu valjanu sigurnosnu kopiju.
  4. Primijenite promjene u dogovorenom terminu.
  5. Provjerite zdravlje servisa i ključne korisničke radnje.
  6. Pratite pogreške i performanse nakon objave.

Za aplikacije koje ne mogu tolerirati zastoj mogu se koristiti postupni deploy, više instanci i usklađivanje verzija, ali složenost treba biti opravdana poslovnim zahtjevom.

Tajne i konfiguracija

Lozinke, API ključeve i SECRET_KEY nemojte spremati u javni repozitorij. Koristite siguran način distribucije konfiguracije i ograničite pristup. Provjerite da razvojni DEBUG nije uključen u produkciji te da se razvojni Django server ne koristi kao produkcijski servis.

Ako novi release uvodi drugačiji format podataka, dokumentirajte kompatibilnost s pozadinskim workerima, cron zadacima i vanjskim klijentima API-ja.

Nakon deploya posao nije gotov

Dobar proces uključuje praćenje 5xx pogrešaka, sporih zahtjeva, zdravlja baze i korisničkih prijava. Korisno je imati kratak zapis: tko je objavio verziju, što je promijenjeno, koji su testovi prošli i kako vratiti aplikaciju u rad.

Sigurna nadogradnja nije pojedina naredba na serveru. To je kontroliran ciklus pripreme, objave, provjere i oporavka.

Kada povrat stare verzije nije dovoljan

Django aplikacija dobiva novu funkciju i migracijom briše stupac koji se više ne koristi. Nakon objave otkrivena je pogreška u novom kodu. Vraćanje stare slike aplikacije možda neće pomoći jer stari kod očekuje stupac koji više ne postoji. Zato promjene baze treba planirati kompatibilno kroz više koraka ili imati stvarno provjeren postupak obnove podataka.

Za važne sustave korisno je najprije objaviti kod koji podržava staru i novu strukturu, zatim prenijeti podatke pa tek kasnije ukloniti zastarjeli dio. Takav pristup može biti sporiji u razvoju, ali smanjuje rizik pri povratu.

Česta pitanja

Može li deploy biti bez prekida? Ponekad da, uz odgovarajuću infrastrukturu i kompatibilne promjene. To nije automatsko svojstvo Djanga.

Je li snapshot dovoljan prije objave? Koristan je za neke promjene, ali odvojeni i provjereni backup i dalje je potreban.

Što testirati nakon deploya? Prijavu, najvažniji poslovni postupak, rad pozadinskih servisa, greške i performanse.

Kontrolna lista za siguran Django deploy

Svaka objava aplikacije mijenja sustav na kojem ljudi rade. Zato je korisno imati jedan kratki postupak koji se ponavlja za svaku verziju, neovisno o tome implementira li se projekt ručno, kroz CI/CD ili u kontejnerima. Posebno treba izdvojiti promjene sheme baze i konfiguracije, jer za njih rollback može biti složeniji.

  • Jesu li testovi prošli i postoje li opisane poslovne radnje koje treba ručno provjeriti nakon objave?
  • Jesu li migracije baze pregledane zbog mogućih dugih zaključavanja i nekompatibilnosti sa starom verzijom koda?
  • Postoji li svježa, provjerljiva kopija baze i privitaka te poznat postupak vraćanja nakon neuspjelog zahvata?
  • Jesu li tajne i konfiguracija odvojene od repozitorija, uz provjeru produkcijskih sigurnosnih postavki Djanga?
  • Mogu li stari i novi workeri ili aplikacijske instance kratko raditi zajedno bez pogrešnog tumačenja podataka?
  • Prate li se nakon objave pogreške, vrijeme odgovora, zdravlje baze i stvarna uspješnost važnih korisničkih postupaka?

Kad su odgovornosti i koraci jasni, objava nove verzije postaje rutinski, mjerljiv posao umjesto rizične improvizacije.

Povezani članci

Imate sličan izazov?

Recite nam što želite unaprijediti u svom poslovanju.

Kontaktirajte Datasoft