Uz odgovarajuću deployment strategiju, kompanije mogu da smanje rizik, greške i negativni uticaj na korisničko iskustvo prilikom lansiranja novih verzija aplikacija. U ovom članku predstavićemo tri popularna enterprise deployment pristupa – Rolling, Blue/Green i Canary deployment – koje možete možete da razmotrite vodeći se zahtevima svoje aplikacije, ciljevima i dostupnim resursima.
Rolling deployment
Kada je nova verzija (update) aplikacije spremna za puštanje u rad, IT timovi koriste takozvani “rolling pattern” za njenu postepenu aktivaciju. Drugim rečima, nova verzija će biti aktivirana na pojedinim serverima ili instancama dok će drugi hostovati staru. Ukoliko se ne uoče problemi u radu nove verzije aplikacije, deployment se nastavlja i update se aktivira na svim serverima. Ako, međutim, problema bude, operativni tim može da uradi redirekciju saobraćaja ka serverima koji hostuju staru verziju i odlože lansiranje dok se ne isprave greške.
Rolling deployment je strategija za postepenu (faznu) zamenu prethodnih verzija aplikacije novim verzijama. Korišćenje ovog pristupa podrazumeva da se održava jedno produkciono okruženje sa više servera ili cloud instanci za distribuiranu aplikaciju.
Prednosti
Ključna prednost rolling deployment-a je mogućnost stalnih provera (health checks) tokom lansiranja update-a. Na taj način se smanjuje rizik, jer se lako može vratiti stara verzija aplikacija (roll back) u slučaju problema. Greške i bagovi koji se pojave tokom lansiranja neće uticati na celokupno korisničko iskustvo, već samo na frakciju korisnika koji su pristupili novoj verziji, u kratkom periodu (dok se ne uradi roll back).
Mane
Verifikacija deployment-a pri svakoj inkrementalnoj promeni čini ovaj pristup sporim. Budući da se nove i ažurirane verzije koda nalaze u istom okruženju, korisnici će imati pristup različitim verzijama aplikacije, što nije idealan scenario ukoliko su implementirane značajne promene. Nekonzistentno iskustvo može negativno da utiče na međutimsku saradnju i uveća kompleksnost pri pružanju tehničke podrške (suportni timovi moraju da poznaju obe verzije i isprate kojoj korisnik pristupa).
Blue/Green deployment
Za razliku od rolling deployment pristupa, ova strategija koristi dva identična okruženja: plavo (staging) i zeleno (production) okruženje sa različitim verzijama aplikacije ili servisa. Kada je update u potpunosti spreman, saobraćaj se preusmerava sa jedne infrastrukture na drugu. Nekadašnje staging okruženje postaje produkciono dok se inicijalno produkciono okruženje gasi.
Prednosti
Blue/Green deployment omogućava da se nova verzija aplikacije testira u produkcionom okruženju pre nego što postane javno dostupna. Pored toga, omogućava da se svi korisnici simultano prebace na novu verziju. Ovaj pristup, za razliku od postepenog, odgovara servisima čiji svaki update podrazumeva velike izmene, poput SaaS aplikacija koje brzo evoluiraju.
Mane
Veliki troškovi infrastrukture su glavna mana Blue/Green pristupa. Replikacija produkcionog okruženja je kompleksna i finansijski zahtevna, naročito kada se koriste mikroservisi. U poređenju sa rolling deployment-om, Blue/Green strategija podrazumeva duplo veće investicije u IT infrastrukturu.
Canary deployment
Poput rolling deployment-a, ovaj pristup podrazumeva da će nova verzija aplikacija biti dostupna nekim korisnicima pre nego drugim, ali uz značajnu razliku: canary deployment targetira određene korisnike koji dobijaju pristup ažuriranoj verziji. Celokupna infrastruktura u targetiranoj verziji ažurira se fazno (npr. 2%, 25%, 75%, 100%).
Mnoge kompanije lansiraju canary verzije proizvoda sa ciljem da tehnički obrazovani ili napredni korisnici (power users) isprobaju nove verzije njihovih aplikacija. Primera radi, Google nudi canary verziju Chrome pretraživača za developere i rane adaptere.
Prednosti
Canary deployment omogućava kompanijama da u ranoj fazi dobiju povratne informacijie od male grupe korisnika i iskoriste ih da eliminišu propuste u novoj verziji pre nego što postane dostupna svima. Ovaj pristup može da se iskoristi za A/B testiranje – prezentovanje dve različite verzije korisnicima sa ciljem da se utvrdi koja je od njih bolje prihvaćena.
Za razliku od Blue/Green šablona, Canary deployment ne iziskuje dva produkciona okruženja, te je samim tim isplativiji. Dodatna prednost je mogućnost jednostavnog rollback-a (vraćanja stare verzije aplikacije) u slučaju problema.
Mane
Izazovi Canary pristupa su kompleksnost (upravljanje dodatnim kodom, servisima i komponentama tokom lansiranja) kao i mogućnost grešaka prilikom manuelnog deployment-a. Automatizovan proces je ključan za čestu primenu ove strategije, a integracija Canary deployment-a u postojeći CI/CDI pipeline može da bude vremenski zahtevna.
Koji deployment pristup izabrati?
Izbor deployment pristupa zavisi od tipa vaše aplikacije i target okruženja, kao i drugih faktora kao što su finansijska ograničenja. Ako aplikacija nije dovoljno testirana ili postoje nedoumice oko stabilnosti softvera, canary ili A/B testiranje mogu da budu dobra strategija. Blue/Green deployment smanjuje rizik i prekide u radu aplikacije, ali zahteva duplo više resursa. U praksi je uobičajena i kombinacija različitih strategija poput multi-service canary deployment-a.
Za kompanije je važno da sagledaju sve faktore, uključujući i prirodu softvera (da li je reč o mission-critical aplikaciji) i uporede sa odgovarajućom deployment strategijom usvoje i dobre prakse poput kontinuirane integracije (continuous integration) i kontinuirane isporuke (continuous delivery), korišećenja alata za upravljanje konfiguracijama i automatizacije.
Više o tome možete da pročitate OVDE.