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.