SlideShare une entreprise Scribd logo
1  sur  148
Télécharger pour lire hors ligne
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Dezvoltarea aplicațiilor Web

aplicații Web: aspecte arhitecturale
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
„Fiecare vis începe cu un visător.”
Harriet Tubman
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Care sunt arhitecturile software tipice
pe baza cărora sunt dezvoltate
aplicațiile Web de anvergură?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi
Calitatea aplicațiilor Web este influențată
de arhitectura pe care se bazează
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
start with needs
do less
design with data
do the hard work to make it simple
iterate. then iterate again
build for inclusion
understand context
build digital services, not Websites
be consistent, not uniform
make things open; it makes things better
arhitecturi: principii
exemplu pentru gov.uk – Paul Downey & David Heath (2013)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
adaptare după Crumlish & Malone, 2009
scopuri
psihologie
comportament
    
interacțiune
controale
limbi naturale
funcționalități
tehnologii
algoritmi
indexare
structurare
meta-date
instrumente
metodologii
stimuli
utilizatori interfață software conținut creatori
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
evoluția manierei de
dezvoltare a produselor
digitale (software)
Alan Cooper et al., 2014
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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ă,
…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Atragerea experților
– subject matter expert (SME) sau domain expert –
în domeniul problemei
ce trebuie soluționată de aplicația Web
arhitecturi
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi
Dezvoltarea unei arhitecturi software ia în calcul:
factori calitativi
utilizabilitate
performanță
securitate
refolosire a datelor/codului
etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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 publice
limbaj(e) de programare
sisteme tradiționale (legacy)
…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web: componente tipice
client(i)
firewall
proxy
middleware
server(e) Web
server(e) de aplicații
framework-uri, biblioteci, alte componente/module
server(e) de stocare persistentă – e.g., baze de date
server(e) de conținut multimedia
server(e) de management al conținutului (CMS)
aplicații/sisteme tradiționale
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Stratificate (layered)
Conduse de evenimente (event-driven)
Extensibile (microkernel / plug-in)
Folosind microservicii (microservices)
„În nori” (space-based, cloud)
conform M. Richards, Software Architecture Patterns, O’Reilly, 2015
www.oreilly.com/programming/free/files/software-architecture-patterns.pdf
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Stratificate (layered)
N-tier architecture – abordare de facto
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi webStratificate (layered)
separation of concerns
fiecare strat are un rol bine-stabilit, componentele
unui strat vizând funcționalitățile acestuia
layers of isolation
modificările operate la un anumit strat nu au impact sau
nu afectează componentele din alt strat
architecture sinkhole anti-pattern
fluxul de cereri traversează fiecare strat, fără a se efectua
procesări semnificative în cadrul acestuia
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Conduse de evenimente (event-driven)
uzual în contextul aplicațiilor distribuite asincrone
scalabilitate
topologii principale:
mediator
sau
broker
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Conduse de evenimente (event-driven)
mediator
evenimente procesate
în mai mulți pași,
necesitând orchestrare
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Conduse de evenimente (event-driven)
broker – fluxul de mesaje este distribuit componentelor
de procesare a evenimentelor
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Extensibile (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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Folosind microservicii (microservices)
componente separate, distribuite
(separately deployed units)decuplare maximă
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Folosind microservicii (microservices)
abordări:
API-based
application REST-based
centralized messaging
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Folosind microservicii (microservices)
API-based
aplicația Web expune servicii individuale, punctuale,
de sine-stătătoare (self-contained) via un API
fine-grained service
components
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Folosind microservicii (microservices)
application REST-based
cererile sunt recepționate tradițional (nu prin API)
fiecare funcționalitate este accesată intern via REST
coarse-grained service
components
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
Folosind microservicii (microservices)
centralized messaging
accesare a componentelor interne via un broker „ușor”
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
„În nori” (space-based, cloud)
consideră și rezolvă problemele vizând scalabilitatea și
concurența unui volum impredictibil de mare de cereri
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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 space
datele aplicației sunt păstrate în memorie și replicate
de toate unitățile de procesare active
fără stocare centralizatădistributed shared memory
http://wiki.c2.com/?TupleSpace
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
„În nori” (space-based, cloud)
middleware virtualizat
include componente controlând sincronizarea datelor,
procesarea cererilor,
accesul la platforma de execuție (deployment),…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
„În nori” (space-based, cloud)
unitate de procesare
reprezentată de un (micro-)serviciu Web
sau o componentă software tradițională la nivel de backend
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
A. Barron, Pizza As A Service (2014)
www.linkedin.com/pulse/20140730172610-9679881-pizza-as-a-service
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
D. Ng, SaaS, PaaS and IaaS explained in one graphic (2017)
m.oursky.com/saas-paas-and-iaas-explained-in-one-graphic-d56c3e6f4606
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
P. Kerrison, Pizza As A Service 2.0 (2017)
www.paulkerrison.co.uk/random/pizza-as-a-service-2-0
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi web
aspecte de interes:
 agilitate
 exploatare
 testabilitate
 performanță
 scalabilitate
 dezvoltare
Richards (2015)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Prin ce mijloace poate fi implementată
o aplicație Web?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
De la aplicații la API-uri și servere de aplicații
Brian Mulloy, Web API Design, Apigee, 2012
http://offers.apigee.com/web-api-design-ebook/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Server de aplicații Web
scop:
eficientizarea proceselor de dezvoltare
a aplicațiilor Web de anvergură
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Server de aplicații Web
poate fi integrat în unul/mai multe servere Web
de asemenea, poate oferi propriul server Web
sau mediu de execuție
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Server de aplicații Web
simplifică maniera de invocare
de 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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
brow-
ser
prezen-
tare
proce-
sare
abstrac-
tizare
date
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)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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ă
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi webarhitecturi
stratificate
(N-tier Web
applications)
bazate pe
servicii Web
M. Richards,
Software
Architecture
Patterns,
O’Reilly, 2015
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
aspecte de interes – vizând, în special, SOA:
tipul serviciului
rolul serviciului în cadrul arhitecturii software
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
business service
“abstract, high-level, coarse-grained services that define
the core business operations that are performed
at the enterprise level”
Mark Richards (2016)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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 Language
sau OpenAPI Specification)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
business service
opțional, pot fi definite reguli de orchestrare
(contextul execuției serviciului)
uzual via BPEL – Business Process Execution Language
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
enterprise service
reprezintă un serviciu concret
– e.g., componentă middleware –
implementând funcționalitățile
definite de serviciul de tip business
abordare coarse-grained
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
enterprise service
în relație one-to-one sau one-to-many
cu serviciile abstracte de tip business
poate fi partajat la nivelul organizației
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
application service
“fine-grained, application-specific service
that is bound to a specific application context”
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
application service
oferă funcționalități specifice, punctuale
apelabil via o interfață cu utilizatorul ori
via un serviciu de tip enterprise
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
infrastructure service
pune la dispoziție operații interne (private)
invocat de servicii disponibile la nivel
de aplicație (application services) sau
organizațional (enterprise services)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
clasificare a serviciilor la care poate recurge
o aplicație Web dezvoltată conform principiilor SOA
M. Richards, Microservices vs. SOA, O’Reilly, 2016
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
messaging middleware
folosit la coordonarea apelurilor de servicii
denumit și integration hub ori enterprise service bus
(magistrală de servicii la nivel organizațional)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
messaging middleware
roluri:
mediere (mediation)
și
dirijare (routing)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
“the capability of the architecture to locate and invoke
a service (or services) based on a specific business
or user request” (Richards, 2016)
existența unei componente
de descoperire a serviciilor (service registry)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
messaging middleware
rol:
message enhancement
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
“the capability of the architecture to modify, remove,
or augment the data portion of a request
before it reaches the service” (Richards, 2016)
exemple: conversii privind formatul,
adăugarea unor date derivate/calculate ad-hoc etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Serviciu Web
messaging middleware
rol:
transformare a mesajelor/protocoalelor
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
message transformation
e.g., JSON ↔ POJO (Plain Old Java Object)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
protocol transformation
REST
cu HTTP RMI-IIOP
AMQP
RMI-IIOP
(Java Remote Method Invocation over Internet Inter-ORB Protocol)
http://docs.oracle.com/javase/7/docs/technotes/guides/rmi-iiop/index.html
AMQP (Advanced Message Queuing Protocol)
www.amqp.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Microserviciu
implementează o funcționalitate specifică,
oferită la nivel de unic proces
self-contained system
componentă la nivel de backend dezvoltată cu scopul
de a fi înlocuită, nu de a fi reutilizată
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
small
each running in its own process
lightweight communication mechanisms (usual, HTTP)
built around business capabilities
independently deployable
minimum of centralized management
may be written in different programming languages
may use different data storage mechanisms
caracteristici ale microserviciilor conform
James Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
small
each running in its own process
lightweight communication mechanisms (usual, HTTP)
built around business capabilities
independently deployable
minimum of centralized management
may be written in different programming languages
may use different data storage mechanisms
caracteristici ale microserviciilor conform
James Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
small
each running in its own process
lightweight communication mechanisms (usual, HTTP)
built around business capabilities
independently deployable
minimum of centralized management
may be written in different programming languages
may use different data storage mechanisms
caracteristici ale microserviciilor conform
James Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
small
each running in its own process
lightweight communication mechanisms (usual, HTTP)
built around business capabilities
independently deployable
minimum of centralized management
may be written in different programming languages
may use different data storage mechanisms
caracteristici ale microserviciilor conform
James Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
small
each running in its own process
lightweight communication mechanisms (usual, HTTP)
built around business capabilities
independently deployable
minimum of centralized management
may be written in different programming languages
may use different data storage mechanisms
caracteristici ale microserviciilor conform
James Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
small
each running in its own process
lightweight communication mechanisms (usual, HTTP)
built around business capabilities
independently deployable
minimum of centralized management
may be written in different programming languages
may use different data storage mechanisms
caracteristici ale microserviciilor conform
James Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
small
each running in its own process
lightweight communication mechanisms (usual, HTTP)
built around business capabilities
independently deployable
minimum of centralized management
may be written in different programming languages
may use different data storage mechanisms
caracteristici ale microserviciilor conform
James Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
small
each running in its own process
lightweight communication mechanisms (usual, HTTP)
built around business capabilities
independently deployable
minimum of centralized management
may be written in different programming languages
may use different data storage mechanisms
caracteristici ale microserviciilor conform
James Lewis & Martin Fowler, Microservices (2014)
http://martinfowler.com/articles/microservices.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
microserviciu
modularitate, descentralizare și evoluție permanentă
exemple de bună practică: http://microservices.io/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Beneficii ale microserviciilor:
izolare
autonomie
scalabilitate individuală
reziliență
viteză
suport pentru experimentare
feedback rapid
flexibilitate
ușor de înlocuit
ecosistem
S. Tilkov, A Question of Size – Modularization & Microservices,
Java Forum Nord 2017:
speakerdeck.com/stilkov/a-question-of-size-modularization-and-microservices
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Microserviciu
funcțional (functional service)
implementează funcționalităti specifice
(business operations)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Microserviciu
funcțional (functional service)
implementează funcționalităti specifice
(business operations)
expuse consumatorului de servicii
independente (fără efecte colaterale – side effects)
nu sunt partajabile uzual
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Microserviciu
control – infrastructură (infrastructure service)
implementează activități non-funcționale:
autentificare, autorizare, jurnalizare, monitorizare,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Microserviciu
control – infrastructură (infrastructure service)
implementează activități non-funcționale:
autentificare, autorizare, jurnalizare, monitorizare,…
nu sunt expuse în exterior (private)
pot fi partajate la nivel de aplicație ori servicii interne
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
de la cereri efectuate de client la obținerea răspunsului
oferit de API via microservicii funcționale
bazate pe cele vizând infrastructura
M. Richards, Microservices vs. Service-Oriented Architecture,
O’Reilly, 2016
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
(Micro-)serviciu
aspecte de interes:
proprietar – ownership
+
coordonare – coordination
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
(Micro-)serviciu
context mai larg:
necesitatea specificării provenienței (micro-)serviciilor
M. Richards (2016)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
(Micro-)serviciu
aspect de interes:
partajarea funcționalităților
share-as-much-as possible (cazul SOA clasic)
versus
share-as-little-as possible (microservicii)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
(Micro-)serviciu
aspect de interes:
comunicarea – uzual, asincronă – între (micro-)servicii
abordări:
point-to-point
sau
publish-subscribe
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
(Micro-)serviciu
uzual, arhitecturile ce recurg la microservicii
nu includ componente middleware
și nu oferă suport pentru abstractizarea interacțiunii
dintre producătorii și consumatorii de servicii
(contract decoupling)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
API (Application Programming Interface)
“any well-defined interface that defines
the service that one component, module, or application
provides to other software elements”
(de Souza et al., 2004)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
API „de succes” – adaptare după (Bloch, 2005)
ușor de învățat
facil de folosit, chiar și în lipsa documentației
previne utilizarea eronată
stabil și sigur
ușor de menținut
suficient de expresiv
facil de extins
implementare
vezi și S. Clarke, “Measuring API Usability”: http://drdobbs.com/windows/184405654
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
browser
modern
prezen-
tare
proce-
sare
abstrac-
tizare
date
recurgere la API
JSON, XML, CSV,…
server „slab”
(thin)
client „puternic”
(HTML5)
aplicație JavaScript
(eventual, via app store)
arhitectura aplicațiilor Web:
abordarea JavaScript via API
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
sistem
de
operare
prezen-
tare
proce-
sare
abstrac-
tizare
date
recurgere la API
JSON, XML, CSV,…
server „slab”
(thin)
client „isteț”
(smart device)
aplicație nativă
C#, Java, Obj-C, Swift,…
(uzual, via app store)
arhitectura aplicațiilor Web:
aplicații native (desktop și/sau mobile, smart TV)
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
brow-
ser
prezen-
tare
proce-
sare
abstrac-
tizare
date
API
JSON
et al.
server „slab”
(thin)client Web
arhitectura aplicațiilor Web:
abordarea hibridă (book reader, chioșc informativ)
server de
prezentare
pagini
HTML
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
brow-
ser
control
proce-
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
procesare
comenzi
BaaS
comenzi
produse
acces
la API
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
API public
(disponibil pe baza unei licențe de utilizare)
versus
API privat
(pentru uz intern)
implementare
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
editarea unei specificații de API
proiectul UReR (V. Vîrlan et al., 2017)
https://github.com/VirlanValentin/WADe_UReR
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
un API pentru API-uri la http://theapistack.com/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Modele tradiționale de afaceri vizând API-urile
implementare
John Musser, “API business models”, API Strategy Conference, 2013
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Modele actuale de afaceri privind API-urile
John Musser, “API business models”, API Strategy Conference, 2013
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
John Musser, “API business models”, API Strategy Conference, 2013
Modele actuale de afaceri privind API-urile
CPA – cost per action
CPC – cost per click
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Modele actuale de afaceri privind API-urile
John Musser, “API business models”, API Strategy Conference, 2013
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
SDK (Software Development Kit)
încapsulează funcționalitățile API-ului într-o bibliotecă
(implementată într-un anumit limbaj de programare,
pentru o platformă software/hardware specifică)
API façade pattern
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Mash-ups
exemplificare:
dorim să oferim o aplicație ce pune la dispoziție
informații din domeniul muzical
în funcție de activitățile fizice ale utilizatorului,
pe baza unor servicii Web publice
implementare
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
mash-ups
http://www.last.fm/api/rest
https://wiki.fitbit.com/display/API/Fitbit+API
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
mash-ups
acces la serviciile REST
despre formații + albume
via o cheie de autentificare
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
mash-ups
API-ul REST de la FitBit oferă
date în formatele JSON și XML
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
+ FiLa
aplicație Web
de tip mash-up
http://www.last.fm/api/rest
https://dev.fitbit.com/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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-uri
pentru dezvoltare
framework-uri Web generice
sau oferite de organizații
Instrumente interactive
(Web tools)
eventual, disponibile în cloud
Platforme
(Platform As A Service)
Heroku, Google Cloud Platform,
Nodejitsu, Windows Azure,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
mash-ups
Your Life on Earth (BBC)
www.bbc.com/earth/story/20141016-your-life-on-earth
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
mash-ups
lista mash-up-urilor: www.programmableweb.com/mashups/directory
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
Web component
parte a unei interfețe Web cu utilizatorul
ce î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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
implementare
(Web) app
a distributed computer software application designed for
optimal use on specific screen sizes and
with particular interface technologies
Robert Shilston, 2013
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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,...
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Web browser
app store
single
page
app
platform
(OS + device)
native
app
HTTP
WebSockets
adaptare după Adrian Colyer (2012)
aplicații
Web
și
servicii
(API-uri)
☁☁
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Câteva exemplificări
privind arhitectura unor aplicații Web?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi: exemplu – wot
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitectura inițială – conform (Cal Henderson, 2007)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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, SOAP
răspunsuri REST, XML-RPC, SOAP, JSON
www.flickr.com/services/api/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Creat aproape complet în Python (folosind Django)
și întreținut de 6 persoane
2½ backend developers
1¾ frontend developers
½ mobile developers
1½ designers
¾ system administrators
¾ business operations
A. Godwin, Inside Lanyrd’s Architecture, QCon London, 2013
http://www.infoq.com/presentations/lanyrd-architecture
arhitecturi: exemplu – lanyrd
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi: exemplu – lanyrd
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
proiect de licență al absolvenților Raluca Jalaboi & Bogdan
Spiridon (Facultatea de Informatică, UAIC Iași, 2015)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
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/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi: exemplu – groupon
arhitectură inițială
MVC tradițional
asigurarea performanței
scalabilitate cu CDN
(Content Distribution Network)
și servicii de acces la date
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi: exemplu – groupon
arhitectură eterogenă
implementări separate în funcție de zona geografică
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi: exemplu – groupon
oferirea suportului
pentru interacțiuni cu dispozitive mobile
API dedicat, accesul depinzând de localizarea utilizatorului
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitecturi: exemplu – groupon
reproiectare
(~20 de aplicații
Web separate,
independente)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
„concluzii”
Actualmente, aplicațiile Web
sunt exploatate și integrate continuu
(continuous integration & deployment)
fenomenul perpetual beta
a se vizita Museum of Modern Betas: momb.socio-kybernetics.net/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
„concluzii”
Un număr tot mai mare de aplicații (servicii)
populare disponibile on-line se bazează
pe conținut generat de utilizatori
de consultat statisticile oferite de Alexa: www.alexa.com/topsites
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rezumat
arhitectura aplicațiilor Web orientate spre servicii
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
episodul viitor:
aspecte vizând modelarea cunoștințelor
model de
acces la dateservicii Web
model de calcul
ofertant
de servicii mobile
mash-up-uri la nivel
de dispozitiv mobil
model de implementare
model de interacțiune
model de comunicare
model
al fluxului
de date
⚙
⚙
⚙
⚙
GraphQL
YQL

