+ All Categories
Home > Documents > Dezvoltarea aplicațiilor Web -...

Dezvoltarea aplicațiilor Web -...

Date post: 09-Oct-2019
Category:
Upload: others
View: 5 times
Download: 1 times
Share this document with a friend
172
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco Dezvoltarea aplicațiilor Web aplicații Web: aspecte arhitecturale Dr. Sabin Corneliu Buraga – profs.info.uaic.ro/~busaco/
Transcript
Page 1: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Dezvoltarea aplicațiilor Web

aplicații Web: aspecte arhitecturale

Dr. Sabin Corneliu Buraga – profs.info.uaic.ro/~busaco/

Page 2: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

„Fiecare vis începe cu un visător.”

Harriet Tubman

Page 3: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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ă?

Page 4: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi

Calitatea aplicațiilor Web este influențatăde arhitectura pe care se bazează

Page 5: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

start with needsdo less

design with datado the hard work to make it simple

iterate. then iterate againbuild for inclusion

understand contextbuild digital services, not Websites

be consistent, not uniformmake things open; it makes things better

arhitecturi: principii

exemplu pentru gov.uk – Paul Downey & David Heath (2013)

Page 6: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

adaptare după Crumlish & Malone, 2009

scopuripsihologie

comportament

⧉ 💡

interacțiunecontroale

limbi naturale

funcționalitățitehnologiialgoritmi

indexarestructuraremeta-date

instrumentemetodologii

stimuli

utilizatori interfață software conținut creatori

Page 7: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

evoluția manierei de dezvoltare a produselor

digitale (software)Alan Cooper et al., 2014

Page 8: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi

Dezvoltarea unei arhitecturi software ia în calcul:

cerințe funcționale

impuse de clienți, vizitatori,

concurență,factori decizionali (management),

evoluție socială/tehnologică,…

Page 9: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Atragerea experților– subject matter expert (SME) sau domain expert –

în domeniul problemeice trebuie soluționată de aplicația Web

arhitecturi

Page 10: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi

Dezvoltarea unei arhitecturi software ia în calcul:

factori calitativi

utilizabilitateperformanță

securitaterefolosire a datelor/codului

etc.

Page 11: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi

Dezvoltarea unei arhitecturi software ia în calcul:

aspecte tehn(olog)ice

platforma hardware/software (sistem de operare)infrastructura middleware

servicii disponibile – e.g., via API-uri publicelimbaj(e) de programare

sisteme tradiționale (legacy)…

Page 12: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi

Inițial:oferirea funcționalităților esențiale – less is more

Versiuni ulterioare:extinderea aplicației Web

– uzual, via o interfață de programare (API) publică, încurajând dezvoltarea de soluții propuse de utilizatori

Page 13: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi

Dezvoltarea unei arhitecturi software ia în calcul:

experiența

recurgerea la arhitecturi și platforme existenteșabloane de proiectare (design patterns)

soluții „la cheie”: biblioteci, framework-uri, instrumente,…management de proiecte

etc.

Page 14: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi

Metodologii moderne – exemple:

aim42 – practici și șabloane privind evoluția, mentenanța, migrarea și îmbunătățirea sistemelor software

aim42.github.io

12 Factor App – vizând aplicațiile aliniate paradigmei SaaS (Software As A Service)

12factor.net12 Factor CLI Apps – aplicații în linia de comandă (J. Dickey, 2018)

medium.com/@jdxcode/12-factor-cli-apps-dd3c227a0e46

Page 15: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

client(i)mandatar (proxy)

zid de protecție (firewall)intermediar(i) (middleware)

server(e) Webserver(e) de aplicații Web

cadre de lucru, biblioteci, alte componenteserver(e) de stocare persistentă – e.g., baze de date

server(e) de conținut multimediaserver(e) de management al conținutului – e.g., CMS, wiki

aplicații/sisteme tradiționale (legacy)

