Sunteți pe pagina 1din 24

Curs 13

Microservicii
Lect. dr. Florina Covaci
Istoric
• Termenul microservicii a fost utilizat prima data in 2011 la workshop-
ul Software Architects
• In Martie 2012, James Lewis a prezentat cateva idei despre
microservicii
• La sfarsitul lui 2013, mai multe grupuri din industria IT au inceput sa
discute despre microservicii
• In 2014 microserviciile au devenit suficient de populare pentru a fi
utilizate pentru aplicatii complexe
Microserviciile
• Ce sunt ?
• Aplicatiile bazate pe microservicii sunt compuse din servicii de dimensiuni
reduse, versionate independent, scalabile care comunica intre ele folosind
protocoale standard

• De ce?
• Ofera o mai buna mentenanta in sisteme complexe de dimensiuni mari, prin
crearea de aplicatii care pot fi implementate independent avand cicluri de
viata autonome.
Atributele microserviciilor

• Functionalitate izolata: Trebuie sa aiba o singura functionalitate si sa


nu aiba dependinte de alte functionalitati

• Date izolate: Fiecare serviciu are propriile date

• Deployment independent
Arhitectura aplicatiilor bazate pe microservicii
• Dezvoltarea unei aplicatii care contine un set de servicii de dim.
reduse
• Aceste servicii sunt independente si ruleaza in propriile procese
• Microserviciile – o modalitate de a segrega serviciile astfel incat
acestea sa poata fi gestionate independent din punct de vedere al
designului, dezvoltarii si deployment-ului
• O arhitectura logica – nu este necesar sa se mapeze 1-1 cu o
arhitectura fizica – un microserviciu business implementat de un
singur web API – o regula prea rigida
• Un microservice trebuie
sa fie autonom prin a permite
codului sa fie independent versionat,
implementat si scalat
• Serviciile utilizeaza acelasi model de
date pentru ca Web API targheteaza
aceleasi date ca si serviciul de cautare
• In implementarea fizica functionalitatile se impart astfel incat
serviciile sa poata fi scalate dupa nevoie (ex. Web API foloseste de
obicei mai multe instante sau invers)
• Architectura logica nu trebuie intodeauna sa coincida cu arhitectura
fizica
Provocari
• 1. Delimitarea ariilor fiecarui microserviciu – identificarea datelor care
nu sunt cuplate si a contextelor diferite in care sunt utilizate
• 2. Crearea de interogari care utilizeaza date de la mai multe
microservicii
• API Gateway pattern– pentru agregarea simpla a datelor din microservicii
multiple - microserviciu de agregare
• Materialized view pattern – se genereaza in avans (pregatim date
denormalizate inainte ca interogarea efectiva sa se realizeze), un tabel read-
only cu date cate sunt detinute de mai multe servicii
• “Cold data” in baze de date centralizate – exportarea “Hot data” in baze de
date centralizate ca si “Cold data” – doar pentru raportare – nu in timp real
Provocari (II)
• 3. Consistenta intre mai multe microservicii
• Disponibilitate vs. consistenta
• Cele mai multe microservicii
necesita mai mult disponbilitate si
Scalabiliate decat consistenta
• Mecanisme de asigurare a
consistentei prin comunicare asin-
crona
Provocari (III)
• 4. Design-ul mecanismului de comunicare – nivelul de cuplare,
impacteaza sistemul la failure
• A nu se crea lanturi de apeluri HTTP intre microservicii
• Blocare si performanta scazuta – cererea HTTP nu primeste raspuns decat
dupa ce toate apelurile interne HTTP sunt finalizate
• Cuplarea microserviicilor prin HTTP – nu ar trebui sa fie cuplate; autonomia
microserviciului devine imposibila
• Failure la unul dintre microservicii – sistemul ar trebui sa functioneze in
continuare cu un partial failure

Comunicarea intre microservicii – prin mesaje asincrone si comunicare


bazata pe evenimente
API gateway pattern
• Comunicare directa client – microserviciu – aplicatie de dimensiuni
reduse
Provocari – aplicatii complexe
• 1. Minimizarea numarului de cereri si reducerea “chatty”
communication la multiple microservicii – UI interactioneaza cu mai
multe microservicii – roundtrip la server => creste latenta,
raspunsurile ar fi ideal sa fie agregate pe partea de server
2. Gestionarea aspectelor legate de securitate – cum ar fi autorizarea –
pentru fiecare serviciu este un efort considerabil
3.Aplicatia client este cuplata la microservicii, aceasta trebuie sa
cunoasca cum este impartita in microservicii aria de utilizare; noi
microservicii, aplicatia client trebuie actualizata frecvent
API Gateway pattern
• Crearea unui serviciu care ofera un singur punct de intrare pentru un
grup de microservicii
API gateway
• Ruteaza cereri de la client catre microservicii
• Realizeaza agregarea - cerere de la aplicatia client care targeteaza mai
multe microservicii interne – API gateway imparte cererea si o trimite
la microservicii, iar apoi agrega rezultatele si le trimite inapoi la
aplicatia client)
• (ex. O pagina care afiseaza date de la mai multe microservicii)
• Gestioneaza autentificarea si autorizarea
• Realizeaza load-balancing
Identificarea domeniului serviciului
• Marimea potrivita
• Granitele de separare de alte servicii

• Aspecte – capabilitatea de business


-capabilitatea tehnica
Capabilitatea de business
• Fiecare microserviciu trebuie sa implementeze exact o capabilitate de
business – contribuie la scopul afacerii

• Ex. Un microserviciu Shopping cart trebuie sa gestioneze item-urile


din cosul de cumparaturi al utilizatorului
Functionalitati:
Scanarea produselor si adagarea lor
pe factura
Scanare produse pentru a verifica
pretul
Pregatirea facturii
Plata cu cardul
Inregistrarea platii
Acceptarea de cupoane de reduceri
Printarea chitantei
Trimiterea electronica a bonului la
client
Cautare produs in catalog
Expunerea proceselor
orientate client ca si API-
uri care pot fi apelate de
alte microservicii

Implementarea usage-
tracking printr-un
mechanism de gestionare
evenimente
Capabilitati tehnice
• Nu contribuie direct la scopul de business, dar asigura suportul
pentru alte microservicii – integrarea cu alte sisteme, programarea de
evenimente care se produce in viitor
• Un microserviciu trebuie sa fie inlocuibil- capabilitatea de business si
cea tehnica-> comlexitate si marime crescuta
• Capabilitatea tehnica se implementeaza in alt microserviciu
Trimiterea de notificari pentru clientii inregistrati prin email, SMS sau
aplicatia mobila

S-ar putea să vă placă și