Contenu connexe

Tendances

Tendances (20)

Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
 
Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate s...
Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate s...Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate s...
Dezvoltarea aplicațiilor Web (3/12): Arhitectura aplicaţiilor Web orientate s...
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
 
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSTAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
 
Dezvoltator Web?! – ...în 2016
Dezvoltator Web?! – ...în 2016Dezvoltator Web?! – ...în 2016
Dezvoltator Web?! – ...în 2016
 
Web 2016 (01/13) Spațiul World Wide Web – aspecte arhitecturale
Web 2016 (01/13) Spațiul World Wide Web – aspecte arhitecturaleWeb 2016 (01/13) Spațiul World Wide Web – aspecte arhitecturale
Web 2016 (01/13) Spațiul World Wide Web – aspecte arhitecturale
 
CLIW 2017-2018 (12/12) Performanţa aplicaţiilor Web la nivel de client
CLIW 2017-2018 (12/12) Performanţa aplicaţiilor Web la nivel de clientCLIW 2017-2018 (12/12) Performanţa aplicaţiilor Web la nivel de client
CLIW 2017-2018 (12/12) Performanţa aplicaţiilor Web la nivel de client
 
Design (Web) responsiv
Design (Web) responsivDesign (Web) responsiv
Design (Web) responsiv
 