„ingrediente” tipice

Page 16: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

client(i)mandatar (proxy)

zid de protecție (firewall)intermediar(i) (middleware)

server(e) Webserver(e) de aplicații Web

cadre de lucru, biblioteci, alte componenteserver(e) de stocare persistentă – e.g., baze de date

server(e) de conținut multimediaserver(e) de management al conținutului – e.g., CMS, wiki

aplicații/sisteme tradiționale (legacy)

eventual, recurgând la servicii în „nori” – cloud computingpartajarea la cerere a resurselor de calcul și a datelor cu alte

calculatoare/dispozitive pe baza tehnologiilor Internet (găzduire, infrastructură scalabilă, procesare paralelă, monitorizare,…)

Page 17: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Esențialmente, de considerat:

preluarea și dirijarea cererilor – dispatch

oferirea funcționalităților de bază – core services

asocierea dintre construcții/abstracțiuni software (e.g., obiecte) și modele de date – mapping

managementul datelor – data

monitorizarea și evaluarea sistemului – metrics

adaptare după Matt Ranney, “What I Wish I Had Known Before Scaling Uber to 1000 Services”, GOTO Chicago 2016

highscalability.com/blog/2016/10/12/lessons-learned-from-scaling-uber-to-2000-engineers-1000-ser.html

Page 18: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 micro-servicii (micro-services)

„În nori” (space-based, cloud)

conform M. Richards, Software Architecture Patterns, O’Reilly, 2015 www.oreilly.com/programming/free/files/software-architecture-patterns.pdf

Page 19: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi webStratificate (layered)

N-tier architecture – abordare de facto

Page 20: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi web

Stratificate (layered)

demarcarea responsabilităților (separation of concerns)

fiecare strat are un rol bine-stabilit, componentele unui strat vizând funcționalitățile acestuia

Page 21: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi web

Stratificate (layered)

izolare (layers of isolation)

modificările operate la un anumit strat nu au impact sau nu afectează componentele din alt strat

Page 22: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi web

Stratificate (layered)

architecture sinkhole anti-pattern

fluxul de cereri traversează fiecare strat, fără a se efectua procesări semnificative în cadrul acestuia

Page 23: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 asincrone

scalabilitate

topologii principale:mediator

sau broker

Page 24: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 25: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 26: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi webExtensibile (microkernel / plug-in)

sistem principal (core system) +

module independente de tip extensie (plug-in)

o astfel de arhitectură poate fi inclusă/utilizată ca parte a altei abordări arhitecturale

Page 27: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi webFolosind micro-servicii

componente separate, distribuite (separately deployed units)decuplare maximă

Page 28: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi web

Folosind micro-servicii

abordări:bazate pe API-uri (API-based)

aplicație recurgând la REST (application REST-based)mesagerie centralizată (centralized messaging)

Page 29: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi webFolosind micro-servicii

API-basedaplicația Web expune servicii individuale, punctuale,

de sine-stătătoare (self-contained) via un API

fine-grained service components

Page 30: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi webFolosind micro-servicii

application REST-basedcererile sunt recepționate tradițional (nu prin API)fiecare funcționalitate este accesată intern via REST

coarse-grained service components

Page 31: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi webFolosind micro-servicii

centralized messagingaccesare a componentelor interne via un broker „ușor”

Page 32: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 33: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

wiki.c2.com/?TupleSpace

Page 34: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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),…

Page 35: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 36: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.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 37: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

A. Barron, Pizza As A Service (2014)www.linkedin.com/pulse/20140730172610-9679881-pizza-as-a-service

Page 38: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.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 39: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.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 40: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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)

Page 41: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Prin ce mijloace poate fi implementată o aplicație Web?

Page 42: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Server de aplicații Web

scop: eficientizarea proceselor de dezvoltare

a aplicațiilor Web de anvergură

Page 43: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Server de aplicații Web

simplifică invocarea de programe (script-uri)

