Professional Documents
Culture Documents
MIKROSERVISNOJ ARHITEKTURI
DEKOMPOZICIJA PO PODDOMENIMA
• Kontekst u kome se koristi - azvoj kompleksne aplikacije uz opredeljenje da se ona razvije na
mikroservisnoj arhitekturi. Ovo podrazumevas strukturu aplikacije u formi slabo zavisnih servisa.
• Problem - kako dekomponovati sistem u servisne komponente?
• Faktori koji utiču na izbor rešenja
• Arhitektura mora biti stabilna. • Servisi treba da su slabo povezani - svaki servis
• Servisi moraju biti kohezivni. Jedan servis može da vidljiv je samo preko svog API-ja koji skriva
implementira mali skup međusobno povezanhi unutrašnju implementaciju.
funkcija. • Servis treba da je moguće nezavisno testirati.
• Servisi treba da su u skladu sa Common Closure • Treba da je dovoljno mali da zadovolji preporuku o
Principle - stvari čije izmene su međuzavisne “timu za dve pizze”.
(menjaju se zajedno) treba i da su upakovane u • Svaki tim koji je zadužen za servis mora biti
zajednički modul. autonoman (treba da može da razvija i deploye-uje
servis nezavisno od drugih timova).
ŠABLONI ZA DEKOMPOZICIJU SISTEMA U SERVISE
DEKOMPOZICIJA PO PODDOMENIMA
• Rešenje
• Definisati servise u skladu sa DDD (domain driven design) poddomenima. DDD definiše
domen - prostor problema koje aplikacija rešava. Domen se deli na poddomene, pri čemu
svaki od poddomena odgovara određenom delu poslovanja - rešava uži problem.
• Poddomene možemo klasifikovati kao:
• osnovni (core) - u ovom domenu se obavljaju ključne poslovne operacije (one bez kojih
poslovanje ne donosi nikakvu korist).
• pomoćni - u ovom domenu se obavljaju poslovne aktivnosti koje potpomažu osnovne
operacije, ali nisu ključne (mogu se i outsource-ovati).
• opšti (generički) - u ovom domenu obavljaju se poslovne aktivnosti koje su opšte - idealno
za podršku ovim aktivnostima koristiti neko generičko rešenje.
ŠABLONI ZA DEKOMPOZICIJU SISTEMA U SERVISE
DEKOMPOZICIJA PO PODDOMENIMA
• Primer - domen poslovanja online prodavnice može se
podeliti na poddmene:
održavanje kataloga proizvoda, upravljanje zalihama,
upravljanje porudžbinama, upravljanje isporukama
DEKOMPOZICIJA PO PODDOMENIMA
• Rezultat primene
• Stabilna arhitektura sistema jer su poslovne funkcionalnosti relativno slabo promenljive.
• Razvojni timovi su višefunkcionalni, autonomni i organizovani tako da isporuče određenu poslovnu
funkcionalnost (više nego što su orijentisani samo na tehničke detalje).
• Servisi razdvojeni na ovaj način su interno kohezivni, i međusobno slabo zavisni.
• Potenijalni problemi
• Kako tačno uočiti poddomene? - Zahteva se razumevanje poslovnog modela, a često i
organizacione strukture, poslovnih procesa organizacije itd.
Dobre polazne tačke za identifikaciju su:
• organizaciona struktura
• domenski model visokog nivoa
ŠABLONI ZA DEKOMPOZICIJU SISTEMA U SERVISE
• Timovi treba da su mali (5-9 ljudi). • Fino granulirani servisi poboljšavaju održivost, dostupnost
• Tim treba da je autonoman i slabo zavisan od drugih i mogućnost testiranja koda
timova. • Ali fino granuliranje servisa povećava kompleksnost
• Količina i složenost koda ne sme da prevazilazi kapacitet celokupnog rešenja
tima
ŠABLONI ZA DEKOMPOZICIJU SISTEMA U SERVISE
STRANGLER APPLICATION
• Kontekst u kome se koristi - Postoji monolitna aplikacija, koja zahteva dalji razvoj
funkcionalnosti koji treba usmeriti na mikroservisnu arhitekturu.
• Problem - kako obezbediti tranziciju kompleksne monolitne aplikacija na novu mikroservisnu
arhitekturu i obezbediti prelazak na novije tehnologije?
• Faktori koji utiču na izbor ovog rešenja:
• aplikacija treba da koristi strukturu web aplikacija,
• individualni URI-ji se lako mapiraju na funkcionalnosti aplikacije,
• te funkcionalnosti se lako zamenjuju mirkoservisnom implementacijom koja se odaziva na
isti URL,
• moguće je sprovesti fazni prelazak: transformacija, koegzistencija parcijalno novog i starog
rešenja, eliminacija starog rešenja.
ŠABLONI ZA REFAKTORING MONOLITNE U MIKROSERVISNU APLIKACIJU
STRANGLER APPLICATION
• Rešenje - Aplikacija se sastoji od dva tipa
servisa, servisa koji implementiraju
funkcionalnost koja je već postojala u
prethodnoj monolitnoj aplikaciji, i servisa koji
implementiraju nove funkcionalnosti.
• Ovi drugi servisi su “driving force” koja
dokazuje validnost prelaska na novu
arhitekturu. Tokom vremena ostaci monolitne
aplikacije se gase.
• Postoji nekoliko nalčina da se obezbedi privatnost podataka. Za relacione baze moguće su sledeće opcije:
• Private-tables-per-service – svaki servis je vlasnik određenog skupa tabela i ima ekskluzivno pravo
pristupa tim tabelama.
• Schema-per-service – svaki servis je vlasnik jedne šeme podatka i jedini joj ima pristup.
• Database-server-per-service – svaki servis koristi sopstveni server baze podataka.
slika preuzeta sa: https://microservices.io/patterns/data/database-per-service.html
ŠABLONI ZA UPRAVLJANJE PODACIMA