Implementacija internih Azure servisa kao podrška u implementaciji strateških funkcionalnosti klijentskog VMS rješenja

O PROJEKTU

Klijent je jedan od vodećih pružatelja SaaS rješenja u području upravljanja privremenom radnom snagom. Njihovo rješenje pripada u kategoriju Vendor Management sustava (eng. Vendor Management System), koje kompanijama omogućuje visok stupanj automatizacije, fleksibilnost i jednostavnost u pronalaženju i zaposlenju prikladne privremene radne snage. Korištenjem njihovog rješenja, kompanijama koje imaju potrebu za privremenom radnom snagom (konzultantima) se eliminira potreba za klasičnim procesima zapošljavanja čime se kompanijama uvelike smanjuju troškovi i vremenski ciklusi potrebni do zaposlenja kvalitetnog privremenog kadra.

Kako bi odgovorio na rješenja konkurenata, na tehnološke izazove u domeni privremene radne snage i konstantno rastuće zahtjeve od strane svojih klijenata, Klijent je odlučio implementirati određene interne servise temeljene na Azure cloud mikroservisnoj tehnologiji u svrhu podrške daljnjem dizajnu i razvoju budućih strateških funkcionalnosti svojeg SaaS rješenja, a kako bi u konačnici realizirali dugoročni strateški cilj - transformaciju SaaS rješenja iz postojeće monolitne arhitekture u cloud mikroservisnu arhitekturu.

PROBLEM

  • Trenutni troškovi razvoja novih funkcionalnosti i održavanja postojećih funkcionalnosti SaaS rješenja na postojećoj arhitekturi su visoki
  • “Deploy” novih funkcionalnosti na postojećoj arhitekturi je vremenski zahtjevno i kompleksno
  • Produkcijski bugovi registrirani od strane korisnika sustava su rezultat inicijalne implementacije funkcionalnosti u prošlosti, čime se produkcijski bugovi rješavaju privremenim kratkoročnim rješenjima
  • Nove funkcionalnosti je teže pružiti klijentima jer promjene za jednog klijenta često utječu na više klijenata zbog takve monolitne arhitekture

RJEŠENJE I TEHNOLOGIJA

Strateško rješenje:

  • Kako bi klijent mogao pružiti nove funkcionalnosti unutar svojeg SaaS rješenja svojim klijentima koje bi bile temeljene na modernoj mikroservisnoj tehnologiji, potrebno je transformirati postojeću monolitnu arhitekturu za koje je potrebno i vrijeme i značajno financijsko ulaganje
  • kako bi se ostvario dugoročni strateški cilj prelaska sa monolitnog rješenja na moderno cloud rješenje, klijent je odredio ključne strateške smjernice odnosno preduvjete prema kojima se postojeća arhitektura želi dekomponirati na više funkcionalnih domena unutar SaaS rješenja na mikroservise gdje bi svaka od njih bila odgovorna i zaslužna dijeliti i sinkronizirati podatke koje su potrebne drugoj/drugima domenama prema servisu rola i prava unutar tih domena
  • Podići servise u Azure cloudu koji će omogućiti skalabilnost i pravovremenu sinkronizaciju podataka između različitih domena kojima je potrebna određena struktura podataka za nesmetano funkcioniranje sustava
  • Omogućiti monitoring nad internim servisima u Azure cloudu koji će brzo I kvalitetno informirati o određenim zastojima servisa kako bi interni korisnici bili pravovremeno obavješteni i odradili korekciju kod zastoja/alerta
  • Redundantnost značajke internih servisa
  • Omogućavanje autentikacijskog 3rd party cloud rješenja kojim se postiže visok stupanj sigurnosti i različite metode za autentikaciju korisnika sustava između domena

 

Taktičko rješenje – servisi

Tribe cloud infrastruktura

Jedan od zadataka tima je bio podići cjelokupnu hosting infrastrukturu u Azure cloud-u. Infrastruktura je organizirana po principu dijeljenja između vise timova koji surađuju na razini plemena (tribe). Pa tako resursi kao sto su Cosmos DB Account, App Service Plans, VNet, Front Door, Application Insights i slični su setupirani i konfigurirani za više timova. Dok timovi svoje specifične resurse kao sto su Web App, Function, Storage account i slično dodaju sami. Cilj ovakve organizacije je olakšati timovima podizanje infrastrukture i smanjiti ukupne troškove.

