148
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco Dezvoltarea aplicațiilor Web aplicații Web: aspecte arhitecturale

WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Embed Size (px)

Citation preview

Page 1: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Dezvoltarea aplicațiilor Web

aplicații Web: aspecte arhitecturale

Page 2: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

Harriet Tubman

Page 3: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi

Recurgerea la metodologii moderne – exemple:

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

http://12factor.net/

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

http://aim42.github.io/

Page 15: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi web: componente tipice

client(i)firewallproxy

middlewareserver(e) Web

server(e) de aplicațiiframework-uri, biblioteci, alte componente/module

server(e) de stocare persistentă – e.g., baze de dateserver(e) de conținut multimedia

server(e) de management al conținutului (CMS)aplicații/sisteme tradiționale

Page 16: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

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

Page 17: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 18: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi webStratificate (layered)

N-tier architecture – abordare de facto

Page 19: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 20: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 21: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 22: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 23: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 24: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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ă

Page 25: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 26: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 27: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 este accesată intern via REST

coarse-grained service components

Page 28: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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”

Page 29: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 30: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 31: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 32: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 33: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

anumite funcționalități pot fi gestionate „în propria ogradă” sau de un furnizor de servicii

disponibile „în nori”

conform (Eizadirad, 2017)www.linkedin.com/pulse/iaas-paas-saas-explained-compared-arsalan-eizadirad

Page 34: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 35: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 36: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 37: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 38: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

Page 39: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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, 2012http://offers.apigee.com/web-api-design-ebook/

Page 40: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 41: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 42: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 (MVVM – Model View ViewModel,

MVP – Model View Presenter, PAC – Presentation Abstraction Control)

Page 43: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Server de aplicații Web

simplifică maniera de invocarede programe (script-uri) ale unei aplicații Web

generarea de conținut dinamic pe partea de server

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

Page 44: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 45: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 46: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Framework (cadru de lucru)

clasificare:

de uz general

management de conținut(CMS – Content Management System)

la nivel de intranet – e.g., portal organizațional

Page 47: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 48: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 49: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 50: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 51: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 52: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 53: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 54: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 55: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 56: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 57: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 58: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 59: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 60: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 61: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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)

Page 62: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 63: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 64: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Serviciu Web

messaging middleware

rol: message enhancement

Page 65: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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.

Page 66: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Serviciu Web

messaging middleware

rol: transformare a mesajelor/protocoalelor

Page 67: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

message transformatione.g., JSON ↔ POJO (Plain Old Java Object)

Page 68: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 69: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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ă

Page 70: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 71: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 72: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 73: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 74: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 75: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 76: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 77: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 78: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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/

Page 79: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Beneficii ale microserviciilor:

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 80: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Microserviciu

funcțional (functional service)

implementează funcționalităti specifice (business operations)

Page 81: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Microserviciu

funcțional (functional service)

implementează funcționalităti specifice (business operations)

expuse consumatorului de serviciiindependente (fără efecte colaterale – side effects)

nu sunt partajabile uzual

Page 82: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 83: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 84: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 85: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

(Micro-)serviciu

aspecte de interes:

proprietar – ownership+

coordonare – coordination

Page 86: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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)

Page 87: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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)

Page 88: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

sau publish-subscribe

Page 89: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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/websub/

simplificarea accesului clientului

via API

Jonas Bonér (2016)

Page 90: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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)

Page 91: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

frontend (FE)

ser-vice

ser-vice

ser-vice

DB

client

ser-vice

DB

FE FE FE

client

DB

ser-vice

ser-vice

DB

Page 92: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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)

Page 93: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 94: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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/

Page 95: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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/

Page 96: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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/

Page 97: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 98: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 99: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Descrierea abstractă a unui API:

OpenAPI Specification (ex-Swagger) – https://openapis.org/

RAML (RESTful API Modeling Language) – http://raml.org/

API Blueprint – https://apiblueprint.org/

detalii în K. Sandoval, Top Specification Formats for REST APIs (2016)http://nordicapis.com/top-specification-formats-for-rest-apis/

Page 100: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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)

https://github.com/VirlanValentin/WADe_UReR

