Migracija sustava u Azure cloud

O PROJEKTU

Klijent, lider u sektoru upravljanja vanjskom radnom snagom, odlučio je migrirati svoje aplikacije s Kubernetsa na Azure Cloud s obzirom da se održavanje i razvoj na postojećoj infrastrukturi pokazalo neodrživo u odnosu na druga rješenja. Cilj je ujedno prestati koristiti Kubernetes clustere u što skorijoj budućnosti, a generalno gledajući radi se o migraciji poslovanja u cloud, odnosno transformaciji monolita u mikroservisnu arhitekturu u Azure-u na kojoj će se odvijati sav novi razvoj. Prema analizama klijenta, inicijativa migracije ključnih komponenti, trebala bi rezultirati s eksponencijalnim financijskim rastom.

Od svih prednosti Azure Clouda, za klijenta je najvažnija prednost vezana za globalnu distribuciju, sigurnost, praćenje kvalitete tehničkih karakteristika (performans), te kontrole troškova. Pored toga, korištenje Azure Clouda klijentu će omogućiti brži razvoj novih funkcionalnosti.

PROBLEM

Najveći izazov je bio migrirati postojeću MongoDB u CosmosDB, jer pored korištenja novog programskog koda, bilo je potrebno i prebaciti sve trenutno spremljene podatke iz MongoDB u Cosmos DB. Razlog tome je bila odluka prijelaza sa Mongo ORM-a (mongoose) na Cosmos SQL API, prilikom čega je bilo potrebno promijeniti svaku interakciju na Repository layer-u. Također, svi postojeći podaci su morali biti migrirani u novu CosmosDB na Azure Cloud uz minimalan prekid rada aplikacije. U svrhu što kvalitetnije migracije na Azure cloud, bilo je potrebno trenutno korištene servise od strane klijenta zamijeniti s Azure native servisima kako bi korištenje aplikacije u produkciji bilo što efikasnije.

RJEŠENJE

Jedna od ključnih komponenti za migraciju pripala je inženjerima GlobalLogic-a. Sam proces migracije je izvršen u koracima na način da se postojeća aplikacija koja se trenutno koristi u produkciji, zamjeni s pojedinim dijelovima koji su migrirani na Azure Cloud. Na taj način se za vrijeme migracije aplikacija je radila u hibridnom modu. Za cijelo vrijeme migracije pojedini dijelovi aplikacije su se izvršavali s Kubernetsa, a pojedini s Azure Cloud, što je bio dodatan izazov, jer krajnji korisnici nisu smjeli osjetiti nikakvu poteškoću ili promjenu u radu same aplikacije u produkciji.

Zamjena RabbitMQ sa Service Bus-om:

Proces zamjene s tehnološke strane zahtjeva intervenciju u samom programskom kodu i osim programerskog znanja, zahtjeva i analizu planiranog broja izmijenjenih poruka. Argument za zadržavanje RabbitMQ servisa na Azure cloudu može biti u trošku potrebnom za preinaku samog programskog koda I u tom slučaju bi klijent vjerojatno odlučio zadržati RabbitMQ kao servis unutar virtualne mašine na Azure Cloudu. Međutim ekonomska analiza pokazuje da je financijski isplativije koristiti Service Bus ukoliko se planira imati minimalno 6 tisuća poruka u minuti što je u većim enterprise sustavima sasvim realno, pa je iz tog razloga klijent odlučio zamjeniti RabbitMQ sa Service Busom.

Zamjena Elasticserarch s Azure Cognitive Search:

Kod odluke o zamjeni Elasticsearcha, presudna je bila potreba da su podaci spremljeni na serveru treće strane što u slučaju privatnosti podataka krajnjih korisnika od klijenta nije bilo prihvatljivo. Iz tog razloga se klijent odlučio na zamjenu Elasticsearch-a s Azure Cognitive Search servisom koji još uz to pruža neke prednosti u odnosu na Elasticsearch poput većeg izbora jezika I integracija s Cosmos DB.

Zamjena MongoDB s Cosmos DB:

Iako je moguće koristiti MongoDb na Azure Cloudu, klijent se odlučio na zamjenu s Cosmos DB-om, jer Cosmos DB osim što osigurava jednostavnije korištenje i praćenje rada te kontrolu troškova na Azure cloudu, krajnjim korisnicima osigurava dostupnost usluge po cijelom svijetu te u slučaju europskog tržišta omogućuje pridržavanje GDPR zahtjeva. Klijent planira u skorijoj budućnosti svoje poslovanje s USA tržišta proširiti po cijelom svijetu, a prvenstveno na europsko tržište, te je iz razloga da se jednostavnim prebacivanjem podataka prema zahtjevu krajnjih korisnika u pojedine EU regije, omogući strogo pridržavanje GDPR zahtjeva na spremanje podataka krajnjih korisnika, bilo od presudne važnosti za odluku o korištenju Cosmos DB.

Zamjena LDAP s Auth0:

Za rješenje autentikacije I autorizacije, klijent se odlučio za implementaciju auth0 u svim svojim aplikacijama, pa smo u sklopu migracije na Azure Cloud trebali zamijeniti trenutno LDAP rješenje s Auth0. Osim što je Auth0 trenutno najbolje rješenja za autentikaciju I autorizaciju na tržištu, ono omogućava I jednostavno spajanje na Azure Active Directory koji krajnjim korisnicima osigurava pristup različitim aplikacijama od klijenta uz pomoć jedinstvenog Microsoft računa (SSO-Single Sign On) umjesto s različitim kombinacijama korisničkog računa/ lozinke za svaku aplikaciju posebno.

Zamjena Nginx s Azure Frontdoor:

S obzirom da klijent planira u skoroj budućnosti svoje poslovanje sa US tržišta proširiti na cijeli svijet, trebalo je osigurati globalan I skalabilan web servis kojim se na jednostavan način osigurava I kontrolira usluga njegovih aplikacija po cijelom svijetu. Iz tog razloga se klijent odlučio na zamjenu API gateway servisa Nginx na Azure Frontdoor.

REZULTATI/ISHODI

Na kraju migracije klijentu je omogućeno da cjelokupnu kontrolu i monitoring korištenja aplikacije može obavljati pomoću Azure kontrolne ploče i pored toga su svi podaci kao i programski kod spremljeni unutar Azure clouda na lokacijama u svijetu prema potrebama klijenta. Na taj način je klijentu omogućeno da pruži najkvalitetniju uslugu čuvanja podataka prema zahtjevima svojih krajnjih korisnika.

                      Opisani projekt ti zvuči izazovno? Želiš se pridružiti našem timu?
                      Provjeri trenutačno otvorena radna mjesta na stranici Karijere