Pri kreiranju infrastrukture koristi se princip Infrastructure as a code (eng. IaaC) koji nalaze da se sama definicije infrastrukture kreira i kontrolira kroz kod. Tim je koristio jezik Bicep koji je nativno rješenje za definiranje infrastrukture u Microsoft Azure cloud-u. Ovaj pristup je dodatno timu omogućio da implementira i automatsko deployanje infrastrukture pute Azure DevOps Pipeline-a.

Dodatni bitan aspekt cijele infrastrukture je bila sigurnost. Resursi su stavljeni u Azure VNet te su na taj način izolirani u privatnu mrežu. Također se za pristup određenim resursima koristi Azure Private Endpoints mehanizam koji omogućuje dodatnu izolaciju pristupa. Svi secreti se postavljaju automatski kroz deployment te se na taj način izbjegava mogućnost ljudske greške. Jedna od preostalih stvari u ovom području je preći na secretless način rada.

 

Account i Identity servisi

Dvije komponente koje su dio strateških poboljšanja sustava klijenta su Account i Identity servisi. Cilj im je omogućiti bolji uvid i kontrolu u organizacije i korisnike klijentskih aplikacija. Tim je u sklopu toga implementirao prvu verziju Azure infrastrukture i same implementacije servisa.

Prva funkcionalnost koju nudi Account servis je praćenje postojećih instanci proizvoda koje klijenti koriste te davanje informacija o njima. Za skupljanje podataka o postojećim instancama koristi se serverless princip. Svaka instanca šalje evente (događaje) na Azure Event Grid na koje zatim Azure Function aplikacija kao dio Account servisa reagira i pohranjuje potrebne podatke u Cosmos DB bazu. Dodatno postoji REST API aplikacija hostana u Azure App Services Web Appu koja omogućuje pristup tim podatcima ostalim servisima. Daljnji razvoj ovog servisa ide u smjeru kontrole instanci aplikacija i njihovo automatsko povezivanje sa sigurnosnim servisima.

Identity servis koristi iste tehničke principe i tehnologije samo u domeni samih korisnika. Prva verzija servisa prati korisnike koji se logiraju u sustav i gradi bazi pristupa korisnika prema instancama aplikacija. Daljnji razvoj je implementacija standardne IAM (eng. Identity and Access Management) funkcionalnosti ali prilagođene specifičnoj klijentskoj poslovnoj domeni.

 

Tehnologija u projektu:

  • Microsoft Azure cloud infrastruktura, Bicep
  • Azure resursi:
    • App services
    • Functions
    • Cosmos DB
    • Front Door
    • VNet
    • Application Insights
    • Key Vault
  • Auth0 autentikacijsko cloud rješenje
  • Performance testovi koristeći JMeter i BlazeMeter
  • C# unit i service testovi koristeći xUnit i Moq
  • SonarCloud za code coverage i statičku analizu koda
  • Azure DevOps Pipelines for CI/CD
    • Pipeline as a code principle

TIM

U projektu sudjeluje razvojni tim iz Globallogic Hrvatska. Sastav tima čine Softver inženjeri, QA inženjeri, Technical lead, Scrum master i Product owner. Isporuka funkcionalnosti temelji se na Scrum metodologiji, a u skladu sa Scrum ceremonijama. Tim koristi udaljen pristup klijentskoj infrastrukturi i softverskim alatima koji su potrebni za komunikaciju i razvoj.

Udaljena suradnja i interakcija između hrvatskog tima i timova na klijentskoj strani koji rade na istim feature-ima je organizirana kroz samorganizirajuće timove unutar plemena (eng. Tribe). U periodu od godine i pol dana ostvarena je odlična suradnja sa klijentskim timovima i značajan napredak u realizaciji internih cloud servisa, čime je hrvatski tim zaslužio priznanje jednog od “high performing” razvojnih timova u klijentskoj organizaciji.

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

  • URL copied!