Service Oriented Architecturesbusaco/teach/courses/... · „În nori” (space-based, cloud)...
Transcript of Service Oriented Architecturesbusaco/teach/courses/... · „În nori” (space-based, cloud)...
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/Service Oriented Architectures
sisteme Web: aspecte arhitecturale
↹de la (micro-)servicii Web la
aplicații Web hibride (mash-ups)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
„Fiecare vis începe cu un visător.”
Harriet Tubman
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Aplicații Web sisteme software complexe,în evoluție permanentă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Care sunt arhitecturile software tipice pe baza cărora sunt dezvoltate aplicațiile Web de anvergură?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web
Stratificate (layered)Conduse de evenimente (event-driven)
Extensibile (microkernel / plug-in)Folosind microservicii (microservices)
„În nori” (space-based, cloud)
conform M. Richards, Software Architecture Patterns, O’Reilly, 2015 www.oreilly.com/programming/free/files/software-architecture-patterns.pdf
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webStratificate (layered)
N-tier architecture – abordare de facto
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web
Stratificate (layered)
separation of concerns
layers of isolation
architecture sinkhole anti-pattern
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webStratificate (layered)
separation of concernsfiecare strat are un rol bine-stabilit, componentele unui
strat vizând funcționalitățile acestuia
layers of isolationmodificările operate la un anumit strat nu au impact sau
nu afectează componentele din alt strat
architecture sinkhole anti-patternfluxul de cereri traversează fiecare strat, fără a se efectua
procesări semnificative în cadrul acestuia
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webStratificate (layered)
separation of concernsfiecare strat are un rol bine-stabilit, componentele unui
strat vizând funcționalitățile acestuia
layers of isolationmodificările operate la un anumit strat nu au impact sau
nu afectează componentele din alt strat
architecture sinkhole anti-patternfluxul de cereri traversează fiecare strat, fără a se efectua
procesări semnificative în cadrul acestuia
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webStratificate (layered)
separation of concernsfiecare strat are un rol bine-stabilit, componentele unui
strat vizând funcționalitățile acestuia
layers of isolationmodificările operate la un anumit strat nu au impact sau
nu afectează componentele din alt strat
architecture sinkhole anti-patternfluxul de cereri traversează fiecare strat, fără a se efectua
procesări semnificative în cadrul acestuia
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webarhitecturistratificate(N-tier Web
applications)
bazate pe servicii Web
M. Richards,Software
Architecture Patterns,
O’Reilly, 2015
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web
Conduse de evenimente (event-driven)
eventan action or occurrence recognized by a computing
system that may be handled by the software
event-driven programming a programming paradigm in which
the flow of the program is determined by events
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web
Conduse de evenimente (event-driven)
evenimente emise și/sau tratate de către…
sistem – hardware (e.g., conexiune activă la rețea) și/sau software (e.g., mesaje de la alte aplicații)
versusutilizator – uzual, în contextul interacțiunii om-calculator
(tastatură – keypressed; mouse – move; suprafață senzitivă – tap, swipe; alți senzori)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web
Conduse de evenimente (event-driven)
uzual în contextul aplicațiilor distribuite asincronescalabilitate
topologii principale – recurg la software de tip:mediator (mijlocitor, intermediar)
sau broker (comisionar, samsar)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webConduse de evenimente (event-driven)
mediatorevenimente procesate
în mai mulți pași, necesitând orchestrare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webConduse de evenimente (event-driven)
broker – fluxul de mesaje este distribuit componentelor de procesare a evenimentelor
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web
Extensibile (microkernel / plug-in)
sistem principal (core system) +
module independente (extensii) de tip plug-in
o astfel de arhitectură poate fi inclusă/utilizată ca parte a altei abordări arhitecturale
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web
Extensibile (microkernel / plug-in)
plug-in-urile pot fi concepute via un API oferit de sistemul principalexemplu: modulele Apache – httpd.apache.org/docs/current/mod/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webFolosind microservicii (microservices)
componente separate, distribuite (separately deployed units)decuplare maximă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web
Folosind microservicii (microservices)
abordări:API-based
application REST-basedcentralized messaging
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webFolosind microservicii (microservices)
API-basedaplicația Web expune servicii individuale, punctuale,
de sine-stătătoare (self-contained) via un API
fine-grained service components
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webFolosind microservicii (microservices)
application REST-basedcererile sunt recepționate tradițional (nu prin API)
fiecare funcționalitate e accesată intern via REST
coarse-grained service components
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi webFolosind microservicii (microservices)
centralized messagingaccesare a componentelor interne via un broker „ușor”
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web
„În nori” (space-based, cloud)consideră și rezolvă problemele vizând scalabilitatea și concurența unui volum impredictibil de mare de cereri
tuple spacedatele aplicației sunt păstrate în memorie și replicate
de toate unitățile de procesare active
fără stocare centralizatădistributed shared memory
http://wiki.c2.com/?TupleSpace
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web„În nori” (space-based, cloud)
middleware virtualizatinclude componente controlând sincronizarea datelor,
procesarea cererilor, accesul la platforma de execuție (deployment),…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web„În nori” (space-based, cloud)
unitate de procesarereprezentată de un (micro-)serviciu Web
sau o componentă software tradițională la nivel de backend
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi web
aspecte de interes: agilitate exploatare testabilitate performanță scalabilitate dezvoltare
Richards (2015)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Prin ce mijloace poate fi implementată o aplicație Web complexă?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Soluții tradiționale:
server de aplicații Web
framework (cadru de lucru)
bibliotecă Web (library)
(re)vezi cursurile anterioare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Soluții moderne:
(micro-)serviciu Web
API (Application Programming Interface)
aplicații Web hibride (mash-ups)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
software – utilizat la distanță de alte aplicații/servicii –oferind o funcționalitate specifică,
a cărui implementare nu trebuie cunoscută de dezvoltator
detalii în cursurile precedente
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
aspecte de interes – vizând, în special, SOA:tipul serviciului
rolul serviciului în cadrul arhitecturii software
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
business service
“abstract, high-level, coarse-grained services that define the core business operations that are performed
at the enterprise level”
Mark Richards (2016)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
business service
independent de implementare
specifică numele operațiilor oferite, tipul parametrilor de intrare, tipul rezultatului
via WSDL – Web Service Description Language sau OAI – Open API Initiative: www.openapis.org
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
business service
opțional, pot fi definite reguli de orchestrare (contextul execuției serviciului)
uzual via BPEL – Business Process Execution Language
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
enterprise service
reprezintă un serviciu concret – e.g., componentă middleware –implementând funcționalitățile
definite de serviciul de tip business
abordare coarse-grained
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
enterprise service
în relație one-to-one sau one-to-manycu serviciile abstracte de tip business
poate fi partajat la nivelul organizației
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
application service
“fine-grained, application-specific servicethat is bound to a specific application context”
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
application service
oferă funcționalități specifice, punctuale
apelabil via o interfață cu utilizatorul ori via un serviciu de tip enterprise
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
infrastructure service
pune la dispoziție operații interne (private)
invocat de servicii disponibile la nivel de aplicație (application services) sau
organizațional (enterprise services)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
clasificare a serviciilor la care poate recurge o aplicație Web dezvoltată conform principiilor SOA M. Richards, Microservices vs. SOA, O’Reilly, 2016
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
messaging middleware
folosit la coordonarea apelurilor de servicii
denumit și integration hub ori enterprise service bus (magistrală de servicii la nivel organizațional)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
messaging middleware
roluri: mediere (mediation)
și dirijare (routing)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
“the capability of the architecture to locate and invoke a service (or services) based on a specific business
or user request” (Richards, 2016)
existența unei componente de descoperire a serviciilor (service registry)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
messaging middleware
rol: message enhancement
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
“the capability of the architecture to modify, remove, or augment the data portion of a request
before it reaches the service” (Richards, 2016)
exemple: conversii privind formatul, adăugarea unor date derivate/calculate ad-hoc etc.
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Serviciu Web
messaging middleware
rol: transformare a mesajelor/protocoalelor
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
message transformatione.g., JSON ↔ POJO (Plain Old Java Object)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
protocol transformationREST
cu HTTP RMI-IIOP
AMQP
RMI-IIOP (Java Remote Method Invocation over Internet Inter-ORB Protocol)
http://docs.oracle.com/javase/7/docs/technotes/guides/rmi-iiop/index.html
AMQP (Advanced Message Queuing Protocol)www.amqp.org
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Microserviciu
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ă
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 microserviciilor conformJames Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
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 microserviciilor conformJames Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
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 microserviciilor conformJames Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
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 microserviciilor conformJames Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
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 microserviciilor conformJames Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
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 microserviciilor conformJames Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
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 microserviciilor conformJames Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
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 microserviciilor conformJames Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
microserviciumodularitate, descentralizare și evoluție permanentă
exemple de bună practică: http://microservices.io/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Microserviciu
funcțional (functional service)
implementează funcționalități specifice (business operations)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Microserviciu
funcțional (functional service)
implementează funcționalități specifice (business operations)
expuse consumatorului de serviciiindependente (fără efecte colaterale – side effects)
nu sunt partajabile uzual
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Microserviciu
control – infrastructură (infrastructure service)
implementează activități non-funcționale: autentificare, autorizare, jurnalizare, monitorizare,…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Microserviciu
control – infrastructură (infrastructure service)
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
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 microservicii funcționale
bazate pe cele vizând infrastructura
M. Richards, Microservices vs. Service-Oriented Architecture, O’Reilly, 2016
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
(Micro-)serviciu
aspecte de interes:
proprietar – ownership+
coordonare – coordination
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
(Micro-)serviciu
context mai larg: necesitatea specificării provenienței (micro-)serviciilor
M. Richards (2016)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
(Micro-)serviciu
aspect de interes:
partajarea funcționalităților
share-as-much-as possible (cazul SOA clasic)versus
share-as-little-as possible (microservicii)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
(Micro-)serviciu
aspect de interes:
comunicarea – uzual, asincronă – între (micro-)servicii
abordări:point-to-point (P2P)
sau publish-subscribe
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
intern, (micro-)serviciile pot comunica recurgând la publish-subscribe – www.w3.org/TR/pubsub/
simplificarea accesului clientului
via API
Jonas Bonér (2016)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
(Micro-)serviciu
uzual, arhitecturile ce recurg la microserviciinu includ componente middleware
și nu oferă suport pentru abstractizarea interacțiunii dintre producătorii și consumatorii de servicii
(contract decoupling)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitectură bazată pe servicii Web
arhitectură recurgând la microservicii
cazuri concrete: Amazon, Groupon, Netflix,…
de studiat prezentările lui Stefan Tilkov: https://speakerdeck.com/stilkov
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
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)
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
implementare
vezi și S. Clarke, “Measuring API Usability”: http://drdobbs.com/windows/184405654
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 „puternic”(HTML5)
aplicație JavaScript(eventual, via app store)
arhitectura aplicațiilor Web:abordarea JavaScript via API
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
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 „isteț”(smart device)
aplicație nativăC#, Java, Obj-C, Swift,…(uzual, via app store)
arhitectura aplicațiilor Web:aplicații native (desktop și/sau mobile, smart TV)
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
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
arhitectura aplicațiilor Web:abordarea hibridă (book reader, chioșc informativ)
server de prezentare
pagini
HTML
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
brow-ser
controlproce-
sare
client „puternic”și/sau „isteț”
arhitectura aplicațiilor Web:serverless – aplicația depinde semnificativ de componente
externe, disponibile în „nori” – (micro-)servicii
BaaS
Mike Roberts (2016) – http://martinfowler.com/articles/serverless.html
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
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)
implementare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
SoundCloud API
tipuri de resurse: tracks, users, utilizator curent (me),
playlists, groups, comments
http://developers.soundcloud.com/
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
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
Dr.
Sab
in B
ura
ga
profs.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
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
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
SDK (Software Development Kit)
încapsulează funcționalitățile API-ului într-o bibliotecă(implementată într-un anumit limbaj de programare,
pentru o platformă software/hardware specifică)
API façade pattern
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare
Mash-ups
combinarea – la nivel de client și/sau server –a datelor ce provin din surse (situri) multiple, oferindu-se o funcționalitate/experiență nouă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Mash-ups
exemplificare:
dorim să oferim o aplicație ce pune la dispozițieinformații din domeniul muzical
în funcție de activitățile fizice ale utilizatorului,pe baza unor servicii Web publice
implementare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
mash-ups
http://www.last.fm/api/rest
https://wiki.fitbit.com/display/API/Fitbit+API
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
mash-ups
acces la serviciile RESTdespre formații + albume
via o cheie de autentificare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
mash-ups
API-ul REST de la FitBit oferă date în formatele JSON și XML
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
+ FiLaaplicație Web
de tip mash-up
http://www.last.fm/api/rest
https://dev.fitbit.com/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Mash-ups
se bazează pe fluxuri RSS/Atom, servicii Web, API-uri publice,…
„curentul” SaaS (Software As A Service)
implementare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Mash-ups
caracteristici:combinarevizualizare
agregare
implementare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Mash-ups
combinare
utilizarea de surse de date multiplepoate avea caracter multidimensional
subiect de interes + locație geografică + moment de timp
Yahoo! Music Search + Google Maps + Eventful
implementare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
mash-ups
Combinare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Mash-ups
vizualizare
pot fi adoptate diverse tehnici de vizualizare(prezentare) a datelor:
chart-uri, cartografică, tag cloud-uri, tridimensională,…
de studiat S. Buraga, “An Introduction to Data Visualization” (2016)http://profs.info.uaic.ro/~busaco/teach/courses/hci/hci-film.html#week11
implementare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Coinorama: metode diverse de vizualizare în timp-real a evoluției cursului monedelor virtuale
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Mash-ups
agregare
gruparea datelor provenite din mai multe surse șianalizarea lor: statistici, clasificări, predicții,…
e.g., folosind data mining se pot relevaaspecte „ascunse” ale datelor procesate
implementare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Zemanta – recomandare „inteligentă” de resurse
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
implementare: mash-ups
Surse de date(data feeds)
Atom, RSS, geoRSS, microdate HTML5, RDFa,…
Interfețe de programare(API-uri)
specifice serviciilor publiceși de procesare JSON/XML/RDF
Biblioteci/framework-uripentru dezvoltare
framework-uri Web genericesau oferite de organizații
Instrumente interactive(Web tools)
eventual, disponibile în cloud
Platforme(Platform As A Service)
Heroku, Google Cloud Platform, Nodejitsu, Windows Azure,…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
mash-ups
Your Life on Earth (BBC, 2014)www.bbc.com/earth/story/20141016-your-life-on-earth
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
mash-ups
lista mash-up-urilor: www.programmableweb.com/mashups/directory
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
performanță: scalabilitatea și latența
limite ale API-urilor + existența versiunilor multiple
drepturi de autor asupra datelor și licențiere
securitate: abuz, confidențialitate, încredere etc.
monetizare
lipsa unei interoperabilități reale între platforme
implementare: mash-ups
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
N-am putea accesa datele oferite de aplicațiile/serviciile Web pe baza unui limbaj de interogare?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
acces la date: yql
Yahoo! Query Language
abstractizează accesul la surse de date eterogenece pot fi obținute via servicii Web
https://developer.yahoo.com/yql/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
acces la date: yql
Permite – pe baza unui limbaj similar SQL –interogarea, filtrarea, combinarea datelor la nivel de Web
(suport pentru realizarea de mash-up-uri)
facilitează atașarea la aplicația Web dezvoltatăa surselor de date de interes:
fluxuri de știri, informații cartografice, resurse multimedia etc.
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
acces la date: yql
Adoptă o sintaxă SQLshow, desc, select, use, insert, update, delete
răspunsul la o interogare ≡ rânduri (rows) de date
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
acces la date: yql
Surse – modelate ca tabele – de date disponibileenumerate de http://www.datatables.org/
built-in tables – oferite de Yahoo!+
community tables – e.g., Amazon, Apple, Apigee, arXiv, BBC, Deviant Art, E-bay, Europarliament, Foursquare,
GitHub, HackerNews, Last.fm, Mendeley, Microsoft, PayPal, RottenTomatoes, SoundCloud, Spotify, Steam, Tumblr,
Twitter, Vimeo, WordPress, YouTube, Yelp,…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
acces la date: yql
cele mai recente fotografii stocate de Flickrselect * from flickr.photos.recent limit 7;
informații meteo despre localitatea Iașiselect * from weather.bylocation where location='Iasi';
cele mai recente evenimente ce vor avea loc în Europaselect start_date, description from upcoming.events
where woeid in (select woeid from geo.places
where text="Europe") | sort (field="start_date")
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
creații muzicale oferite de iTunesselect * from apple.itunes where
term='Brain Damage' and media='music';
URL-ul corespunzător cererii
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
acces la date: graphql
GraphQL – Graph Query Language
inițial, propus de Facebook
“a query language for APIs and a runtime for fulfilling those queries with your existing data”
declarativ, inspirat de JSON, strict (strong-typed)
http://graphql.org/
https://learngraphql.com/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
acces la date: graphql
GraphQL – Graph Query Language
implementare de referință în JavaScript: GraphQL.js
biblioteci disponibile pentru C, Go, Java, .NET, PHP, Python, Scala, Typescript,…
detalii în Vince Ling, State of GraphQL 2016https://scaphold.io/blog/2016/10/31/state-of-graphql.html
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
model de acces la date: graphql
interogare interactivă cu GraphQLa API-ului vizând „Războiul Stelelor”
http://graphql-swapi.parseapp.com/
exemple de interogări via GraphQL ale unor API-uri publice (e.g., Github, Hacker News, Reddit, Twitter):
https://www.graphqlhub.com/
schemarezultateinterogare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
model de acces la dateServicii Web
model de calcul
Ofertantde servicii de
telefonie mobilă
mash-up-uri la nivelde dispozitiv mobil
model de implementaremodel de interacțiune
acces la date: mash-up – studiu de caz
adaptare după Tom Croucher
model de comunicare
model al fluxului
de date
⚙⚙
⚙⚙
GraphQLsau YQL
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Exemple de arhitecturi de aplicații Web recurgând la (micro-)servicii?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
studiu de caz: Groupon
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi: exemplu – groupon
Scop: prezentarea de oferte de bunuri de consum
de la o arhitectură monolitică la una adoptând (micro-)servicii
engineering.groupon.com/2013/misc/i-tier-dismantling-the-monoliths/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi: exemplu – groupon
arhitectură inițială MVC tradițional
asigurarea performanței scalabilitate cu CDN
(Content Distribution Network) și servicii de acces la date
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi: exemplu – groupon
arhitectură eterogenăimplementări separate în funcție de zona geografică
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi: exemplu – groupon
oferirea suportului pentru interacțiuni cu dispozitive mobile
API dedicat, accesul depinzând de localizarea utilizatorului
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi: exemplu – grouponreproiectare
(~20 de aplicații Web separate, independente)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
studiu de caz: Netflix
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi: exemplu – netflix
Scop: oferire de conținut video la cerere (streaming) + televiziune Web (Web TV)
servicii disponibile pe dispozitive/platforme multiple
exploatare „în nori”
recurge și la tehnologii deschise – netflix.github.io/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
procesare backend Java, Python, Node.js (JavaScript)
procesare frontend React (JavaScript)
sisteme de stocareMySQL, Apache Cassandra, Apache Hadoop, Apache Hive, Oracle DB
servicii în „nori”Amazon EC2 (procesare video)Amazon S3 (stocare)
servicii SQL Amazon RDS
servicii NoSQL Amazon DynamoDB
management de cod GitHub
integrare continuă Jenkins
gestionare servere Apache Mesos
distribuire de conținut(content distribution network)
Open Connect CDN (FreeBSD, Nginx), Akamai, Level 3, Limelight
monitorizare Apache Chukwa
highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
„concluzii”
Actualmente, aplicațiile Websunt exploatate și integrate continuu
(continuous integration & deployment)
fenomenul perpetual beta
a se vizita Museum of Modern Betas: momb.socio-kybernetics.net/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
„concluzii”
Un număr tot mai mare de aplicații (servicii)populare disponibile on-line se bazează
pe conținut generat de utilizatori
de consultat statisticile oferite de Alexa: www.alexa.com/topsites
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/rezumat
↹arhitectura și ingineria
aplicațiilor Web orientate spre servicii
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Anca
Bogdan
relațiaknows
owns
proprie-tatea
givenName
album
photo
twitter.com/pinkfloyd
tag
clasa persoanelor
follows
owns
sameComposer
clasaalbumelormuzicale
episodul viitor: Web-ul datelor modelate semantic