generarea de conținut dinamic pe partea de server

(re)vezi prezentarea despre inginerie Web:profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html#week3

Page 44: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Server de aplicații Web

poate fi integrat în unul/mai multe servere Web

de asemenea, poate oferi propriul server Websau mediu de execuție

Page 45: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Server de aplicații Web

poate încuraja sau impune o viziune arhitecturalăprivind dezvoltarea de aplicații Web

situație tipică:MVC ori variații (Herberto Graca, 2017)

herbertograca.com/2017/08/17/mvc-and-its-variants/

Page 46: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

brow-ser

prezen-tare

proce-sare

abstrac-tizaredate

pagini <Web/>

HTML, CSS,…

server „gras” (fat)

client „prostuț” (dumb)

arhitectura aplicațiilor Web:abordarea MV* tradițională

www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/

frontend backend

frecvent, aplicație monolitică(e.g., un WAR: 2.2 M linii de cod, 418 .jar-uri,

startare în 12 min. – conform plainoldobjects.com)

Page 47: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Framework (cadru de lucru)

facilitează dezvoltarea de aplicații Web complexe,simplificând unele operații uzuale

(e.g., acces la baze de date, caching, generare de cod, management de sesiuni, control al accesului)

și/sau încurajând reutilizarea codului-sursă

Page 48: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Diverse framework-uri care facilitează dezvoltarea de aplicații Web aliniate problematicilor Web-ului semantic:

Apache Jena (Java) – jena.apache.org

Apache TinkerPop (Java) – tinkerpop.apache.org

Eclipse RDF4J (Java) – rdf4j.org

LODQA (JS) – github.com/lodqa/lodqa

OSF (PHP, Clojure) – opensemanticframework.org

Semantic MediaWiki (PHP) – www.semantic-mediawiki.org

Silk (Java) – silkframework.org

Page 49: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Bibliotecă Web (library)

colecție de resurse computaționale reutilizabile – i.e., structuri de date + cod –

oferind funcționalități (comportamente) specifice implementate într-un limbaj de programare

Page 50: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Bibliotecă Web (library)

colecție de resurse computaționale reutilizabile – i.e., structuri de date + cod –

oferind funcționalități (comportamente) specifice implementate într-un limbaj de programare

poate fi referită de alt cod-sursă (software): server de aplicații, framework, bibliotecă,

serviciu, API ori componentă Web

Page 51: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Biblioteci cu acces liber la codul-sursă

exemple – aliniate problematicilor Web-ului semantic:

banana-rdf (Scala) – github.com/banana-rdf/banana-rdf

d3sparql (JS) – github.com/ktym/d3sparql

dotNetRDF (C#) – www.dotnetrdf.org

FaCT++ (C++) – bitbucket.org/dtsarkov/factplusplus

OWL API (Java) – github.com/owlcs/owlapi

RDFLib (Python) – rdflib.readthedocs.io

Redland RDF Libraries (C) – librdf.org

Sgvizler (JS) – mgskjaeveland.github.io/sgvizler/

Page 52: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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ă

implementarea sa nu trebuie cunoscută de programatorul ce invocă serviciul

a se revedea cursul anterior

Page 53: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 54: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 55: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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)

Page 56: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

(e.g., via WSDL – Web Service Description Languagesau OpenAPI Specification)

Page 57: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 58: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 59: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 60: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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”

Page 61: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 62: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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)

Page 63: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

clasificare a serviciilor la care poate recurge o aplicație Web dezvoltată

conform principiilor SOA M. Richards, Microservices vs. SOA, O’Reilly, 2016

businessservice

enterprise service

enterprise service

enterprise service

application service

application service

infra-structure

serviceinfra-

structureservice

messaging middleware

enterprise service

Page 64: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 ESB – Enterprise Service Bus (magistrală de servicii la nivel organizațional)

Page 65: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Serviciu Web

messaging middleware