Page 101: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

un API pentru API-uri la http://theapistack.com/

Page 102: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 103: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 104: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 105: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 106: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 107: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 (pentru .NET, Objective-C, Ruby) oferit de Github – https://developer.github.com/libraries/

Page 108: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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)

Page 109: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 110: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 111: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 112: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 113: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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/

Page 114: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 115: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

mash-ups

Your Life on Earth (BBC)www.bbc.com/earth/story/20141016-your-life-on-earth

Page 116: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

mash-ups

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

Page 117: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 & licențiere

securitate: abuz, confidențialitate, încredere etc.

monetizare

lipsa unei interoperabilități reale între platforme

implementare: mash-ups

Page 118: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 119: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

Web component

dezvoltare bazată pe o bibliotecă/framework

soluții – uzual, la nivel de client:

Dojo Toolkit, jQuery UI, React, Vue,…

cadrul general:

Web Components – www.webcomponents.org

Page 120: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 121: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 122: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 technologies

Robert Shilston, 2013

Page 123: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

implementare

(Web) app

uzual, se poate obține via un app store(centralizat sau descentralizat)

exemple notabile: Chrome Apps

aplicații Windows dezvoltate în JavaScript

aplicații Web pentru Kindle Fire, Tizen,...

Page 124: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web browser

app store

single page app

platform(OS + device)

native app

HTTPWebSockets

adaptare după Adrian Colyer (2012)

aplicații Web

șiservicii

(API-uri)

☁☁

Page 125: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 126: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

Page 127: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi: exemplu – wot

Web of Things Architecture(în lucru la W3C, 14 septembrie 2017)

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

https://www.w3.org/TR/wot-architecture/

RDF

Page 128: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi: exemplu – wot

Page 129: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

arhitecturi: exemplu – flickr

Page 130: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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 http://highscalability.com/flickr-architecture

arhitecturi: exemplu – flickr

Page 131: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

Page 132: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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, eventual,

pe alte platforme

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

www.flickr.com/services/api/

Page 133: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

aspecte generice vizând proiectarea:

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) http://blog.gainlo.co/index.php/2016/03/01/system-design-interview-

question-create-a-photo-sharing-app/

Page 134: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Scop: descoperire și management online de evenimente(e.g., conferințe cu caracter tehnologic)

agregare de comunități – evenimentul ca obiect social

suport pentru vorbitori și audiență, slide-uri,… + calendare și localități de desfășurare

concepte importante: conferences, user profiles, e-mails, dashboard, coverage, topics, guides

arhitecturi: exemplu – lanyrd

Page 135: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Creat aproape complet în Python (folosind Django)și întreținut de 6 persoane

2½ backend developers1¾ frontend developers½ mobile developers1½ designers¾ system administrators¾ business operations

A. Godwin, Inside Lanyrd’s Architecture, QCon London, 2013http://www.infoq.com/presentations/lanyrd-architecture

arhitecturi: exemplu – lanyrd

Page 136: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi: exemplu – lanyrd

Page 137: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Scop: recomandare în timp-real de știri de interes (ziare, blog-uri,…), pe baza profilului utilizatorului

și a interacțiunii sale cu sistemul

recurge la tehnici de învățare automată, în funcție și de sentimentul manifestat față de un articol dat

arhitecturi: exemplu – smartfetcher

Page 138: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi: exemplu – smartfetcher

la nivel de server (backend): Node.js (framework-ul Sails)API REST – eventual, folosit via WebSocket-uri

pentru comunicarea în timp-real cu clienții

pe partea client (frontend): Angular și Bootstrap

Page 139: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

proiect de licență al absolvenților Raluca Jalaboi & Bogdan Spiridon (Facultatea de Informatică, UAIC Iași, 2015)

Page 140: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi: exemplu – 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 141: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 142: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 143: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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 144: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

arhitecturi: exemplu – grouponreproiectare

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

Page 145: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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/

Page 146: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

Page 147: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rezumat

arhitectura aplicațiilor Web orientate spre servicii

Page 148: WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects

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

⚙⚙

⚙⚙

GraphQLYQL