Vés al contingut (premeu Retorn)

Arquitectura tecnològica

Software base

Genweb UPC v4 és una adaptació de l'eina de gestió de continguts web Plone. Està programat a sobre del servidor d'aplicacions web Zope i està basat enterament en el llenguatge de programació Python. Així doncs, a nivell de tecnologies emprades tenim un esquema de capes com el que mostra la imatge següent:

 img-pyton-zope-plone

 

El Plone és un producte CMS (Content Management System) que ens permet crear webs intranets i extranets de manera molt fàcil i ràpida. Proporciona una base sobre la qual es van muntant extensions o mòduls que afegeixen funcionalitats al Plone. Aquests mòduls s'anomenen "Products" o productes. El Plone és una aplicació desenvolupada en python que funciona sobre un servidor d'aplicacions web, que també està desenvolupat en python i que s'anomena Zope.

El Zope porta un servidor web propi, el Zserver, sobre el qual es poden anar muntant aplicacions web desenvolupades per a funcionar sobre aquest marc, com per exemple, el Plone.

 A més, s'ha fet una selecció de les eines més interessants existents per a Plone, i s'ha fet una adaptació per a Genweb. Moltes són eines de caràcter col·laboratiu i de treball en grup, altres milloren la experiència i usabilitat del gestor de continguts. Per a més informació, podeu veure la llista de prestacions. Aquests són alguns dels productes utilitzats:

  • PloneFormGen
  • Collage
  • PlonePopoll

S'ha treballat molt també en la usabilitat de l'eina, per a que persones amb coneixement no tècnic puguin fàcil i ràpidament construir el seu web en poques hores.

Plone és extensible: una de les característiques de Plone és que pot créixer en funcionalitats gràcies a la instal·lació del que s’anomenen productes, paquets instal·lables que poden augmentar, en molts sentits, les funcionalitats de Plone. Un producte pot ser una eina o pot ser un tipus de contingut

Base de dades del servei

La base de dades utilitzada és la ZODB (Zope Object DataBase), que és la base de dades que utilitza el servidor d'aplicacions Zope. La ZOBD és una base de dades que té la peculiaritat de ser  totalment orientada a objectes que guarda de manera transparent i persistent objectes python. Les seves prestacions inclouen: transaccions sense límit, guarda un històric i la possibilitat de desfer transaccions il·limitades, caché interna, control de concurrència basat en multiversions (MVCC) i escalabilitat.

Divisió funcional dels servidors

S'ha dissenyat una arquitectura basada en varis front-ends (o clients Zope) que s'encarreguen de mostrar el resultat final de cada pàgina (renderització) que ataquen a un back-end (o servidor ZEO, Zope Enterprise Objects) que es limita a gestionar peticions d'entrada i sortida a la base de dades ZODB. Es poden tenir tants front-ends com es vulguin, i d'aquesta manera fer un escalat horitzontal de l'aplicació en cas necessari, a més de proveir d'un sistema tolerant a fallides en aquest punt del sistema.

Alt rendiment amb servidor de cache (només en mode lectura)

També s'ha dissenyat que el sistema disposi de un servidor de cache o de memòria cau. Aquest és un servidor de cache en proxy invers (reverse proxy) d'última generació, anomenat Varnish.

Un reverse proxy és un servidor de proxy que està instal·lat a prop d'un o més servidors, típicament servidors web. Totes les connexions entrants procedents de Internet són adreçades a un dels servidors web encaminades a través del proxy, el qual pot servir la petició ell mateix o passar-la totalment o parcialment als servidors web per completar la petició de l'exterior. La diferència amb un proxy directe és que el proxy directe (o el proxy de tota la vida) actua com a pont de trafic sortint cap a Internet.

Varnish és un accelerador http d'última generació, multi-fil, i està dissenyat per tractar la informació de forma més eficient possible, obrint un fil per a cada petició. Compila la configuració en directament en llenguatge C i l'enllaça amb el mateix programa. Només el fem servir en mode lectura, les escriptures (https) no passen per el accelerador.

Base de dades ZODB descentralitzada

A partir de l'anterior versió es proposa també una descentralització del fitxer que conté la base de dades (ZODB), dividint-lo en tantes parts com vulguem, idealment un per cada espai Genweb (o per unitat estructural). Aquesta mida millora el model monolític de la base de dades d'aquesta manera:

  • Bases de dades de tamany més reduït i manegable
  • Recuperacions de backup més àgils, segures i granulars
  • Càrrega de la BBDD més ràpida
  • Possibilitat de aplicar polítiques de BBDD diferents per espai (com per exemple, quotes de disc)

Blobs

Per tal de que els fitxers que s'afegeixen als espais no ocupin espai de BBDD, amb tota la problemàtica que això comporta, s'ha afegit el suport a BLOBs a les ZODB del sistema. Un BLOB (Binary Large OBjects, grans objectes binaris) són elements utilitzats a les bases de dades per emmagatzemar dades de mida gran fora de la base de dades pròpiament dita i que canvien sovint.

Esquema d'arquitectura: Operacions de lectura

 

 img-zope-lectures

Esquema d'arquitectura: Operacions d'escriptura

 

img-zope-escriptures

Esquema d'arquitectura: Entorn de pre-producció

 

 

img-zope-pre-produccio