roluri: mediere (mediation)

și dirijare (routing)

Page 66: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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)

Page 67: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Serviciu Web

messaging middleware

rol: message enhancement

Page 68: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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.

USA: CUSIP (Committee on Uniform Security

Identification Procedures)

UK: SEDOL (Stock Exchange Daily

Official List)

Page 69: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Serviciu Web

messaging middleware

rol: transformare a mesajelor/protocoalelor

Page 70: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

message transformatione.g., JSON ↔ Java, JSON ↔ PDO (PHP Data Objects)

JavaScript Object Notation Plain Old Java Object

Page 71: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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)

www.oracle.com/technetwork/java/rmi-iiop-139743.html

AMQP (Advanced Message Queuing Protocol)www.amqp.org

Page 72: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Micro-serviciu

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 73: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 74: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

coaplicaț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 75: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 76: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 77: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 78: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 79: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 80: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 81: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

micro-servicii

Aspect de interes:

proprietar – ownership+

coordonare – coordination

Page 82: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 83: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 84: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 85: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 86: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 87: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 88: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

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)

Page 89: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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”: drdobbs.com/windows/184405654

Page 90: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

implementare

Page 91: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

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 92: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 93: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 94: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 95: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 96: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 97: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 98: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 99: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 100: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 101: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 102: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 103: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 104: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 105: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Cum poate fi descrisă interfața unui API?

Page 106: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 107: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 108: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 109: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 110: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 111: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 112: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 113: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 114: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 115: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 116: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 117: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 118: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 119: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

exemplu: Octokit (Go, Java, .NET, Node.js, Ruby,…) oferit de Github – developer.github.com/v3/libraries/

Page 120: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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ă

„curentul” SaaS (Software As A Service)

implementare la nivelul: clientului (browser-ului) Web și/sau serverului Web

Page 121: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Mash-ups

combinare – surse de date (eterogene) multiple

agregare – analizarea datelor e.g., via machine/deep learning, deducții automate,…

vizualizare – redarea datelor agregate

Page 122: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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 „nori”

Platforme(Platform As A Service)

Digital Ocean, Heroku, Google Cloud Platform, MS Azure,…

Page 123: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

mash-ups

Selfiexploratory – selfiecity.net/selfiexploratory/

Nukemap – nuclearsecrecy.com/nukemap/

Coinorama – github.com/coinorama/

PopURLS – popurls.com

Page 124: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

mash-ups

lista mash-up-urilor: www.programmableweb.com/mashups/directory

multe alte API-uri publice la github.com/toddmotto/public-apis

Page 125: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 126: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Web component

parte a unei interfețe Web cu utilizatorulce încapsulează o suită de funcții înrudite

e.g., calendar, cititor de fluxuri de știri,buton de partajare a URL-ului în altă aplicație

Page 127: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Web component

dezvoltare bazată pe o bibliotecă/framework JS

soluții – uzual, la nivel de client: Polymer, React, X-Tag,…

în lucru la Consorțiul Web (septembrie 2019)github.com/w3c/webcomponents/

Page 128: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Widget

aplicație – de sine-stătătoare sau inclusă într-un container (e.g., un document HTML) –

ce oferă o funcționalitate specifică

rulează la nivel de client (platformă pusă la dispoziție de sistemul de operare și/sau de navigatorul Web)

Page 129: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

(Web) app

o aplicație (Web) instalabilă care folosește API-urile oferite de o platformă:

browser, server de aplicații, sistem de operare,…

Page 130: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

(Web) app

a distributed computer software application designed foroptimal use on specific screen sizes and

with particular interface technologiesRobert Shilston, 2013

Page 131: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web browser

SPASingle Page App

platform(OS + device)

native app

HTTPWebSockets

adaptare după Adrian Colyer (2012)

aplicații Web

șiservicii

(API-uri)

app store

☁ ☁

Page 132: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

SPA (Single Page Applications)