25 de ani de Web
25 de ani de Web 25 de ani de Web
25 de ani de Web
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Sabin Buraga – Dezvoltator Web (...în 2017)
Sabin Buraga – Dezvoltator Web (...în 2017)Sabin Buraga – Dezvoltator Web (...în 2017)
Sabin Buraga – Dezvoltator Web (...în 2017)
 
Sabin Buraga: Participând la Web
Sabin Buraga: Participând la WebSabin Buraga: Participând la Web
Sabin Buraga: Participând la Web
 
Ce înseamnă să fii dezvoltator Web
Ce înseamnă să fii dezvoltator WebCe înseamnă să fii dezvoltator Web
Ce înseamnă să fii dezvoltator Web
 
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
 
Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)
 
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
 
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
 
WADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 Microdata
WADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 MicrodataWADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 Microdata
WADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 Microdata
 
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziuneWADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 

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

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

STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul RESTWADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
 
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
 
CLIW 2014—2015 (3/12): Design Web. Interacţiune, utilizabilitate & metodologi...
CLIW 2014—2015 (3/12): Design Web. Interacţiune, utilizabilitate & metodologi...CLIW 2014—2015 (3/12): Design Web. Interacţiune, utilizabilitate & metodologi...
CLIW 2014—2015 (3/12): Design Web. Interacţiune, utilizabilitate & metodologi...
 
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
 
