dezvoltarea sistemelor webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / dezvoltarea...
TRANSCRIPT
![Page 1: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/1.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/Dezvoltarea sistemelor Web
servicii Web
◳micro-servicii serverless GraphQL
Dr. Sabin Corneliu Buraga – profs.info.uaic.ro/~busaco/
![Page 2: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/2.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
„Toate erau laolaltă – după aceea, a venit minteași le-a pus în ordine.”
Anaxagoras
![Page 3: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/3.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
dezvoltarea aplicațiilor Web
Serviciu Web
software – utilizat la distanță de alte aplicații/servicii –oferind o funcționalitate specifică
implementarea sa nu trebuie cunoscută de programatorul ce invocă serviciul
a se revedea prelegerile anterioare
![Page 4: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/4.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Există alternative la servicii Web?
![Page 5: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/5.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
micro-servicii
Implementează o funcționalitate specifică, oferită la nivel de unic proces
self-contained system
componentă la nivel de backend dezvoltată cu scopul de a fi înlocuită, nu de a fi reutilizată
![Page 6: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/6.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
smalleach running in its own process
lightweight communication mechanisms (usual, HTTP)built around business capabilities
independently deployableminimum of centralized management
may be written in different programming languagesmay use different data storage mechanisms
caracteristici ale micro-serviciilor conformJames Lewis & Martin Fowler, Microservices (2014)
martinfowler.com/articles/microservices.html
![Page 7: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/7.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
aplicație monolitică(N funcționalități într-un unic proces)
◉ ▲✸ ⧓
◉ ▲✸ ⧓
◉ ▲✸ ⧓
◉ ▲✸ ⧓
◉ ▲✸ ⧓
scalabilitate prin replicarea monolitului pe S servere
scalabilitate prin distribuirea serviciilor între servere, replicându-le conform
necesităților
◉▲
✸
micro-servicii(fiecare funcționalitate serviciu separat)
◉ ◉
▲▲
◉ ✸
▲▲
✸ ✸
▲ ✸
micro-serviciumodularitate, descentralizare și evoluție permanentă
exemple de bună practică: microservices.io
![Page 8: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/8.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Beneficii ale micro-serviciilor:
izolareautonomie
scalabilitate individualăreziliență
vitezăsuport pentru experimentare
feedback rapidflexibilitate
ușor de înlocuitecosistem
S. Tilkov, A Question of Size – Modularization & Microservices, Java Forum Nord 2017:
speakerdeck.com/stilkov/a-question-of-size-modularization-and-microservices
![Page 9: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/9.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
micro-servicii
Funcționale (functional services)
implementează funcționalități specifice (business operations)
![Page 10: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/10.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
micro-servicii
Funcționale (functional services)
implementează funcționalități specifice (business operations)
expuse consumatorului de servicii
independente (fără efecte colaterale – side effects)
nu sunt partajabile uzual
![Page 11: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/11.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
micro-servicii
Control – infrastructură (infrastructure services)
implementează activități non-funcționale: autentificare, autorizare, jurnalizare, monitorizare,…
![Page 12: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/12.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
micro-servicii
Control – infrastructură (infrastructure services)
implementează activități non-funcționale: autentificare, autorizare, jurnalizare, monitorizare,…
nu sunt expuse în exterior – private
pot fi partajate la nivel de aplicație ori servicii interne
![Page 13: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/13.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
de la cereri efectuate de client la obținerea răspunsului oferit de API via micro-servicii funcționale
bazate pe cele vizând infrastructura
M. Richards, Microservices vs. Service-Oriented Architecture, O’Reilly, 2016
client requests
API layer
functional service infrastructure service
![Page 14: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/14.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
micro-servicii
Aspect de interes:
proprietar – ownership+
coordonare – coordination
![Page 15: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/15.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
micro-servicii
Aspect de interes:
partajarea funcționalităților
share-as-much-as possible – SOA clasicversus
share-as-little-as possible – micro-servicii
![Page 16: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/16.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
micro-servicii
Aspect de interes:
comunicarea – uzual, asincronă – între (micro-)servicii
abordări:point-to-point
sau publish-subscribe
![Page 17: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/17.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
intern, (micro-)serviciile pot comunica recurgând la publish-subscribe
WebSub (recomandare W3C, 2018): www.w3.org/TR/websub/
simplificarea accesului clientului
via API
Jonas Bonér(2016)
service serviceservice
API gateway
service
even
ts
even
ts
sub
subscribe
![Page 18: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/18.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
micro-servicii
Uzual, arhitecturile ce recurg la micro-serviciinu includ componente middleware
și nu oferă suport pentru abstractizarea interacțiunii dintre producătorii și consumatorii de servicii
(contract decoupling)
μSOA – Micro-Service Oriented Architecture
![Page 19: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/19.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitectură bazată pe servicii Web
arhitectură recurgând la micro-servicii
Z. Dehghani, How to break a Monolith into Microservices (2018)martinfowler.com/articles/break-monolith-into-microservices.html
cazuri concrete: Amazon, Groupon, Netflix,… de studiat prezentările lui Stefan Tilkov: speakerdeck.com/stilkov
frontend (FE)
ser-vice
ser-vice
ser-vice
DB
client
ser-vice
DB
FE FE FE
client
DB
ser-vice
ser-vice
DB
![Page 20: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/20.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
micro-servicii: dezvoltare
Platforme: Cocaine, Deis, Fabric8, Hook.io, OpenWhisk,…
Framework-uri: Akka, Baratine, Finagle, Ice, Orbit, Vert.X, Wangle etc.
SDK-uri multi-limbaj: Apex, CoAP, gRPC, Hprose
multe alte instrumente software enumerate lagithub.com/mfornos/awesome-microservices
![Page 21: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/21.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API
Accesul la un (micro-)serviciu are loc uzual pe baza unei interfețe de programare a aplicației
API (Application Programming Interface)
![Page 22: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/22.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Accesul la un (micro-)serviciu are loc uzual pe baza unei interfețe de programare a aplicației
API (Application Programming Interface)
“any well-defined interface that definesthe service that one component, module, or application
provides to other software elements”(de Souza et al., 2004)
API
![Page 23: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/23.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API „de succes” – adaptare după (Bloch, 2005)
ușor de învățatfacil de folosit, chiar și în lipsa documentației
previne utilizarea eronatăstabil și sigur
ușor de menținutsuficient de expresiv
facil de extins
vezi și S. Clarke, “Measuring API Usability”: drdobbs.com/windows/184405654
API
![Page 24: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/24.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Componentă software concepută și invocată via tehnologiile Web actuale
(URI, HTTP, formate de date: JSON, XML)
poate fi dezvoltată conform unui stil arhitecturale.g., REST (REpresentational State Transfer)
vezi cursul trecut
API
![Page 25: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/25.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API
De la aplicații la API-uri și servere de aplicații
Brian Mulloy, Web API Design, Apigee, 2016docs-apis.apigee.io/files/Web-design-the-missing-link-ebook-2016-11.pdf
😍
customer⧉
app
dev💡
API
API
team
⛮🛢️backend
![Page 26: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/26.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API public (disponibil pe baza unei licențe de utilizare)
versus
API privat(pentru uz intern)
API
![Page 27: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/27.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
browsermodern
prezen-tare
proce-sare
abstrac-tizaredate
recurgere la API
JSON, XML, CSV,…
server „slab” (thin)
client Web modern(HTML5)
aplicație JavaScript(eventual, via app store)
API: abordare client – JavaScript
browser Web pe calculatoare convenționale, dispozitive
mobile și altele
![Page 28: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/28.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
browsermodern
prezen-tare
proce-sare
abstrac-tizaredate
recurgere la API
JSON, XML, CSV,…
server „slab” (thin)
client Web modern(HTML5)
aplicație JavaScript(eventual, via app store)
implementarea aplicației JavaScript poate recurge la biblioteci, framework-uri, componente specifice
e.g., Angular, React, Vue
API: abordare client – JavaScript
![Page 29: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/29.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
sistem de
operare
prezen-tare
proce-sare
abstrac-tizaredate
recurgere la API
JSON, XML, CSV,…
server „slab” (thin)
client nativ modern(smart device)
aplicație nativăC#, Kotlin, Swift,…
(uzual, via app store)
API: aplicații native
desktop și/sau mobile, smart TV, home appliance,
dispozitiv ambiental
![Page 30: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/30.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
sistem de
operare
prezen-tare
proce-sare
abstrac-tizaredate
recurgere la API
JSON, XML, CSV,…
server „slab” (thin)
client nativ modern(smart device)
aplicație nativăC#, Kotlin, Swift,…
(uzual, via app store)
implementarea aplicației native poate recurge la biblioteci, framework-uri, componente specifice
e.g., Apache Cordova, Flutter, Ionic, React Native, NW.js
API: aplicații native
![Page 31: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/31.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
brow-ser
prezen-tare
proce-sare
abstrac-tizaredate
API
JSONet al.
server „slab” (thin)
client Web„prostuț” (dumb)
server de prezentare
pagini
HTML
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
API: abordare bazată pe intermediari
book readerchioșc informativ
automobil
![Page 32: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/32.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API: în contextul serverless
Aplicația depinde semnificativ de componente externe, disponibile în „nori”
(micro-)servicii expuse via API
abordarea serverless
![Page 33: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/33.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API: în contextul serverless
Serverless
strat de abstractizare a accesului la resurseleunei platforme de tip cloud
Mike Roberts (2018) martinfowler.com/articles/serverless.html
![Page 34: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/34.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
brow-ser
controlproce-
sare
client modern
BaaS
func-ționa-litate1
func-ționa-litate2
auten-tificare
☁
BaaS = (Mobile) Backend As A Service FaaS = Functions As A Service
FaaS
căutare
procesarecomenzi
BaaS
comenzi
produse
acces la API
API: în contextul serverless
☁
☁
☁
![Page 35: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/35.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API: în contextul serverless
FaaS – Functions As A Service
funcții (cloud functions) implementând funcționalitățiexpuse consumatorului de servicii
as small as possible
uzual, implementări sub 100 de linii de cod
![Page 36: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/36.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API: în contextul serverless
FaaS – Functions As A Service
executate – la nivel de server – independent și asincron,fără a cauza efecte colaterale
declanșate de evenimente
utilizatorul nu e preocupat de managementul resurselorși alte sarcini
![Page 37: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/37.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API: în contextul serverless
BaaS – Backend As A Service
încapsulează servicii de infrastructură ce implementeazăactivități non-funcționale
(autentificare, autorizare, jurnalizare, monitorizare etc.)
private – nu sunt expuse în exterior
pot fi partajate de serviciile interne
![Page 38: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/38.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API: în contextul serverless
Serverless computing = FaaS + BaaS
a se consulta și articolul Sabin Buraga, Aspecte arhitecturale
vizând dezvoltarea de aplicații serverless (2019)itransfer.space/aspecte-arhitecturale-vizand-dezvoltarea-de-aplicatii-serverless/
resurse + soluții software:github.com/anaibol/awesome-serverless
![Page 39: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/39.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Cum poate fi descrisă interfața unui API?
![Page 40: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/40.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
OpenAPI Specification (ex-Swagger) – openapis.org
RAML (RESTful API Modeling Language) – raml.org
API Blueprint – apiblueprint.org
alte resurse de interes:github.com/Kikobeats/awesome-api
API: descriere abstractă
![Page 41: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/41.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
OpenAPI Specification
soluție modernă de a declara – independent de platformă –interfața publică a unui API REST
versiunea curentă: OpenAPI 3.0.2 (septembrie 2019)
formate folosite: JSON (JavaScript Object Notation) și/sau YAML (Yet Another Markup Language)
API: descriere abstractă
![Page 42: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/42.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
OpenAPI Specification
biblioteci de procesare – exemple:KaiZen OpenAPI Parser (Java)
Microsoft.OpenApi.net (C#)Open API Definition Parser (Ruby)Spectral (JavaScript, TypeScript)
API: descriere abstractă
![Page 43: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/43.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
OpenAPI Specification
creare de servicii (puncte terminale – end-points) pe baza unui document OpenAPI:
Exegesis (Node.js)FastAPI (Python)
Fusio (PHP, JavaScript)PHP-CRUD-API (PHP)
Vert.x (Java, Kotlin, JS, Ruby, Scala,…)
API: descriere abstractă
![Page 44: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/44.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
OpenAPI Specification
generatoare de cod – exemplificări:BaucisJS (Node.js)
gnostic (Go)WebSphere Liberty (Java)
ZRO (Ruby on Rails)
API: descriere abstractă
![Page 45: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/45.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API: descriere abstractă
OpenAPI Mapopenapi-map.apihandyman.io/?version=3.0
explorarea vizuală a construcțiilor
OpenAPI Specification
![Page 46: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/46.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
API: descriere abstractă
{"openapi": "3.0.0","paths": {
"/resource": { // acces la reprezentarea resursei desemnate de /resource"get": {
"operationId": "service","parameters": [ {
"name": "parameter","in": "query", // parametru adăugat URL-ului (în query string)"schema": { "type" : "string" }
} ],"responses": {
"200": {"description": "Success","schema": { // descrie (via JSON Schema) răspunsul oferit
"$ref":"#/definitions/Response"}
}}
}}
„scheletul” unui document OpenAPI specificând un API
![Page 47: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/47.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
editarea unei specificații de APIproiectul UReR (V. Vîrlan et al., 2017)
github.com/VirlanValentin/WADe_UReR
![Page 48: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/48.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Modele tradiționale de afaceri vizând API-urile
implementare
John Musser, “API business models”, API Strategy Conference, 2013
![Page 49: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/49.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Modele actuale de afaceri privind API-urile
John Musser, “API business models”, API Strategy Conference, 2013
![Page 50: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/50.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
John Musser, “API business models”, API Strategy Conference, 2013
Modele actuale de afaceri privind API-urile
CPA – cost per actionCPC – cost per click
![Page 51: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/51.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
Modele actuale de afaceri privind API-urile
John Musser, “API business models”, API Strategy Conference, 2013
![Page 52: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/52.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
Putea utiliza servicii Web (API-uri)pentru autorizare și autentificare?
![Page 53: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/53.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autorizare
Etape esențiale:
obținere cheie de acces 🔑
autentificarea + autorizarea aplicației ⎆⧉
obținerea acordului utilizatorului ⌨⍝👀
apelarea funcționalităților serviciului (via API)
![Page 54: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/54.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autorizare
Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:
(1) înregistrarea aplicației conceputevia situl entității furnizoare a serviciului
![Page 55: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/55.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autorizare
Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:
(1) înregistrarea aplicației conceputevia situl entității furnizoare a serviciului
cheie de acces – API key, consumer key, developer key
![Page 56: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/56.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autorizare
Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:
(2) pe baza acestei chei, aplicația se va putea autentificapentru a putea fi autorizată să acceseze serviciul dorit
![Page 57: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/57.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autorizare
Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:
(2) pe baza acestei chei, aplicația se va putea autentificapentru a putea fi autorizată să acceseze serviciul dorit
pot fi impuse diverse politici de acces (permissions):doar consultare (read), posibilitatea editării etc.
![Page 58: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/58.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autorizare
Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:
(3) autentificarea și autorizarea aplicațieiau loc cu acordul utilizatorului
![Page 59: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/59.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autorizare
Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:
(3) autentificarea și autorizarea aplicațieiau loc cu acordul utilizatorului
dacă utilizatorul nu este autentificat, i se vor solicitainformațiile de autentificare (e.g., nume + parola)
– eventual, folosind 2FA (Two Factor Auth) –,apoi va putea autoriza aplicația să aibă acces la date
via serviciul Web furnizat
![Page 60: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/60.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autorizare
Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:
(4) aplicația apelează funcționalitățile oferite de serviciupentru preluarea/modificarea datelor de interes,
conform politicilor de acces
![Page 61: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/61.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autorizare
Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:
(4) aplicația apelează funcționalitățile oferite de serviciupentru preluarea/modificarea datelor de interes,
conform politicilor de acces
sesiunea curentă va fi stabilită și menținutăpe baza unor informații de autentificare (auth tokens)
![Page 62: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/62.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
oauth
Autorizarea unei aplicații să acceseze date private într-un mod standardizat – pe baza tehnologiilor
Web actuale – se poate realiza via OAuth
avansat
![Page 63: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/63.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
oauth
Autorizarea unei aplicații să acceseze date private într-un mod standardizat – pe baza tehnologiilor
Web actuale – se poate realiza via OAuth
protocol deschis – RFC 6749OAuth 1.0 (2010), OAuth 2.0 (2012)
oauth.net/2/
L. Spyna, An OAuth 2.0 Introduction for Beginners (2018):itnext.io/an-oauth-2-0-introduction-for-beginners-6e386b19f7a9
avansat
![Page 64: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/64.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
securitatea datelor
autorizarea prin OAutha aplicației JS Bin
pentru a obține accesul la datele unui utilizator
deținute de GitHub
avansat
![Page 65: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/65.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
securitatea datelor
procesele de autorizare a accesului la o resursă Webconform Dominik Mengelt (2013)
avansat
![Page 66: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/66.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
securitatea datelor
exemplu concret – Facebook: autorizare cu diverse permisiuni – e.g., age_range, email (acces la adresa de e-mail a unui utilizator),
public_profile, user_birthday, user_hometown, user_friends, user_likes, user_photos, rsvp_event și altele
developers.facebook.com/docs/facebook-login/permissions/v2.0
avansat
![Page 67: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/67.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
oauth
Biblioteci (server și/sau client) disponibile pentru C, C++, Go, Erlang, Java, JavaScript, Objective-C, .NET,
Perl, PHP, Python, Ruby, Swift,…
oauth.net/code/
![Page 68: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/68.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
oauth
Servicii proxy de autentificare/autorizare prin OAuth
Auth0 – auth0.com
Hydra – github.com/ory/hydra
OAuth – oauth.io
Okta – developer.okta.com
![Page 69: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/69.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
rest: dezvoltare – oauth
exemplificare: hello.js – soluție modulară, la nivel de client, vizând autentificarea și
accesarea serviciilor Web via RESTadodson.com/hello.js/
![Page 70: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/70.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
oauth
Autorizare via servicii Web specifice – exemple:
GitHub – developer.github.com/v3/oauth/
Google – developers.google.com/identity/protocols/OAuth2
LinkedIn – developer.linkedin.com/docs/oauth2
Live Connect (Microsoft) – http://tinyurl.com/zztr97h
Stack Exchange – api.stackexchange.com/docs/authentication
Twitter – dev.twitter.com/oauth
WordPress – developer.wordpress.com/docs/oauth2/
![Page 71: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/71.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
rest: dezvoltare – openid
de experimentat accesul la diverse date (e.g., persoane de contact via Google Contacts API) pe baza OAuth 2.0 Playground
developers.google.com/oauthplayground/
sesiunea curentă e păstrată într-un jeton (token) JSON
avansat
![Page 72: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/72.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autentificare
Metode de autentificare:
bazate pe sesiunea Web via SID (Session IDentifier)
implicit, Web-ul e stateless
![Page 73: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/73.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autentificare
Metode de autentificare:
folosind jetoane (tokens)
token based authentication
![Page 74: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/74.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autentificare
Metode de autentificare:
fără parolă (passwordless)
one-time-use URL
exemplu: Tumblr
![Page 75: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/75.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autentificare
Metode de autentificare:
SSO (Single Sign-On)
autentificarea utilizatorilor în cadrul mai multor aplicații înrudite
![Page 76: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/76.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autentificare
Metode de autentificare:
autentificare socială via alte conturi de utilizator
de exemplu, via rețele sociale sau alte situri Web de încredere
![Page 77: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/77.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autentificare
Metode de autentificare:
2FA (Two-Factor Authentication)
utilizatorul trebuie să ofere minim 2 probe (factors) referitoare la identitatea sa
cunoștințe ori obiecte deținute exclusiv de acea persoană
de studiat și TOTP (Time-Based One-Time Password Algorithm) – RFC 6238: tools.ietf.org/html/rfc6238
![Page 78: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/78.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
rest: dezvoltare
autentificare multi-factor (2FA): twofactorauth.org
![Page 79: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/79.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autentificare
Metode de autentificare:
autentificare biometrică
bazate pe amprentă (fingerprint recognition)recunoașterea facială sau a unor organe
scanarea ochiului (iris, retină)identificare vocală
analizarea codului genetic (DNA matching)
www.biometricsinstitute.org
![Page 80: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/80.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autentificare
Metode de autentificare:
autentificare via dispozitiv hardware
exemplu tipic: smartcard
![Page 81: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/81.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
autentificare
Metode de autentificare – privire de ansamblu:
bazate pe sesiunea Webfolosind jetoane (token based authentication)
fără parolă (passwordless)SSO (Single Sign-On)autentificare socială
2FA (Two-Factor Authentication)autentificare biometrică
autentificare via dispozitiv hardware
hackernoon.com/how-do-you-authenticate-mate-f2b70904cc3a
![Page 82: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/82.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
openid
OpenID
manieră descentralizată de autentificare a utilizatoruluila nivel de Web pe baza paradigmei SSO
utilizatorul poate demonstra că deține un URL specificmenit a-l identifica on-line via un ofertant (serviciu)
de identitate digitală (identity provider)e.g., folosind o aplicație Web socială
avansat
![Page 83: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/83.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
openid
Fiecare identitate a unui utilizator e desemnată de un URL (stabilit de identity provider)
exemplu: steamcommunity.com/openid/id/steamid
pentru a-și confirma identitatea,utilizatorul va trebui să se autentifice:
nume de cont + parolă, smart card, date biometrice,…
avansat
![Page 84: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/84.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
openid
OpenID Connect
oferă un nivel vizând identitatea utilizatorului (identity layer) pe baza protocolului OAuth 2
formatul de date folosit: JWT – JSON Web Tokenstandardizat de RFC 7519
openid.net/connect/
avansat
![Page 85: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/85.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
openid
OpenID Connect
biblioteci open source disponibilepentru C, C#, Java, JavaScript, PHP, Python, Ruby,…
openid.net/developers/libraries/
avansat
![Page 86: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/86.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
openid
OpenID Connect
suport oferit de serverul Web:
mod_auth_openidc – modul Apachegithub.com/pingidentity/mod_auth_openidc
L. Crilly, Authenticating API Clients with JWT (2016)www.nginx.com/blog/authenticating-api-clients-jwt-nginx-plus/
avansat
![Page 87: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/87.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
Mesaje – de autentificare sau interschimb de informații –
vehiculate în format JWT
resurse de interes + instrumente oferite de jwt.io
jeton JWT
avansat
![Page 88: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/88.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
openid
În conjuncție cu JWT, a se considera specificațiileJOSE – JSON Object Signing and Encryption:
specificarea semnăturilor digitaleJWS – JSON Web Signature: tools.ietf.org/html/rfc7515
definirea metodelor criptograficeJWE – JSON Web Encryption: tools.ietf.org/html/rfc7516
reprezentarea cheilor criptograficeJWK – JSON Web Key: tools.ietf.org/html/rfc7517
identificarea & înregistrarea algoritmilor criptograficiJWA – JSON Web Algorithms: tools.ietf.org/html/rfc7518
avansat
![Page 89: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/89.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
Există alternative privitoare la REST?
![Page 90: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/90.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Graph Query Language
“a query language for APIs and a runtime for fulfilling those queries with your existing data”
graphql.org
sub jurisdicția Linux Foundationgql.foundation
avansat
![Page 91: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/91.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Graph Query Language
declarativ
inspirat de JSON
strict (strong-typed)
avansat
![Page 92: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/92.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Graph Query Language
sunt permise interogări (queries) – operații de citire –și actualizări (mutations) – operații de alterare a datelor
avansat
![Page 93: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/93.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Graph Query Language
sunt permise interogări (queries) – operații de citire –și actualizări (mutations) – operații de alterare a datelor
se oferă suport pentru a anticipa ce date vor fi întoarse + structura acestora
avansat
![Page 94: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/94.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Graph Query Language
răspunsul oferit include doar datele ce au fost solicitateîmbunătățirea performanței la nivel de client
avansat
![Page 95: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/95.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Graph Query Language
răspunsul oferit include doar datele ce au fost solicitateîmbunătățirea performanței la nivel de client
rezolvarea problemelor vizând over/under fetching(preluare a mai multor sau prea puține date)
philsturgeon.uk/api/2017/01/24/graphql-vs-rest-overview/
nordicapis.com/is-graphql-the-end-of-rest-style-apis/
avansat
![Page 96: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/96.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
GraphQL ca alternativă la dezvoltarea de servicii via paradigma REST
GraphQL REST
entitate resursă resursă
format JSONorice Media Type (MIME)frecvent: JSON
protocolHTTP – uzual, adoptă convențiiproprii
independent de protocol(uzual, HTTP)
cine decide ce date vor fi întoarse
clientul serverul
puncte terminale (endpoints)
un singur punct terminal pentru a oferi date conexe, dacă au fost specificate relații între ele
puncte terminale multiple (independente)
tipuri de date strong (tipuri declarate explicit)weak (verificarea tipurilor de date nu e obligatorie)
relație client-server fat client—fat server thin client—fat server
documentare autodescriptiv (self-describing)necesită terțe soluții (e.g., OpenAPI Specification)
viziunelimbaj de interogare, specificație, colecție de instrumente
stil arhitectural
![Page 97: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/97.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Aspecte de considerat de către implementatori:
probleme de securitate – e.g., autentificare, autorizare, refuz al serviciilor
suportul pentru caching trebuie oferit explicit
managementul versiunilor
blog.pusher.com/rest-versus-graphql/
avansat
![Page 98: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/98.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Instrumente pentru dezvoltatori:
implementare de referință pentru server (Node.js)GraphQL.js
graphql.org/graphql-js/
biblioteci disponibile pentru C, Go, Java, .NET, PHP, Python, Ruby, Swift, Typescript,…
graphql.org/code/
avansat
![Page 99: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/99.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Instrumente pentru dezvoltatori:
de experimentat și Apollo – dev.apollodata.com
suport pentru front-end:la nivel de Web via JavaScript – e.g., Angular, Vue, Meteor
pentru aplicații bazate pe React, a se folosi Relay (Modern) – relay.dev
soluții pentru Android (Java) și iOS (Swift)
avansat
![Page 100: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/100.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Instrumente pentru dezvoltatori:
o abordare arhitecturală bazată pe micro-serviciiGrAMPS (GraphQL Apollo Microservice Pattern Server)
folosită de IBMgramps.js.org
avansat
![Page 101: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/101.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Instrumente pentru dezvoltatori:
de experimentat și framework-ul Graphene
implementări pentru limbajele de programareJavaScript – graphene-js.org
+Python – graphene-python.org
avansat
![Page 102: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/102.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
GraphiQL – interogare GraphQL interactivă în navigatorul Web a unui API
aici, „Războiul Stelelor” – graphql.org/swapi-graphql/
schemarezultateinterogare
variabilă(parametru)
![Page 103: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/103.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
exemple de interogări via GraphQL ale unor API-uri (e.g., Giphy, Hacker News, Reddit): www.graphqlhub.com
în acest caz, Twitter
# primele 10 mesaje (+meta-date vizând utilizatorii care le-au expus){
twitter {search(q: "Pink Floyd", count: 10, result_type: mixed) {
user {screen_namenamefollowers_count
}textcreated_atretweets {
id}
}}
}
![Page 104: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/104.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
un posibil rezultat al interogării GraphQL
![Page 105: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/105.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
testarea interactivă a API-ul GitHubimplementat via GraphQL
developer.github.com/v4/
conceptul Repository
(depozit de cod-sursă)și proprietățile aferente
![Page 106: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/106.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Alte exemplificări:
AWS AppSync – sincronizare în timp-real a datelor via servicii Amazon disponibile „în nori”
docs.aws.amazon.com/appsync/latest/devguide/
avansat
![Page 107: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/107.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Alte exemplificări:
Shopify – acces la date vizând comerțul electronic
help.shopify.com/en/api/custom-storefronts/storefront-api/
avansat
![Page 108: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/108.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Alte exemplificări:
Yelp – acces la recenzii de produse/servicii
www.yelp.com/developers/graphql/guides/intro
avansat
![Page 109: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/109.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Resurse de interes, studii de caz, noutăți:
Awesome GraphQLgithub.com/chentsulin/awesome-graphql
Open GraphQLdev.to/open-graphql
avansat
![Page 110: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/110.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Alternativă:
PartiQLinițiativă Amazon, necesitând Java pentru rulare (JVM)
acces la date eterogene (relaționale, semi-structurate,…) independent de serverul de stocare, sub „umbrela” SQL, cu verificarea opțională a validității (optional schema)
partiql.org
avansat
![Page 111: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/111.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Alternativă:
TreeQLinspirat de REST și GraphQL
răspunsul la o interogare reprezintă un „arbore” de obiecte JSON corespunzătoare structurii (relațiilor) bazei de date relaționale (SQL) interogate via REST
treeql.org
avansat
![Page 112: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/112.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
model de acces la date: graphql
Alternativă:
TreeQL
implementare de referință în PHP7 – PHP-CRUD-API:github.com/mevdschee/php-crud-api
alte soluții (C#, Go, Java, Node.js, Python): treeql.org/code/
avansat
![Page 113: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/113.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
anumite funcționalități pot fi gestionate „în propria ogradă” (on-premises)
sau de un furnizor de servicii disponibile „în nori”
conform (Eizadirad, 2017)www.linkedin.com/pulse/iaas-paas-saas-explained-compared-arsalan-eizadirad
![Page 114: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/114.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
A. Barron, Pizza As A Service (2014)www.linkedin.com/pulse/20140730172610-9679881-pizza-as-a-service
![Page 115: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/115.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
D. Ng, SaaS, PaaS and IaaS explained in one graphic (2017)m.oursky.com/saas-paas-and-iaas-explained-in-one-graphic-d56c3e6f4606
![Page 116: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/116.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
P. Kerrison, Pizza As A Service 2.0 (2017)www.paulkerrison.co.uk/random/pizza-as-a-service-2-0
![Page 117: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/117.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/rezumat
dezvoltare de servicii Web
◳de la micro-servicii și specificarea API-urilor
la serverless și accesul la date via GraphQL
![Page 118: Dezvoltarea sistemelor Webbusaco/teach/courses/websys/presentatio… · ga .ro / ~ co / Dezvoltarea sistemelor Web servicii Web micro-servicii serverless GraphQL Dr. Sabin Corneliu](https://reader030.vdocuments.pub/reader030/viewer/2022041016/5ec975233194143a89736b29/html5/thumbnails/118.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co/
episodul viitor: arhitectura navigatorului Web
user interface
browser engine
rendering engine
network
JSinter-preter
datapar-ser
display back-end
da
ta p
ersiste
nce