rescrierea dinamică – pe baza transferului asincron al datelor –

a conținutului documentului HTML (paginii Web)în urma interacțiunii cu utilizatorul

Page 133: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

structura de bază a unei SPAde studiat Mikito Takada, Single Page Apps in Depth (2017)

singlepageappbook.com

ⵄ DOM

▣ view

▦model

⧆ template

🛢️storage

▸▹events

changes

observes

renders

queries &writes to

emits

Page 134: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

write-only DOMnu sunt preluate date din DOM

managementul stării se face independent de DOM

ⵄ DOM

▣ view

▦model

⧆ template

🛢️storage

▸▹events

changes

observes

renders

queries &writes to

emits

Page 135: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

models are the single source of truthmodelele reprezintă toate datele/stările aplicației Web și

sunt păstrate în memorie

ⵄ DOM

▣ view

▦model

⧆ template

🛢️storage

▸▹events

changes

observes

renders

queries &writes to

emits

Page 136: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

pro

fs.in

fo.uaic.ro

/~busa

co

views observe model changesview-urile reflectă conținutul modelelor și

primesc notificări de actualizare din partea modelelor

ⵄ DOM

▣ view

▦model

⧆ template

🛢️storage

▸▹events

changes

observes

renders

queries &writes to

emits

Page 137: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

decoupled modules that expose small external surfacesarhitectura aplicației este compusă din

sub-sisteme (module) independente, specializatepachete expunând o interfață simplă publică

ⵄ DOM

▣ view

▦model

⧆ template

🛢️storage

▸▹events

changes

observes

renders

queries &writes to

emits

Page 138: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

minimizing DOM dependent-codeminimizarea și izolarea codului JS

vizând manipularea arborelui DOM

ⵄ DOM

▣ view

▦model

⧆ template

🛢️storage

▸▹events

changes

observes

renders

queries &writes to

emits

Page 139: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

SPA (Single Page Applications)

managementul stării aplicației la momentul rulării

URL ↔ stare

starea curentă a view-ului e dependentă de URL uzual, de #fragment-identifier

tools.ietf.org/html/rfc3986#section-3.5

Page 140: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

SPA (Single Page Applications)

definirea unor componente ce ulterior pot fi inițializate

suport pentru reutilizare

aceste componente pot fi încărcate asincron(eventual, la cerere) via module

Page 141: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

componente majore ale unei SPA (Patrick Ackerman, 2017)

Page 142: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

SPA (Single Page Applications)

uzual, se bazează pe paradigma de programare (funcțională) reactivă

(FRP – functional reactive programming)

aspecte formale în C. Elliot & P. Hudak, Functional Reactive Animation, ICFP 1997

conal.net/papers/icfp97/

github.com/conal/talk-2015-essence-and-origins-of-frp

Page 143: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

SPA (Single Page Applications)

programare (funcțională) reactivă (FRP – functional reactive programming)

paradigmă declarativă vizând fluxuri de date prelucrate asincron

(event stream, observable)

a stream a sequence of ongoing events ordered in timegist.github.com/staltz/868e7e9bc2a7b8c1f754

Page 144: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

orice modificare a valorii unei structuri de date ce poate fi observată (Observable) determină propagarea

unui eveniment ce poate fi tratat asincron (via Promise) de entitățile ce depind de această structură

www.sitepoint.com/graphql-react-native-getting-started/

Page 145: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

SPA (Single Page Applications)

programare (funcțională) reactivă (FRP – functional reactive programming)

studii de caz concrete + resurse:www.infoq.com/reactive-programming/

Page 146: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

SPA (Single Page Applications)

framework-uri/biblioteci – la nivel de client Web: Angular, Aurelia, Ember.js,

Meteor.js, Mithril, React, RxJS, Turbine,…

aspecte privind interacțiunea cu utilizatorul:One Page Love – onepagelove.com

Page 147: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Add-on