CLIW 2015-2016 (3/13) Design Web. Interacțiune, utilizabilitate, metodologii ...
CLIW 2015-2016 (3/13) Design Web. Interacțiune, utilizabilitate, metodologii ...CLIW 2015-2016 (3/13) Design Web. Interacțiune, utilizabilitate, metodologii ...
CLIW 2015-2016 (3/13) Design Web. Interacțiune, utilizabilitate, metodologii ...
 
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #3): Design Web. Inte...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #3): Design Web. Inte...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #3): Design Web. Inte...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #3): Design Web. Inte...
 
WADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
WADe 2017-2018 (1/12) Web Application Development: Concepts & VisionWADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
WADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
 
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de clientCLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
 
Ss1
Ss1Ss1
Ss1
 
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de cazCLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
 
WADe 2017-2018 (11/12) Ontology Engineering: Knowledge Management. Methodolog...
WADe 2017-2018 (11/12) Ontology Engineering: Knowledge Management. Methodolog...WADe 2017-2018 (11/12) Ontology Engineering: Knowledge Management. Methodolog...
WADe 2017-2018 (11/12) Ontology Engineering: Knowledge Management. Methodolog...
 
Sabin Buraga: Date de 5 stele
Sabin Buraga: Date de 5 steleSabin Buraga: Date de 5 stele
Sabin Buraga: Date de 5 stele
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
 
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
 

Plus de Sabin Buraga

Plus de Sabin Buraga (20)

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
 
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
 
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesHCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
 
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignHCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
 
HCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to FlowHCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
 
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) InteractionsHCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
 

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