# Tecnologia client-servidor BOINC

La tecnologia client-servidor BOINC, de l'anglès BOINC client–server technology és el model com funciona BOINC. La infraestructura de BOINC consisteix en dues capes que operen sota l'arquitectura client-servidor. Una vegada que el programari BOINC és instal·lat en un ordinador, el servidor comença a enviar tasques al client. Les operacions són executades en el costat del client i els resultats són pujats al servidor.

## Disseny i estructura de BOINC

* BOINC és dissenyat com a estructura lliure per qualsevol que desitgi crear un projecte de computació distribuïda.
* BOINC consisteix d'un sistema servidor i un programari client que es comuniquen entre ells per distribuir, processar i retornar unitats de treball (workunits).

## Estructura del servidor

Una part important de BOINC és el servidor. El servidor pot córrer en una o diverses màquines per permetre que BOINC sigui fàcilment escalable a projectes de qualsevol mida. Els servidors BOINC corren en Linux i utilitzen Apache, PHP i MySQL com a base per les pàgines web i bases de dades.
Els còmputs científics corren en els ordinadors dels participants i els resultats són analitzats després de ser pujats des del PC de l'usuari a la base de dades de l'investigador científic per després ser validats pel servidor. El procés de validació implica córrer totes les tasques en múltiples PC de contribuïdors i comparar-ne els resultats.
Els servidors BOINC proporcionen les següents característiques:
* redundància homogènia (homogeneous redundancy) (enviar workunits només a ordinadors de la mateixa plataforma, per exemple: Només Windows XP SP2.
* degoteig de workunits (workunit trickling) (enviar informació sobre una workunit abans que aquesta acabi)
* planificació local (locality scheduling) (enviar workunits a ordinadors que ja tenen els fitxers necessaris i crear treball en temps real)
* distribució de treball basat en els paràmetres de l'ordinador (work distribution based on host parameters) (workunits que requereixin 512 MB de RAM, per exemple, només seran enviades a ordinadors que continguin almenys aquesta quantitat de RAM)
Els servidors consisteixen en dos programes CGI i (normalment) cinc daemons escrits en C++. Els còmputs per fer-se per un client són anomenats workunits. Un resultat descriu una mostra d'una workunit, encara que aquesta no estigui acabada. Un projecte no crea resultats explícitament; el servidor els crea automàticament a partir de les workunits.
El programa planificador CGI maneja els encàrrecs dels clients, rebent resultats acabats i enviant treball nou per ser processat. El planificador no rep les tasques directament de la base de dades. En lloc d'això, hi ha un daemon alimentador (feeder) que càrrega tasques de la base de dades i les manté en un bloc de memòria compartida que el planificador llegeix. L'alimentador periòdicament omple aquests "espais" buits en la memòria compartida després que el planificador envia resultats a un client.
Quan tots els resultats d'una workunit estan complets i retornats, el validat (validator) els compara. El validat pot tenir codi personal per fer comparacions difuses entre els resultats. Si els resultats són iguals, la workunit és marcada com validada, als usuaris se'ls atorguen crèdits per això, i un "resultat canònic" és elegit.
Després, el daemon assimilador (assimilator) processa el resultat canònic utilitzant codi específic del projecte. Per exemple, alguns projectes poden analitzar el fitxer i emmagatzemar informació en una base de dades, altres poden simplement copiar l'arxiu a algun altre lloc. Un assimilador també pot generar més workunits basant-se en les dades retornades.
El daemon esborrador_d'arxiu (file_deleter) esborra els fitxers de sortida després que l'assimilador els hagi processat, i esborra els fitxers d'entrada que ja no es necessitin.

### Punts febles en el disseny del servidor

Desplegament de servidor:
* El servidor BOINC està només dissenyat per ser desplegat en Unix, o en sistemes Unix-like.
* Els servidors BOINC no són tan simples per desplegar com el client BOINC car són basats en un gran nombre de scripts.
* La pàgina web del projecte Servidor BOINC fa un molt mal treball en emmagatzemar bases de dades compilades de scripts del costat del servidor per als que vulguin crear un projecte BOINC.
* El servidor BOINC pot ser desplegat en sistemes Windows XP i Windows Vista (car són POSIX) però l'estructura de disseny de Windows fa això difícil i més car que simplement ocupar Linux.
* Els servidors BOINC utilitzen PHP i MySQL com a base de tecnologies – aquestes aplicacions són susceptibles a córrer mal en servidors de poc manteniment.

## Estructura del client

El client BOINC està estructurat en un nombre d'aplicacions separades. Aquests es comuniquen amb el mecanisme crida a procediment remot (RPC) de BOINC.
Aquestes aplicacions són:
* El programa boinc (o boinc.exe). El client nucli.
* El client nucli és un procés que:
** Manté la comunicació entre el client i el servidor.
** Descarrega les aplicacions científiques, proporciona un mecanisme de registre unificat, assegura que els binaris de les aplicacions científiques estiguin actualitzades i planifica els recursos de la CPU entre les aplicacions científiques (si és que més d'una està instal·lada).
** Encara que el client nucli és capaç de descarregar noves aplicacions científiques, aquest no pot actualitzar-se ell mateix. Els autors de BOINC trobaren que fer-lo capaç d'actualitzar-se sol podria ser una amenaça a la seguretat, a més de tots els riscos que comporten les actualitzacions automàtiques.
** En Unix, el client nucli corre generalment com un daemon (o a vegades com un treball cron).
** En Windows, BOINC inicialment no fou un servei Windows, sinó simplement una aplicació ordinària. El client BOINC per a Windows, versió 5.2.13 i més amunt afegeix, durant la instal·lació, l'opció "Service Installation" (instal·lació de servei).
** Depenent de com el client BOINC fou instal·lat, aquest pot córrer en el background (en un segon pla) com a daemon, o començar a córrer quan l'usuari inicia sessió (i s'atura quan l'usuari surt del sistema). La versió del programari de gestió de workunits atorgat pel client nucli simplifica immensament la codificació de les aplicacions científiques.
* boincmgr (o boincmgr.exe). Un GUI que es comunica amb l'aplicació nucli utilitzant crides a procediment remot. Per defecte un client nucli només permet comunicacions des del mateix ordinador, però pot ser configurat per permetre connexions d'altres ordinadors (opcionalment ocupant autenticació amb contrasenya); aquest mecanisme permet administrar una granja d'instal·lacions BOINC des de només una estació de treball. Una inconveniència d'utilitzar el mecanisme RPC és que a vegades es considera un risc per la seguretat, administrant una ruta pels furoners.
* El protector de pantalla de BOINC. Aquest proporciona un entorn de treball per on les aplicacions científiques poden mostrar els gràfics en la finestra del protector de pantalla de l'usuari. Els protectors de pantalla de BOINC són escrits utilitzant el BOINC graphics API, OpenGL i les utilitats GLUT. Típicament, els protectors de pantalla de BOINC mostren gràfiques animades detallant el treball en procés.
* Algunes aplicacions científiques no proveeixen un protector de pantalla (o deixen de proveir imatges pel protector de pantalla quan aquestes estiguin aturades). En aquestes circumstàncies el protector de pantalla mostra un logotip petit de BOINC trontollant per la pantalla.
Una xarxa BOINC és similar a una botnet de furoners/spammers. Tanmateix, en el cas de BOINC, s'espera que el programari sigui instal·lat i operat amb el consentiment del propietari de l'ordinador. Com que BOINC té característiques que el poden fer invisible a l'usuari típic, existeix un risc d'instal·lacions no autoritzades i difícils de detectar. Això podria ajudar a l'acumulació de «crèdits BOINC» per afeccionats que competeixen amb altres per estatus dins de la subcultura crèdits BOINC dins de la comunitat BOINC.

## Referències

* ↑ SETI@home's transition to BOINC (anglès)