denumire generică a aplicațiilor asociate unui browser

(extensii, teme vizuale, dicționare,

maniere de căutare pe Web, plug-in-uri etc.)

exemplificare: addons.mozilla.org

implementare

Page 148: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

dezvoltare

Recurgerea la medii de dezvoltare

exemplificări – aplicații native (pentru desktop):Anjuta, Aptana Studio, Eclipse, Emacs, IntelliJ IDEA,

KomodoIDE, Padre, PHPStorm, PyCharm, RubyMine,Visual Studio, Zend Studio

soluții bazate pe cloud computing:AWS Cloud9, Codenvy, Koding etc.

S. Buraga, „Cu codul în nori”: www.slideshare.net/busaco/cu-codul-n-nori

Page 149: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

instrumente de dezvoltare (IDE)

dezvoltare

rulare

mediu de execuție(runtime environment)

cod-sursă stocat(code repositories)

A. I

qb

al, M

. Hau

nse

nb

las,

S. D

eck

er (

20

12

)

Development as a Service

☁☁

Page 150: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

instrumente de dezvoltare (IDE)

dezvoltare

rulare

mediu de execuție(runtime environment)

cod-sursă stocat(code repositories)

☁☁

Web: AWS Cloud9, Koding, Ideone etc.desktop: Eclipse, Visual Studio (Code),…

BitBucket,GitHub

instrumente utile la github.com/ripienaar/free-for-dev

DigitalOcean, Google Cloud Platform, Heroku,Jelastic, OpenStack, Windows Azure,…

Page 151: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Câteva exemplificări privind arhitectura unor aplicații Web?

Page 152: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi: exemplu – wot

Web of Things Architecture(în lucru la W3C, 11 octombrie 2019)

descriere independentă de implementare a unui sistem IoT(Internet of Things) ce recurge la tehnologii Web

w3c.github.io/wot-architecture/

RDF

Page 153: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi: exemplu – wot

Page 154: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

studiu de caz: flickr

Scop:partajare on-line a conținutului grafic (fotografii)

aplicație reprezentativă a Web-ului social

agregare de comunități – imaginea ca obiect social

suport pentru adnotări via termeni de conținut (tagging)+ comentarii

Page 155: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

studiu de caz: flickr – tehnologii

PHP (procesare – application logic, acces la API,prezentare de conținut via Smarty, modul de e-mail)

Perl (validarea datelor)Java (managementul nodurilor de stocare)

MySQL (stocare în format InnoDB)ImageMagick (bibliotecă C de prelucrare de imagini)

Ajax (interacțiune asincronă)Linux (platformă de rulare)

alte detalii la highscalability.com/flickr-architecture

Page 156: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitectura inițială – conform (Cal Henderson, 2007)

Page 157: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

studiu de caz: flickrinterfețe de programare (API-uri)oferite de Flickr

facilitează accesul la serviciile Web în cadrul aplicațiilor rulând

pe platforme variate

cereri via REST, XML-RPC, SOAPrăspunsuri REST, XML-RPC, SOAP, JSON

www.flickr.com/services/api/

Page 158: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

aspecte generice vizând proiectarea sistemului:

categorii de resurse: user + picture

relații între instanțe de tip user (e.g., follow)

relații între instanțe de tip user și picture(make, depicts, comment, like,…)

asigurarea performanței: timp de răspuns, arhitectură software scalabilă,

stocare persistentă scalabilă, optimizarea imaginilor

recomandarea resurselor (user/picture) de interes

detalii în articolul Create a Photo Sharing App (2016) blog.gainlo.co/index.php/2016/03/01/system-design-interview-question-create-a-photo-sharing-app/

Page 159: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

studiu de caz: netflix

Page 160: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

studiu de caz: netflix

aspecte de interes: conținut – filme, emisiuni TV,…

stocare + (de)codificare (transcoding)difuzare adaptivă în timp-real (adaptive streaming)

