Service Oriented Architecturesbusaco/teach/courses/... · „În nori” (space-based, cloud)...

Post on 26-May-2020

7 views 0 download

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