Moderni standardi za razvoj softvera i potreba za sve boljim korisničkim iskustvom zahtevaju konstantan oprez i budnost developera, kao i redovno apdejtovanje projekta. Aktivacija i integracija sada su kontinuiran proces jer je ponekada potrebno svakodnevno reagovanje i slanje apdejta.
Zato je veoma važno izabrati i koristiti pravu tehniku aktivacije.
Inženjeri konstantno smišljaju nove i različite tipove aktivacije kako bi sve promene i apdejti prošli što mirnije i bez većih turbulencija po projekat,
U zavisnosti od projekta, potreba i resursa, developeri na rapsolaganju imaju nekoliko tehnika, a mi ćemo probati da vam predstavimo neke od njih, kako biste odabrali onu najbolju za vaš projekat.
Recreate deployment
Ova strategija podrazumeva gašenje verzije A i aktivaciju verzije B nakon toga. Međutim, zahteva potpuni prestanak rada na određeno vreme koje zavisi od ponovnog bootovanja nove verzije aplikacije.
Dobre strane:
- Laka postavka, developeri u svakom trenutku mogu da prate workflow
- Zbog toga što u pitanju nije parallena aktivacija, baza je uvek organizovana
Loše strane
- Visok stepen negativnog uticanja na korisnika zbog prestanka rada usled gašenja postojeće i pokretanja nove verzije
Rolling deployment
Primenom ove strategije, developeri mogu da aplouduju više verzija aplikacije kako bi menjali originalnu.
Dobre strane
- Moguća je kontinuirana promena dok ja aplikacija aktivna
- Ne dolazi do gašenja ili prestanaka u radu
Loše strane
- Veoma je važno konstantno pratiti algoritam koji šalje korisnikje na stare i apdejtovane verzije kako ne bi došlo do problema sa kompatibilnošću između verzija
Blue/Green deployment
Ovde je u pitanju kombinovani model razvoja aplikacije. Developer mogu da koriste dve verzije – postojeća je plava, a apdejtovana verzija je zelena. Takođe, mogu da biraju koja je aktivna, a koja je u test modu.
Tehnički, obe verzije su aktivne, ali samo je jedna javna, najčešće plava. Kada developeri završe testiranje nove verzije aplikacije, mogu da redirektuju saobraćaj na zelenu.
Dobre strane
- Developeri mogu da sačuvaju plavu verziju i uvek se vrate na nju ili iskoriste prethodnu funkcionalnost za budući apdejt.
- Mogućnost prelaska sa jedne na drugu verziju i redirekcija saobraćaja smanjuju zastoj u radu.
- Ako dođe do problema prilikom aktivacije zelene verzije, developeri uvek mogu da se vrate na plavu, a zbog toga što su potpuno odvojene, ne postoji rizik da će jedna verzija negativno uticati na drugu.
Loše strane
- Uprkos minimalnim zastojima u radu, developeri moraju da se postaraju da koriste kompatibilne data formate.
- Vrlo često je potrebno obe verzije držati aktivnim, što povećava prostor za skladištenje, potrebu za jačom procesorskom snagom i cenu potrebnog hardvera.
Canary deployment
Canary podrazumeva objavljivnaje jedne po jedne nove funkcije umesto kompletno apdejtovane nove verzije. Developeri prethodnu verziju drže aktivnom i upoređuju performanse apdejtovanih delova u odnosu na original.
Celokupan proces izgleda ovako:
- Developeri aplouduju novu verziju na server (verzija B);
- Najveći deo korisnika i dalje se šalje na A verziju, dok samo malo deo ima interakciju sa B verzijom. Na ovaj način developeri mogu da prate performanse i prave unapređenja na novoj veziji;
- Nakon pravljenja svih potrebnih promena na B verziji, developeri počinju da većinu saobraćaja usmeravaju ka novoj verziji i nastavljaju da prate performanse;
- Kada B verzija postane dovoljno stabilna, developeri mogu da iseku verziju A u potpunosti i sav saobraćaj preusmere ka apdejtovanoj bazi.
Važno je napomenuti da za uspeh celog developmenta, obe verzije moraju da budu aktivne istovremeno i u istim uslovima kako bi analiza bila što objektivnija.
Dobre strane
- Zahvaljujući testiranju perofrmanse obe verzije, developeri mogu da smanje vreme aktivacije i ljudima pruže bolje korisničko iskustvo.
Loše strane
- Kompletan metod zahteva dosta vremena jer se testiranje i aktivacija vrđe u nekoliko faza. Pritom, zbog celokupnog procesa, neće svi korisnici biti u mogućnosti da odmah uživaju u unapređenjima.
Shadow deployment
Tokom ove vrste aktivacija, obe verzije su aktivne u isto vreme. Verzija A, starija, je inicijalno predstavlja korisniku i onda prima podatke. Verzija B, novija, prima sadržaj iz verzije A. Na ovaj način se smanjuje rizik od pogrešne redirekcije i loših performansi jer se određene operacije vuku iz A verzije. U slučaju da B verzija prestane da radi, A verzija može da uskoči.
Međutim, ovaj način rada produžava vreme reagovanja, zbog čega je potrebno testirati komunikaciju između verzija kako bi se ono smanjilo.
Kako se ova operacija izvodi:
- Developeri pišu funkcije koje šalju input ka obe verzije aplikacije.
- U ovoj fazi, developeri se staraju da aplikacija nikada ne šalje isti zahtev dva puta, jer će u suprotnom korisnici morati, na primer, da unose svoje podatke za plaćanje dva puta.
- U krajnjoj instanci, timovi obraćaju pažnju na sve moguće probleme, porede performanse obe verzije i proveravaju da li je druga verzija tačno primila input prve.
Dobe strane
- Zahvaljujući korisnicima koji sve obavljaju u realnom vremenu i testiranju u realnom vremenu, developeri lakše mogu da postignu veću stabilnost. Ako nova verzija radi lošije, starija će je podržati.
Loše strane
- Sve operacije se dupliraju jer obe verzije rade u isto vreme i samim je potrebno obezbediti veću procesorsku snagu, prostor i servere.
- Potrebno je i više vremena kako bi se pravilno postavile obe verzije, a krajnji rezultat nikada neće biti 100 odsto tačan jer i dalje postoji mešanje originalne verzije u sve procese.
Šta izabrati?
Svaka od ovih strategija ima svoje dobre i loše strane, pa je na samim programerima da odaberu onu čije prednosti nadmašuju mane.
Postoje i određene tehnike koje vam mogu pomoći da izvučete maksimum iz aktivacije koju ste izabrali, pa čak i da neutrališete negativne aspekte koji se uz njih vezuju.
Primera radi, zahvaljujući kubernetes sistemu, neutrališe se loša strana Recreate deploymenta jer se pravi spoj blue/green i recreate aktivacije i tako ističu samo prednosti.
Samim tim, postoje načini da se utiče na loše strane određenih aktivacija, pa čak i da se one potpuno neutrališu.
Važno je da odaberete najbolji deplyoment tip za vaš projekat, ali to nikako ne znači da ne bi trebalo da eksperimentišete sa njim i probate da neutrališete negativne strane za maksimalni učinak i što bezbolniju aktivaciju.