redare (playback) – suport pentru dispozitive eterogene

Page 161: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

procesare backend Java, Python, Node.js (JavaScript)

procesare frontend React, winjs (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 (Relational DB Service)

servicii NoSQL Amazon DynamoDB

management de cod GitHub (implementat în Ruby + C)

integrare continuă Jenkins (implementare Java)

gestionare servere Apache Mesos (implementare C++)

distribuire de conținut(content distribution network)

Open Connect CDN (FreeBSD, Nginx), Akamai, Level 3, Limelight

monitorizare Boundary, LogicMonitor, Vector,…

highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html

stackshare.io/netflix/netflix

Page 162: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Scop: aplicație Web pentru managementulciclului de dezvoltare software via Git

de la planificarea proiectului și gestiunea codului-sursăpână la integrare continuă și monitorizare

distribuit liber (community edition) – instalabil pe Linux –ori prin subscripții (enterprise edition)

docs.gitlab.com/ee/development/architecture.html

about.gitlab.com/handbook/engineering/infrastructure/production-architecture/

studiu de caz: gitlab

Page 163: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

studiu de caz: gitlab

reverse proxy: NGINX server Web: Unicorn stocare persistentă: PostgreSQL (utilizatori, meta-date), Redis (sesiuni Web, cache, cozi de mesaje) acces la Git: Gitaly procesare cozi de mesaje: Sidekiq monitorizare (metrici): Prometeus infrastructură: Terraform

Page 164: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

studiu de caz: groupon

Scop: prezentarea de oferte privind bunuri de consum

de la o arhitectură monolitică la una adoptând (micro-)servicii

engineering.groupon.com/2013/misc/i-tier-dismantling-the-monoliths/

Page 165: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 166: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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ă

Page 167: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

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

Page 168: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi: exemplu – grouponreproiectare

(~20 de aplicații Web separate, independente)

Page 169: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Aplicație Web

Procesare la nivel de server (backend)

Stocare persistentă

Amazon Perl, Java

MySQL (MariaDB), Amazon DynamoDB,Amazon SimpleDB,Amazon ElastiCache

CourseraDjango (Python), Node.js (JavaScript), Play (Scala)

MySQL, Apache Cassandra

DuckDuckGo

Node.js, Perl PostgreSQL

FacebookHack, PHP (HHVM), Tornado (Python), Java, JavaScript

RocksDB, Presto,Cassandra, Beringei

Google C++, Dart, Go, Java, Python BigTable, MariaDB

Linkedin Grails (Java), JavaScript, ScalaMySQL, Oracle DB, RocksDB, Hadoop

stackshare.io/stacks

Page 170: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Aplicație Web

Procesare la nivel de server (backend)

Stocare persistentă

LyftPHP, Flask (Python), Java, Go, C++

MongoDB, DynamoDB, Redis

Medium Node.js, GoNeo4j, DynamoDB,Redis

Pinterest Django (Python), Java, GoMySQL, Hadoop, Apache HBase, Redis, Memcached

StackOverflow

.NET Framework (C#) MS SQL Server, Redis

SoundCloud

Clojure, Scala, JRuby MySQL

Wikipedia PHP (HHVM), Node.js MySQL

stackshare.io/stacks

Page 171: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rezumat

arhitectura aplicațiilor Web orientate spre servicii

Page 172: Dezvoltarea aplicațiilor Web - profs.info.uaic.robusaco/teach/courses/wade/presentations/web03... · de arhitectura pe care se bazează . ga /~ c o start with needs do less design

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

episodul viitor: aspecte vizând modelarea cunoștințelor

model de acces la dateservicii Web

model de calcul

ofertantde servicii mobile

mash-up-uri la nivelde dispozitiv mobil

model de implementaremodel de interacțiune

model de comunicare

model al fluxului

de date

⚙⚙

⚙⚙

GraphQLet al.


Recommended