Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Dezvoltarea aplicațiilor Web
aplicații Web: aspecte arhitecturale
Dr. Sabin Corneliu Buraga – profs.info.uaic.ro/~busaco/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
„Fiecare vis începe cu un visător.”
Harriet Tubman
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Care sunt arhitecturile software tipice pe baza cărora sunt dezvoltate aplicațiile Web de anvergură?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi
Calitatea aplicațiilor Web este influențatăde arhitectura pe care se bazează
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)
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
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
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ă,…
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
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.
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)…
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
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.
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi
Metodologii moderne – exemple:
aim42 – practici și șabloane privind evoluția, mentenanța, migrarea și îmbunătățirea sistemelor software
aim42.github.io
12 Factor App – vizând aplicațiile aliniate paradigmei SaaS (Software As A Service)
12factor.net12 Factor CLI Apps – aplicații în linia de comandă (J. Dickey, 2018)
medium.com/@jdxcode/12-factor-cli-apps-dd3c227a0e46
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
client(i)mandatar (proxy)
zid de protecție (firewall)intermediar(i) (middleware)
server(e) Webserver(e) de aplicații Web
cadre de lucru, biblioteci, alte componenteserver(e) de stocare persistentă – e.g., baze de date
server(e) de conținut multimediaserver(e) de management al conținutului – e.g., CMS, wiki
aplicații/sisteme tradiționale (legacy)
„ingrediente” tipice
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
client(i)mandatar (proxy)
zid de protecție (firewall)intermediar(i) (middleware)
server(e) Webserver(e) de aplicații Web
cadre de lucru, biblioteci, alte componenteserver(e) de stocare persistentă – e.g., baze de date
server(e) de conținut multimediaserver(e) de management al conținutului – e.g., CMS, wiki
aplicații/sisteme tradiționale (legacy)
eventual, recurgând la servicii în „nori” – cloud computingpartajarea la cerere a resurselor de calcul și a datelor cu alte
calculatoare/dispozitive pe baza tehnologiilor Internet (găzduire, infrastructură scalabilă, procesare paralelă, monitorizare,…)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Esențialmente, de considerat:
preluarea și dirijarea cererilor – dispatch
oferirea funcționalităților de bază – core services
asocierea dintre construcții/abstracțiuni software (e.g., obiecte) și modele de date – mapping
managementul datelor – data
monitorizarea și evaluarea sistemului – metrics
adaptare după Matt Ranney, “What I Wish I Had Known Before Scaling Uber to 1000 Services”, GOTO Chicago 2016
highscalability.com/blog/2016/10/12/lessons-learned-from-scaling-uber-to-2000-engineers-1000-ser.html
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi web
Stratificate (layered)Conduse de evenimente (event-driven)
Extensibile (microkernel / plug-in)Folosind micro-servicii (micro-services)
„În nori” (space-based, cloud)
conform M. Richards, Software Architecture Patterns, O’Reilly, 2015 www.oreilly.com/programming/free/files/software-architecture-patterns.pdf
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi webStratificate (layered)
N-tier architecture – abordare de facto
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi web
Stratificate (layered)
demarcarea responsabilităților (separation of concerns)
fiecare strat are un rol bine-stabilit, componentele unui strat vizând funcționalitățile acestuia
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi web
Stratificate (layered)
izolare (layers of isolation)
modificările operate la un anumit strat nu au impact sau nu afectează componentele din alt strat
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi web
Stratificate (layered)
architecture sinkhole anti-pattern
fluxul de cereri traversează fiecare strat, fără a se efectua procesări semnificative în cadrul acestuia
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
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi webConduse de evenimente (event-driven)
mediatorevenimente procesate
în mai mulți pași, necesitând orchestrare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi webConduse de evenimente (event-driven)
broker – fluxul de mesaje este distribuit componentelor de procesare a evenimentelor
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi 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
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi webFolosind micro-servicii
componente separate, distribuite (separately deployed units)decuplare maximă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi web
Folosind micro-servicii
abordări:bazate pe API-uri (API-based)
aplicație recurgând la REST (application REST-based)mesagerie centralizată (centralized messaging)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi webFolosind micro-servicii
API-basedaplicația Web expune servicii individuale, punctuale,
de sine-stătătoare (self-contained) via un API
fine-grained service components
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi webFolosind micro-servicii
application REST-basedcererile sunt recepționate tradițional (nu prin API)fiecare funcționalitate este accesată intern via REST
coarse-grained service components
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi webFolosind micro-servicii
centralized messagingaccesare a componentelor interne via un broker „ușor”
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
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi web
„În nori” (space-based, cloud)consideră și rezolvă problemele vizând scalabilitatea și concurența unui volum impredictibil de mare de cereri
tuple spacedatele aplicației sunt păstrate în memorie și replicate
de toate unitățile de procesare active
fără stocare centralizatădistributed shared memory
wiki.c2.com/?TupleSpace
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi web„În nori” (space-based, cloud)
middleware virtualizatinclude componente controlând sincronizarea datelor,
procesarea cererilor, accesul la platforma de execuție (deployment),…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi web„În nori” (space-based, cloud)
unitate de procesarereprezentată de un (micro-)serviciu Web
sau o componentă software tradițională la nivel de backend
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
anumite funcționalități pot fi gestionate „în propria ogradă” (on-premises)
sau de un furnizor de servicii disponibile „în nori”
conform (Eizadirad, 2017)www.linkedin.com/pulse/iaas-paas-saas-explained-compared-arsalan-eizadirad
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
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
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
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi web
aspecte de interes:✓ agilitate✓ exploatare✓ testabilitate✓ performanță✓ scalabilitate✓ dezvoltare
Richards (2015)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Prin ce mijloace poate fi implementată o aplicație Web?
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ă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Server de aplicații Web
simplifică invocarea de programe (script-uri)
generarea de conținut dinamic pe partea de server
(re)vezi prezentarea despre inginerie Web:profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html#week3
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
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Server de aplicații Web
poate încuraja sau impune o viziune arhitecturalăprivind dezvoltarea de aplicații Web
situație tipică:MVC ori variații (Herberto Graca, 2017)
herbertograca.com/2017/08/17/mvc-and-its-variants/
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)
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ă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Diverse framework-uri care facilitează dezvoltarea de aplicații Web aliniate problematicilor Web-ului semantic:
Apache Jena (Java) – jena.apache.org
Apache TinkerPop (Java) – tinkerpop.apache.org
Eclipse RDF4J (Java) – rdf4j.org
LODQA (JS) – github.com/lodqa/lodqa
OSF (PHP, Clojure) – opensemanticframework.org
Semantic MediaWiki (PHP) – www.semantic-mediawiki.org
Silk (Java) – silkframework.org
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
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
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Biblioteci cu acces liber la codul-sursă
exemple – aliniate problematicilor Web-ului semantic:
banana-rdf (Scala) – github.com/banana-rdf/banana-rdf
d3sparql (JS) – github.com/ktym/d3sparql
dotNetRDF (C#) – www.dotnetrdf.org
FaCT++ (C++) – bitbucket.org/dtsarkov/factplusplus
OWL API (Java) – github.com/owlcs/owlapi
RDFLib (Python) – rdflib.readthedocs.io
Redland RDF Libraries (C) – librdf.org
Sgvizler (JS) – mgskjaeveland.github.io/sgvizler/
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
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi webarhitecturistratificate(N-tier Web
applications)
bazate pe servicii Web
M. Richards,Software
Architecture Patterns,
O’Reilly, 2015
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
aspecte de interes – vizând, în special, SOA:tipul serviciului
rolul serviciului în cadrul arhitecturii software
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
business service
“abstract, high-level, coarse-grained services that define the core business operations that are performed
at the enterprise level”
Mark Richards (2016)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
business service
independent de implementare
specifică numele operațiilor oferite, tipul parametrilor de intrare, tipul rezultatului
(e.g., via WSDL – Web Service Description Languagesau OpenAPI Specification)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
business service
opțional, pot fi definite reguli de orchestrare (contextul execuției serviciului)
uzual via BPEL – Business Process Execution Language
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
enterprise service
reprezintă un serviciu concret – e.g., componentă middleware –implementând funcționalitățile
definite de serviciul de tip business
abordare coarse-grained
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
enterprise service
în relație one-to-one sau one-to-manycu serviciile abstracte de tip business
poate fi partajat la nivelul organizației
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
application service
“fine-grained, application-specific servicethat is bound to a specific application context”
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
application service
oferă funcționalități specifice, punctuale
apelabil via o interfață cu utilizatorul ori via un serviciu de tip enterprise
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
infrastructure service
pune la dispoziție operații interne (private)
invocat de servicii disponibile la nivel de aplicație (application services) sau
organizațional (enterprise services)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
clasificare a serviciilor la care poate recurge o aplicație Web dezvoltată
conform principiilor SOA M. Richards, Microservices vs. SOA, O’Reilly, 2016
businessservice
enterprise service
enterprise service
enterprise service
application service
application service
infra-structure
serviceinfra-
structureservice
messaging middleware
enterprise service
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
messaging middleware
folosit la coordonarea apelurilor de servicii
denumit și integration hub ori ESB – Enterprise Service Bus (magistrală de servicii la nivel organizațional)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
messaging middleware
roluri: mediere (mediation)
și dirijare (routing)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
“the capability of the architecture to locate and invoke a service (or services) based on a specific business
or user request” (Richards, 2016)
existența unei componente de descoperire a serviciilor (service registry)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
messaging middleware
rol: message enhancement
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
“the capability of the architecture to modify, remove, or augment the data portion of a request
before it reaches the service” (Richards, 2016)
exemple: conversii privind formatul, adăugarea unor date derivate/calculate ad-hoc etc.
USA: CUSIP (Committee on Uniform Security
Identification Procedures)
UK: SEDOL (Stock Exchange Daily
Official List)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Serviciu Web
messaging middleware
rol: transformare a mesajelor/protocoalelor
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
message transformatione.g., JSON ↔ Java, JSON ↔ PDO (PHP Data Objects)
JavaScript Object Notation Plain Old Java Object
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
protocol transformationREST
cu HTTP RMI-IIOP
AMQP
RMI-IIOP (Java Remote Method Invocation over Internet Inter-ORB Protocol)
www.oracle.com/technetwork/java/rmi-iiop-139743.html
AMQP (Advanced Message Queuing Protocol)www.amqp.org
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Micro-serviciu
implementează o funcționalitate specifică, oferită la nivel de unic proces
self-contained system
componentă la nivel de backend dezvoltată cu scopul de a fi înlocuită, nu de a fi reutilizată
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
smalleach running in its own process
lightweight communication mechanisms (usual, HTTP)built around business capabilities
independently deployableminimum of centralized management
may be written in different programming languagesmay use different data storage mechanisms
caracteristici ale micro-serviciilor conformJames Lewis & Martin Fowler, Microservices (2014)
martinfowler.com/articles/microservices.html
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
coaplicație monolitică(N funcționalități într-un unic proces)
◉ ▲✸ ⧓
◉ ▲✸ ⧓
◉ ▲✸ ⧓
◉ ▲✸ ⧓
◉ ▲✸ ⧓
scalabilitate prin replicarea monolitului pe S servere
scalabilitate prin distribuirea serviciilor între servere, replicându-le conform
necesităților
◉▲
✸
micro-servicii(fiecare funcționalitate serviciu separat)
◉ ◉
▲▲
◉ ✸
▲▲
✸ ✸
▲ ✸
micro-serviciumodularitate, descentralizare și evoluție permanentă
exemple de bună practică: microservices.io
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Beneficii ale micro-serviciilor:
izolareautonomie
scalabilitate individualăreziliență
vitezăsuport pentru experimentare
feedback rapidflexibilitate
ușor de înlocuitecosistem
S. Tilkov, A Question of Size – Modularization & Microservices, Java Forum Nord 2017:
speakerdeck.com/stilkov/a-question-of-size-modularization-and-microservices
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
micro-servicii
Funcționale (functional services)
implementează funcționalități specifice (business operations)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
micro-servicii
Funcționale (functional services)
implementează funcționalități specifice (business operations)
expuse consumatorului de servicii
independente (fără efecte colaterale – side effects)
nu sunt partajabile uzual
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
micro-servicii
Control – infrastructură (infrastructure services)
implementează activități non-funcționale: autentificare, autorizare, jurnalizare, monitorizare,…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
micro-servicii
Control – infrastructură (infrastructure services)
implementează activități non-funcționale: autentificare, autorizare, jurnalizare, monitorizare,…
nu sunt expuse în exterior – private
pot fi partajate la nivel de aplicație ori servicii interne
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
de la cereri efectuate de client la obținerea răspunsului oferit de API via micro-servicii funcționale
bazate pe cele vizând infrastructura
M. Richards, Microservices vs. Service-Oriented Architecture, O’Reilly, 2016
client requests
API layer
functional service infrastructure service
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
micro-servicii
Aspect de interes:
proprietar – ownership+
coordonare – coordination
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
micro-servicii
Aspect de interes:
partajarea funcționalităților
share-as-much-as possible – SOA clasicversus
share-as-little-as possible – micro-servicii
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
micro-servicii
Aspect de interes:
comunicarea – uzual, asincronă – între (micro-)servicii
abordări:point-to-point
sau publish-subscribe
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
intern, (micro-)serviciile pot comunica recurgând la publish-subscribe
WebSub (recomandare W3C, 2018): www.w3.org/TR/websub/
simplificarea accesului clientului
via API
Jonas Bonér(2016)
service serviceservice
API gateway
service
even
ts
even
ts
sub
subscribe
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
micro-servicii
Uzual, arhitecturile ce recurg la micro-serviciinu includ componente middleware
și nu oferă suport pentru abstractizarea interacțiunii dintre producătorii și consumatorii de servicii
(contract decoupling)
μSOA – Micro-Service Oriented Architecture
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitectură bazată pe servicii Web
arhitectură recurgând la micro-servicii
Z. Dehghani, How to break a Monolith into Microservices (2018)martinfowler.com/articles/break-monolith-into-microservices.html
cazuri concrete: Amazon, Groupon, Netflix,… de studiat prezentările lui Stefan Tilkov: speakerdeck.com/stilkov
frontend (FE)
ser-vice
ser-vice
ser-vice
DB
client
ser-vice
DB
FE FE FE
client
DB
ser-vice
ser-vice
DB
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
micro-servicii: dezvoltare
Platforme: Cocaine, Deis, Fabric8, Hook.io, OpenWhisk,…
Framework-uri: Akka, Baratine, Finagle, Ice, Orbit, Vert.X, Wangle etc.
SDK-uri multi-limbaj: Apex, CoAP, gRPC, Hprose
multe alte instrumente software enumerate lagithub.com/mfornos/awesome-microservices
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Accesul la un (micro-)serviciu are loc uzual pe baza unei interfețe de programare a aplicației
API (Application Programming Interface)
“any well-defined interface that definesthe service that one component, module, or application
provides to other software elements”(de Souza et al., 2004)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
API „de succes” – adaptare după (Bloch, 2005)
ușor de învățatfacil de folosit, chiar și în lipsa documentației
previne utilizarea eronatăstabil și sigur
ușor de menținutsuficient de expresiv
facil de extins
implementare
vezi și S. Clarke, “Measuring API Usability”: drdobbs.com/windows/184405654
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Componentă software concepută și invocată via tehnologiile Web actuale
(URI, HTTP, formate de date: JSON, XML)
poate fi dezvoltată conform unui stil arhitecturale.g., REST (REpresentational State Transfer)
vezi cursul trecut
implementare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
De la aplicații la API-uri și servere de aplicații
Brian Mulloy, Web API Design, Apigee, 2016docs-apis.apigee.io/files/Web-design-the-missing-link-ebook-2016-11.pdf
😍
customer⧉
app
dev💡
API
API
team
⛮🛢️backend
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
API public (disponibil pe baza unei licențe de utilizare)
versus
API privat(pentru uz intern)
implementare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
browsermodern
prezen-tare
proce-sare
abstrac-tizaredate
recurgere la API
JSON, XML, CSV,…
server „slab” (thin)
client Web modern(HTML5)
aplicație JavaScript(eventual, via app store)
API: abordare client – JavaScript
browser Web pe calculatoare convenționale, dispozitive
mobile și altele
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co
browsermodern
prezen-tare
proce-sare
abstrac-tizaredate
recurgere la API
JSON, XML, CSV,…
server „slab” (thin)
client Web modern(HTML5)
aplicație JavaScript(eventual, via app store)
implementarea aplicației JavaScript poate recurge la biblioteci, framework-uri, componente specifice
e.g., Angular, React, Vue
API: abordare client – JavaScript
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
sistem de
operare
prezen-tare
proce-sare
abstrac-tizaredate
recurgere la API
JSON, XML, CSV,…
server „slab” (thin)
client nativ modern(smart device)
aplicație nativăC#, Kotlin, Swift,…
(uzual, via app store)
API: aplicații native
desktop și/sau mobile, smart TV, home appliance,
dispozitiv ambiental
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
sistem de
operare
prezen-tare
proce-sare
abstrac-tizaredate
recurgere la API
JSON, XML, CSV,…
server „slab” (thin)
client nativ modern(smart device)
aplicație nativăC#, Kotlin, Swift,…
(uzual, via app store)
implementarea aplicației native poate recurge la biblioteci, framework-uri, componente specifice
e.g., Apache Cordova, Flutter, Ionic, React Native, NW.js
API: aplicații native
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
brow-ser
prezen-tare
proce-sare
abstrac-tizaredate
API
JSONet al.
server „slab” (thin)
client Web„prostuț” (dumb)
server de prezentare
pagini
HTML
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
API: abordare bazată pe intermediari
book readerchioșc informativ
automobil
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
API: în contextul serverless
Aplicația depinde semnificativ de componente externe, disponibile în „nori”
(micro-)servicii expuse via API
abordarea serverless
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
API: în contextul serverless
Serverless
strat de abstractizare a accesului la resurseleunei platforme de tip cloud
Mike Roberts (2018) martinfowler.com/articles/serverless.html
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
brow-ser
controlproce-
sare
client modern
BaaS
func-ționa-litate1
func-ționa-litate2
auten-tificare
☁
BaaS = (Mobile) Backend As A Service FaaS = Functions As A Service
FaaS
căutare
procesarecomenzi
BaaS
comenzi
produse
acces la API
API: în contextul serverless
☁
☁
☁
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
API: în contextul serverless
FaaS – Functions As A Service
funcții (cloud functions) implementând funcționalitățiexpuse consumatorului de servicii
as small as possible
uzual, implementări sub 100 de linii de cod
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
API: în contextul serverless
FaaS – Functions As A Service
executate – la nivel de server – independent și asincron,fără a cauza efecte colaterale
declanșate de evenimente
utilizatorul nu e preocupat de managementul resurselorși alte sarcini
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
API: în contextul serverless
BaaS – Backend As A Service
încapsulează servicii de infrastructură ce implementeazăactivități non-funcționale
(autentificare, autorizare, jurnalizare, monitorizare etc.)
private – nu sunt expuse în exterior
pot fi partajate de serviciile interne
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
API: în contextul serverless
Serverless computing = FaaS + BaaS
a se consulta și articolul Sabin Buraga, Aspecte arhitecturale
vizând dezvoltarea de aplicații serverless (2019)itransfer.space/aspecte-arhitecturale-vizand-dezvoltarea-de-aplicatii-serverless/
resurse + soluții software:github.com/anaibol/awesome-serverless
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Cum poate fi descrisă interfața unui API?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
OpenAPI Specification (ex-Swagger) – openapis.org
RAML (RESTful API Modeling Language) – raml.org
API Blueprint – apiblueprint.org
alte resurse de interes:github.com/Kikobeats/awesome-api
API: descriere abstractă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
OpenAPI Specification
soluție modernă de a declara – independent de platformă –interfața publică a unui API REST
versiunea curentă: OpenAPI 3.0.2 (septembrie 2019)
formate folosite: JSON (JavaScript Object Notation) și/sau YAML (Yet Another Markup Language)
API: descriere abstractă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
OpenAPI Specification
biblioteci de procesare – exemple:KaiZen OpenAPI Parser (Java)
Microsoft.OpenApi.net (C#)Open API Definition Parser (Ruby)Spectral (JavaScript, TypeScript)
API: descriere abstractă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
OpenAPI Specification
creare de servicii (puncte terminale – end-points) pe baza unui document OpenAPI:
Exegesis (Node.js)FastAPI (Python)
Fusio (PHP, JavaScript)PHP-CRUD-API (PHP)
Vert.x (Java, Kotlin, JS, Ruby, Scala,…)
API: descriere abstractă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
OpenAPI Specification
generatoare de cod – exemplificări:BaucisJS (Node.js)
gnostic (Go)WebSphere Liberty (Java)
ZRO (Ruby on Rails)
API: descriere abstractă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
API: descriere abstractă
OpenAPI Mapopenapi-map.apihandyman.io/?version=3.0
explorarea vizuală a construcțiilor
OpenAPI Specification
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
API: descriere abstractă
{"openapi": "3.0.0","paths": {
"/resource": { // acces la reprezentarea resursei desemnate de /resource"get": {
"operationId": "service","parameters": [ {
"name": "parameter","in": "query", // parametru adăugat URL-ului (în query string)"schema": { "type" : "string" }
} ],"responses": {
"200": {"description": "Success","schema": { // descrie (via JSON Schema) răspunsul oferit
"$ref":"#/definitions/Response"}
}}
}}
„scheletul” unui document OpenAPI specificând un API
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
editarea unei specificații de APIproiectul UReR (V. Vîrlan et al., 2017)
github.com/VirlanValentin/WADe_UReR
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Modele tradiționale de afaceri vizând API-urile
implementare
John Musser, “API business models”, API Strategy Conference, 2013
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Modele actuale de afaceri privind API-urile
John Musser, “API business models”, API Strategy Conference, 2013
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
John Musser, “API business models”, API Strategy Conference, 2013
Modele actuale de afaceri privind API-urile
CPA – cost per actionCPC – cost per click
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Modele actuale de afaceri privind API-urile
John Musser, “API business models”, API Strategy Conference, 2013
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
SDK (Software Development Kit)
încapsulează funcționalitățile API-ului într-o bibliotecă(implementată într-un anumit limbaj de programare,
pentru o platformă software/hardware specifică)
API façade pattern
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
SDK (Software Development Kit)
încapsulează funcționalitățile API-ului într-o bibliotecă(implementată într-un anumit limbaj de programare,
pentru o platformă software/hardware specifică)
API façade pattern
exemplu: Octokit (Go, Java, .NET, Node.js, Ruby,…) oferit de Github – developer.github.com/v3/libraries/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Mash-ups
combinarea – la nivel de client și/sau server –a datelor ce provin din surse (situri) multiple, oferindu-se o funcționalitate/experiență nouă
„curentul” SaaS (Software As A Service)
implementare la nivelul: clientului (browser-ului) Web și/sau serverului Web
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Mash-ups
combinare – surse de date (eterogene) multiple
agregare – analizarea datelor e.g., via machine/deep learning, deducții automate,…
vizualizare – redarea datelor agregate
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare: mash-ups
Surse de date(data feeds)
Atom, RSS, geoRSS, microdate HTML5, RDFa,…
Interfețe de programare(API-uri)
specifice serviciilor publiceși de procesare JSON/XML/RDF
Biblioteci/framework-uripentru dezvoltare
framework-uri Web genericesau oferite de organizații
Instrumente interactive(Web tools)
eventual, disponibile în „nori”
Platforme(Platform As A Service)
Digital Ocean, Heroku, Google Cloud Platform, MS Azure,…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
mash-ups
Selfiexploratory – selfiecity.net/selfiexploratory/
Nukemap – nuclearsecrecy.com/nukemap/
Coinorama – github.com/coinorama/
PopURLS – popurls.com
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
mash-ups
lista mash-up-urilor: www.programmableweb.com/mashups/directory
multe alte API-uri publice la github.com/toddmotto/public-apis
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
performanță: scalabilitatea și latența
limite ale API-urilor + existența versiunilor multiple
drepturi de autor asupra datelor și licențiere
securitate: abuz, confidențialitate, încredere etc.
monetizare
lipsa unei interoperabilități reale între platforme
implementare: mash-ups
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
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
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
Web component
dezvoltare bazată pe o bibliotecă/framework JS
soluții – uzual, la nivel de client: Polymer, React, X-Tag,…
în lucru la Consorțiul Web (septembrie 2019)github.com/w3c/webcomponents/
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)
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,…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
(Web) app
a distributed computer software application designed foroptimal use on specific screen sizes and
with particular interface technologiesRobert Shilston, 2013
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Web browser
SPASingle Page App
platform(OS + device)
native app
HTTPWebSockets
adaptare după Adrian Colyer (2012)
aplicații Web
șiservicii
(API-uri)
app store
☁ ☁
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
implementare
SPA (Single Page Applications)
rescrierea dinamică – pe baza transferului asincron al datelor –
a conținutului documentului HTML (paginii Web)în urma interacțiunii cu utilizatorul
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
structura de bază a unei SPAde studiat Mikito Takada, Single Page Apps in Depth (2017)
singlepageappbook.com
ⵄ DOM
▣ view
▦model
⧆ template
🛢️storage
▸▹events
changes
observes
renders
queries &writes to
emits
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
write-only DOMnu sunt preluate date din DOM
managementul stării se face independent de DOM
ⵄ DOM
▣ view
▦model
⧆ template
🛢️storage
▸▹events
changes
observes
renders
queries &writes to
emits
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
models are the single source of truthmodelele reprezintă toate datele/stările aplicației Web și
sunt păstrate în memorie
ⵄ DOM
▣ view
▦model
⧆ template
🛢️storage
▸▹events
changes
observes
renders
queries &writes to
emits
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro
/~busa
co
views observe model changesview-urile reflectă conținutul modelelor și
primesc notificări de actualizare din partea modelelor
ⵄ DOM
▣ view
▦model
⧆ template
🛢️storage
▸▹events
changes
observes
renders
queries &writes to
emits
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
decoupled modules that expose small external surfacesarhitectura aplicației este compusă din
sub-sisteme (module) independente, specializatepachete expunând o interfață simplă publică
ⵄ DOM
▣ view
▦model
⧆ template
🛢️storage
▸▹events
changes
observes
renders
queries &writes to
emits
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
minimizing DOM dependent-codeminimizarea și izolarea codului JS
vizând manipularea arborelui DOM
ⵄ DOM
▣ view
▦model
⧆ template
🛢️storage
▸▹events
changes
observes
renders
queries &writes to
emits
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
SPA (Single Page Applications)
managementul stării aplicației la momentul rulării
URL ↔ stare
starea curentă a view-ului e dependentă de URL uzual, de #fragment-identifier
tools.ietf.org/html/rfc3986#section-3.5
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
SPA (Single Page Applications)
definirea unor componente ce ulterior pot fi inițializate
suport pentru reutilizare
aceste componente pot fi încărcate asincron(eventual, la cerere) via module
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
componente majore ale unei SPA (Patrick Ackerman, 2017)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
SPA (Single Page Applications)
uzual, se bazează pe paradigma de programare (funcțională) reactivă
(FRP – functional reactive programming)
aspecte formale în C. Elliot & P. Hudak, Functional Reactive Animation, ICFP 1997
conal.net/papers/icfp97/
github.com/conal/talk-2015-essence-and-origins-of-frp
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
SPA (Single Page Applications)
programare (funcțională) reactivă (FRP – functional reactive programming)
paradigmă declarativă vizând fluxuri de date prelucrate asincron
(event stream, observable)
a stream a sequence of ongoing events ordered in timegist.github.com/staltz/868e7e9bc2a7b8c1f754
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
orice modificare a valorii unei structuri de date ce poate fi observată (Observable) determină propagarea
unui eveniment ce poate fi tratat asincron (via Promise) de entitățile ce depind de această structură
www.sitepoint.com/graphql-react-native-getting-started/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
SPA (Single Page Applications)
programare (funcțională) reactivă (FRP – functional reactive programming)
studii de caz concrete + resurse:www.infoq.com/reactive-programming/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
SPA (Single Page Applications)
framework-uri/biblioteci – la nivel de client Web: Angular, Aurelia, Ember.js,
Meteor.js, Mithril, React, RxJS, Turbine,…
aspecte privind interacțiunea cu utilizatorul:One Page Love – onepagelove.com
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
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
dezvoltare
Recurgerea la medii de dezvoltare
exemplificări – aplicații native (pentru desktop):Anjuta, Aptana Studio, Eclipse, Emacs, IntelliJ IDEA,
KomodoIDE, Padre, PHPStorm, PyCharm, RubyMine,Visual Studio, Zend Studio
soluții bazate pe cloud computing:AWS Cloud9, Codenvy, Koding etc.
S. Buraga, „Cu codul în nori”: www.slideshare.net/busaco/cu-codul-n-nori
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
instrumente de dezvoltare (IDE)
dezvoltare
rulare
mediu de execuție(runtime environment)
cod-sursă stocat(code repositories)
A. I
qb
al, M
. Hau
nse
nb
las,
S. D
eck
er (
20
12
)
Development as a Service
☁
☁☁
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
instrumente de dezvoltare (IDE)
dezvoltare
rulare
mediu de execuție(runtime environment)
cod-sursă stocat(code repositories)
☁
☁☁
Web: AWS Cloud9, Koding, Ideone etc.desktop: Eclipse, Visual Studio (Code),…
BitBucket,GitHub
instrumente utile la github.com/ripienaar/free-for-dev
DigitalOcean, Google Cloud Platform, Heroku,Jelastic, OpenStack, Windows Azure,…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Câteva exemplificări privind arhitectura unor aplicații Web?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi: exemplu – wot
Web of Things Architecture(în lucru la W3C, 11 octombrie 2019)
descriere independentă de implementare a unui sistem IoT(Internet of Things) ce recurge la tehnologii Web
w3c.github.io/wot-architecture/
RDF
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi: exemplu – wot
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
studiu de caz: flickr
Scop:partajare on-line a conținutului grafic (fotografii)
aplicație reprezentativă a Web-ului social
agregare de comunități – imaginea ca obiect social
suport pentru adnotări via termeni de conținut (tagging)+ comentarii
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
studiu de caz: flickr – tehnologii
PHP (procesare – application logic, acces la API,prezentare de conținut via Smarty, modul de e-mail)
Perl (validarea datelor)Java (managementul nodurilor de stocare)
MySQL (stocare în format InnoDB)ImageMagick (bibliotecă C de prelucrare de imagini)
Ajax (interacțiune asincronă)Linux (platformă de rulare)
alte detalii la highscalability.com/flickr-architecture
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitectura inițială – conform (Cal Henderson, 2007)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
studiu de caz: flickrinterfețe de programare (API-uri)oferite de Flickr
facilitează accesul la serviciile Web în cadrul aplicațiilor rulând
pe platforme variate
cereri via REST, XML-RPC, SOAPrăspunsuri REST, XML-RPC, SOAP, JSON
www.flickr.com/services/api/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
aspecte generice vizând proiectarea sistemului:
categorii de resurse: user + picture
relații între instanțe de tip user (e.g., follow)
relații între instanțe de tip user și picture(make, depicts, comment, like,…)
asigurarea performanței: timp de răspuns, arhitectură software scalabilă,
stocare persistentă scalabilă, optimizarea imaginilor
recomandarea resurselor (user/picture) de interes
detalii în articolul Create a Photo Sharing App (2016) blog.gainlo.co/index.php/2016/03/01/system-design-interview-question-create-a-photo-sharing-app/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Scop: oferire de conținut video la cerere (streaming) + televiziune Web (Web TV)
servicii disponibile pe dispozitive/platforme multiple
exploatare „în nori”
recurge și la tehnologii deschise
studiu de caz: netflix
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
studiu de caz: netflix
aspecte de interes: conținut – filme, emisiuni TV,…
stocare + (de)codificare (transcoding)difuzare adaptivă în timp-real (adaptive streaming)
redare (playback) – suport pentru dispozitive eterogene
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
procesare backend Java, Python, Node.js (JavaScript)
procesare frontend React, winjs (JavaScript)
sisteme de stocareMySQL, Apache Cassandra, Apache Hadoop, Apache Hive, Oracle DB
servicii în „nori”Amazon EC2 (procesare video)Amazon S3 (stocare)
servicii SQL Amazon RDS (Relational DB Service)
servicii NoSQL Amazon DynamoDB
management de cod GitHub (implementat în Ruby + C)
integrare continuă Jenkins (implementare Java)
gestionare servere Apache Mesos (implementare C++)
distribuire de conținut(content distribution network)
Open Connect CDN (FreeBSD, Nginx), Akamai, Level 3, Limelight
monitorizare Boundary, LogicMonitor, Vector,…
highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html
stackshare.io/netflix/netflix
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Scop: aplicație Web pentru managementulciclului de dezvoltare software via Git
de la planificarea proiectului și gestiunea codului-sursăpână la integrare continuă și monitorizare
distribuit liber (community edition) – instalabil pe Linux –ori prin subscripții (enterprise edition)
docs.gitlab.com/ee/development/architecture.html
about.gitlab.com/handbook/engineering/infrastructure/production-architecture/
studiu de caz: gitlab
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
studiu de caz: gitlab
reverse proxy: NGINX server Web: Unicorn stocare persistentă: PostgreSQL (utilizatori, meta-date), Redis (sesiuni Web, cache, cozi de mesaje) acces la Git: Gitaly procesare cozi de mesaje: Sidekiq monitorizare (metrici): Prometeus infrastructură: Terraform
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
studiu de caz: groupon
Scop: prezentarea de oferte privind bunuri de consum
de la o arhitectură monolitică la una adoptând (micro-)servicii
engineering.groupon.com/2013/misc/i-tier-dismantling-the-monoliths/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi: exemplu – groupon
arhitectură inițială MVC tradițional
asigurarea performanței scalabilitate cu CDN
(Content Distribution Network) și servicii de acces la date
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi: exemplu – groupon
arhitectură eterogenăimplementări separate în funcție de zona geografică
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi: exemplu – groupon
oferirea suportului pentru interacțiuni cu dispozitive mobile
API dedicat, accesul depinzând de localizarea utilizatorului
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
arhitecturi: exemplu – grouponreproiectare
(~20 de aplicații Web separate, independente)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Aplicație Web
Procesare la nivel de server (backend)
Stocare persistentă
Amazon Perl, Java
MySQL (MariaDB), Amazon DynamoDB,Amazon SimpleDB,Amazon ElastiCache
CourseraDjango (Python), Node.js (JavaScript), Play (Scala)
MySQL, Apache Cassandra
DuckDuckGo
Node.js, Perl PostgreSQL
FacebookHack, PHP (HHVM), Tornado (Python), Java, JavaScript
RocksDB, Presto,Cassandra, Beringei
Google C++, Dart, Go, Java, Python BigTable, MariaDB
Linkedin Grails (Java), JavaScript, ScalaMySQL, Oracle DB, RocksDB, Hadoop
stackshare.io/stacks
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Aplicație Web
Procesare la nivel de server (backend)
Stocare persistentă
LyftPHP, Flask (Python), Java, Go, C++
MongoDB, DynamoDB, Redis
Medium Node.js, GoNeo4j, DynamoDB,Redis
Pinterest Django (Python), Java, GoMySQL, Hadoop, Apache HBase, Redis, Memcached
StackOverflow
.NET Framework (C#) MS SQL Server, Redis
SoundCloud
Clojure, Scala, JRuby MySQL
Wikipedia PHP (HHVM), Node.js MySQL
stackshare.io/stacks
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rezumat
arhitectura aplicațiilor Web orientate spre servicii
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
episodul viitor: aspecte vizând modelarea cunoștințelor
model de acces la dateservicii Web
model de calcul
ofertantde servicii mobile
mash-up-uri la nivelde dispozitiv mobil
model de implementaremodel de interacțiune
model de comunicare
model al fluxului
de date
⚙⚙
⚙⚙
GraphQLet al.