From: Leandro Lucarella Date: Wed, 8 Aug 2007 18:43:40 +0000 (+0000) Subject: Cosas de Distribuidos I. X-Git-Tag: svn_import X-Git-Url: https://git.llucax.com/z.facultad/75.74/practicos.git/commitdiff_plain Cosas de Distribuidos I. --- diff --git a/Informe.abw b/Informe.abw new file mode 100644 index 0000000..8362223 --- /dev/null +++ b/Informe.abw @@ -0,0 +1,479 @@ + + + + + + + + + + + +application/x-abiword +AbiWord + + + + + + + + + +
+

Industrias Lucarella

+

+

Problema

+

La empresa está dividida en tres grupos : Frabricas, Depositos y Puntos de Venta (PDV en adelante). Las fabricas son donde se manufacturas los productos vendidos por la empresa; los Depositos sirven de almacenamiento intermedio y los Puntos de Venta son oficinas donde se venden los productos manufacturados. Cabe notar que si bien una Fabrica puede tener lugar para almacenamiento, desde del punto de vista del análisis se ve como una Fábrica más un Depósito por separado.

+

+

Las Fabricas trabajan a pedido, que son emitidos por los PDV. Cuando un cliente solicita un producto, el PDV emite una orden de compra y se lo envía a un Depósito. Este último, de tener en stock el producto pedido, envía un mensaje de confirmación de que el pedido está en tránsito (la logistica corre por cuenta de los empleados del Deposito). Si no lo tiene le envia un MSG avisando que lo manda a producir así no se queda esperando los dias que podria tardar en producir la fabrica.

+

+

Los PDV son subscriber de los depositos, quienes publican actualizaciones de stock periodicamente para que los PDV se mantengan actualizados. Cuando un PDV se une a la red (suscribe) se hace un pedido a todos los depositos para que manden sus respectivos stock.

+

+

En el caso de que el Deposito no cuenta con el stock para suplir la demanda, hace un pedido a una de las Fábricas disponibles. La lista es cargada en el sistema manualmente ya que se actualiza poco. El deposito seria un subscriber de los "eventos" que tira la Fabrica informando sobre su estado (cuanto esta produciendo), asi el Deposito sabe a donde le conviene mandar a producir. En principio la Fabrica publicaria su estado una vez por dia.

+

+

La Frábrica recibirá los pedidos de manufactura y se encargará producir el producto. Cuando esté listo, enviará un MSG al depósito informando que el pedido está camino, con la información que haga falta (TODO: Definir que significa "haga falta" :)

+

+

Se puede resumir los casos en el siguiente digrama de secuencia :

+

+

+

+

OPCIONAL:

+

* Los PDV tienen algo interesante para intercambiar? Lista de cliente tal vez (como hace pinturerias Rex por ejemplo)

+

* Entre fabricas me parece que no hay mucha utilidad que hablen entre si, o al menos no una razon obvia en este momento :)

+

+

El esquema actual de la empresa puede representarse en el siguiente grafico :

+

+

+

+

Lo que se tiene son :

+

* dos fabricas, una con un deposito en el edificio lindero

+

* dos puntos de ventas en diferentes cuidades.

+

* Plan de expasion para los proximos años

+

+

Esquema de comunicacion actual :

+

* Todas la mensajeria ser realiza por medio de email a travez de internet o FAX.

+

* No hay sincronizacion en los PDV de las bases de datos de los clientes (Si un cliente compra en dos sucursales diferentes, cada PDV carga los datos)

+

+

Sistema

+

Aca hay que ver, hay partes que pintan peer to peer (por ejemplo los pedidos) y otras Publisher-Suscriber (las actualizaciones de stock). De todos modos, es el sistema, y no joderia que tenga las dos modalidades.

+

+

Middleware

+

* Persistente-asincronico : Los pedidos deben llegar dentro de un lapso aceptable (a definir) de tiempo. Un pedido del PDV al Depositno no puede tardar 1 semana (por ejemplo). Si el MOM no puede entregar el mensaje (por ejemplo, fabrica caida o caido el enlace de la red publica), en cierto lapso de tiempo devuelve un mensaje de error al emisor.

+

* Tipos de Mensaje

+

-

+

-

+

-

+

+

+

Ref:

+

+

http://www.codeproject.com/soap/SOA_PublisherSubscriber.asp

+

http://citeseer.ist.psu.edu/rafanello94simple.html

+
+ + +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 +ly8/88wzmzdv9rnO4BQ2GwIgyJEbYDBFUbZs2ZKZmRkVFXXzzTdXVFSUl5dnZ2frH4SqqmZl +ZVVUVOh/T1ut1oKCgsTExMTExEWLFlmt1m5bKS0tLS4uHjhwYHR09PTp0/fs2aO37rK8Q5e0 +hTU1NTk5OQMGDIiJibn33nsbGxsvXryYkpLS3NysFejo6EhNTW1qarKvas+ePTfddFNUVFRm +ZuYbb7yhN2p/hsDdFnV0dDz++OMpKSnJyckvv/yyQydPnDiRkZGxYcOGbjcfAPyF3ADj7du3 +78iRI5cuXcrJycnPzx83blxCQsKBAwe0V/fv35+cnDx27Fi9/IoVKxoaGk6fPl1VVVVbW1tc +XNxtExMnTnzqqadqamp865K28L777issLGxsbGxsbLzxxhuLioqSk5MtFsuWLVv0rt56660p +KSn2VT344IOrVq26cuXK4cOHT5w4Ib4/N2B/0sXdFq1aterkyZNlZWXV1dVnz561r/Zvf/vb +rFmztmzZ8thjj0luFAD4geolybV8qxxekd/JwfB2uBt7Qojm5mbtcUtLi8lkUlV148aNFotF +Wzhv3rxXX31VtfusHTJkSFVVlfb4yy+/HDJkiLsW9cd1dXV5eXlpaWlJSUm5ubn19fXOZexX +dO6Sg5aWlpSUFFVVq6urhw4d2t7erqrqr3/96+3btzuUvPbaa9evX//VV1+565uHLcrIyKis +rHTu3osvvpienv7JJ594qDPYhNZwBYKW4VOJ3BDCDB89XnHXAYfl2tNvvvkmMTHxwoULzc3N +SUlJFy9etC8ZERFhs9m0xx0dHS4/1921+PXXXz/22GOTJ0/2UMZll1RV/eijj6ZOnRofH6/t +T0VRtOVz584tKSnp7OwcNWpUa2urQ22lpaX33XffoEGDhg4d+ve//91lE+62KCIioqOjw7l7 +I0aMWLFihcz2Bo/QGq5A0DJ8KnGdAsEoOTl5xowZJSUlJSUlM2fOTEpKsn/VbDbrVxyqq6vN +ZrN8zYMHD16zZk1paakPvZozZ86jjz5aV1fX1dV1+fJlfVr+/ve/f+WVV44dOzZlypSYmBiH +tW655ZYdO3Y0NTW9/vrrjzzyiMua3W1RWlpadXW1c/lDhw5t37597dq1PmwFAPQEuQFBKi8v +780339y6dWteXp7DSxaLpaioqKmpqbGxsbCw0GKxdFvb7NmzDx06ZLVam5ubn3/++fHjx/vQ +pdbW1qioqNjY2Nra2kWLFunLf/SjH8XHxy9btuyXv/yl81oWi+Xzzz9vb2/v6urq7OzUFiYl +JVVWVna7RQ899NCSJUvq6uouXbpUWFiol8/IyDh06NDWrVufe+45HzYEAHzn7QkKybV8qxxe +kd/J3pbsjffO3dgTbi4KdHZ2Dh06NDMzs6ury+Gl1tbW/Pz8hISEhISE/Px850sDzjXv2rVr +6tSp0dHRCQkJs2fPPnPmjMvWPXdpx44dWVlZJpNp+PDh2i859TI7d+4cNmyY3lV727ZtGzVq +lMlkuummm/bu3astXL16df/+/bvdovb29sLCwmuuuSY5OXndunUO/fn6669vuOGGZ555xsO2 +BI/eGK5AH2T4VFJUVwd0D7RfjnW7lmQx9IT8Tu62pPPPEcPgvdO+fxCYtjZv3lxfX//HP/4x +MM25FMjt9YEfhyvQlxk+lcgNIazno8fDHQbD4L0L2CC8fPnybbfdtm/fviFDhvR2W+4E/4wz +/GAHhAfDp5LJv9UhJPSRGxIH5oNHUZSIiIiNGzcaGBoEn7IAAoXzDSHM29QJGI7zDUAPcb4B +gaOPHmIEAMA35Ia+SCZA8Nce/Iu0CoQHckOfxhkIAIBXyA0QggABAJBDbsAPcHkCAOAB95kG +AACyyA0AAEAWuQEAAMgiNwAAAFnkBgAAIIvcAAAAZJEbAACALHIDAACQRW4AAACyyA0AAEAW +uQEAAMgiNwAAAFnkBgAAIIvcAAAAZJEbAACALHIDAACQRW4AAACyyA0AAEAWuQGGURSlhwUA +AAFGboDvlO8NGDDgnnvuqaqq8rke/3YMANBLyA3oEVVVVVWtqamZOHFibm6uz5X4t1cAgF5C +boAfDBo0aOXKlRUVFdrTzs7O5cuXp6amxsXF5ebmtrS0aMvb2toefvjh+Pj4wYMHr127Vl9d +P9/groDVai0oKEhMTExMTFy0aJHVag3UlgEAfoDcAD9obm5evXr12LFjtadr1qz5+OOPy8rK +zp8/Hx0dvWzZMm35ypUrm5qaamtry8vL9+/f71yPuwIrVqxoaGg4ffp0VVVVbW1tcXFxADYK +AOBM8fYUsfanYbdrSRZDT8jv5F56O/TzBPHx8ZMmTdqwYcP1118vhMjMzPzwww9Hjx4thDh/ +/vy4cePOnTsnhMjIyDh48GB2drYQoqqqatSoUVqXFOW7ceiuQHp6+sGDB0eOHCmEqKysnD59 +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 +tLS0uLh44MCB0dHR06dP10NDZ2fn8uXLU1NT4+LicnNzW1paXK7u0EO958LpPIq33aupqcnJ +yRkwYEBMTMy9997b2Njoche98MILZrM5Pj4+Ly+vra1NX75+/fprr73WZDJ5aLetre3hhx+O +j48fPHjw2rVr7at1aEV70NHR8fjjj6ekpCQnJ7/88sseFnb7jji/uR52RZ9FbgAA7+zbt+/I +kSOXLl3KycnJz88fN25cQkLCgQMHtFf379+fnJw8duxYvfyKFSsaGhpOnz5dVVVVW1tbXFzc +bRMTJ0586qmnampqHJavWbPm448/LisrO3/+fHR09LJly2R6aP+S+r0333xz4cKF3nbvvvvu +KywsbGxsbGxsvPHGG4uKilwWO3z4cEVFRU1Nzddff21/IaC0tLSsrMxms3lod+XKlU1NTbW1 +teXl5fv37/e8o4QQq1atOnnyZFlZWXV19dmzZz0s1HnYZA+7Dt9RvSS5lm+VwyvyO5m3A4YL +ueHq7mgphGhubtYet7S0mEwmVVU3btxosVi0hfPmzXv11Ve1ktqSIUOGVFVVaY+//PLLIUOG +uGtRf1xXV5eXl5eWlpaUlJSbm1tfX68tHzZs2MmTJ7XH586dM5vNLutx7qFD/ceOHZs6darV +apXsnst3pKWlJSUlxWXh06dPa48rKyvT09P15Q0NDXoxd+2mp6fbr26/5112KSMjo7Ky0qEP +Lhd2+46423Xu9oAhDJ9KfL8hhBl+lQuQF3LD1d31bIfl2tOLFy8OHz68urpaVdXs7Oyampqk +pCS9pMlkamtri4iIEELYbLbY2NiOjg7JFs+dO/fcc8998sknR44cEUJERkaq33+GdXV1KYrS +1dUl00P7Bw0NDbNnz965c2d6erpk9/R1jx8//oc//KGsrEy7ROKuAzabzblCh465a9dhub7J +7rbLZDJZrVbt2od95c4Lu31H3DXh7t0xhOFTiesUANBTycnJM2bMKCkpKSkpmTlzZlJSkv2r +ZrNZv+JQXV1tNpvlax48ePCaNWtKS0u1p2lpabW1tTabrbOzU4sO3na1ra1t3rx5Gzdu1EKD +t92bM2fOo48+WldX19XVdfnyZXefSfYVDh482GUZd+2mpaXZL9fLm0ym1tZW7fGFCxf05Wlp +afbFPCzstmnIIDcAgB/k5eW9+eabW7duzcvLc3jJYrEUFRU1NTU1Nie1iv4AAAdvSURBVDYW +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 +aAMAAFn/D5Np/bwEBXI+AAAAAElFTkSuQmCC + + +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 +AAhPwgAgigzFIDQJA6DpDMUgDxIGABBeE6/eTtPEcewnGjSKHp8qUMOgzgQLgLKoYQBQN0P/ +ulD8CEgNAwAIT8IAAMKTMACA8CQMACA8CYNGMHoLoGASBjXngFVYlghOHiQMAKJIHCc0CQMA +CE/CoCnUgQGKJGFQf2q/0IfwTU6cNRwYJ9ndoewYkDeT4FZFURTHcRzHGzdunJ2dPX/+fMC5 +i8ZAQG1NStp2lbUyQH9Xe0mSJHnttdeWlpb2798fcO6tUKwVoAp8D8da6+NLkiT7g1vOgGp6 +bxzGRz7ykQMHDjz//PPp3dOnT998880bN248duxYOiWO49nZ2fXr1x89ejSdcuLEic2bN2/e +vHlhYSGd8vWvf/3GG29sbe3pjdb/6Y3OZ0HeVIBroO1DlDOC8KaRnzhJkjiO0w310qVLa9as +uXTpUhRFt95665NPPnn99dffc889b7zxRhRFcRy/+OKLURTt37//5z//eRRFW7duPXjwYBRF ++/bte/3116Mouu6667773e/u2bNn1aqr/S/pnFs3uj5rXKSbon3V+PIJjrten2DbbtJHvHI2 +ijbekIDelzB++ctf7tix480334yiaGJiIoqiK1eutP6P4/idd95JkmTDhg1LS0vpYy5cuJAk +ybp16y5evBhF0fe///0nnnhiaWnp9OnTmzZt6powOp81Lnzzxl22zF7umjCc/p+gnDEoW0Qn +7XxA7/WS/OpXv3rwwQfvuuuu9O62bduOHz9+6dKlNF6kTp06dfr06cnJyfTuLbfc0jZlz549 +P/7xj9evX//DH/4wu5jVq1efO3eu17OgGFqNcdf/E9RvMhzbBTm5erRqHMc33HDDXXfd9eij +j6ZTnn766Xvvvfezn/1slPn+HTly5Pjx488880x69/HHH5+dnY2i6Nlnn23NJ4qinTt33nnn +ndnF3HfffVu2bHn77beTJOl81ngZus2yGUMo2bJom1bdtPXIyNbXjfhF3npupV0e2nuTbogR +N8iGv3sVYX9TAyv/EPWb9KJ/pBdNREDOuDUw37waEJcbQj2jP28FuRrgrOG+i9SAr3EDdY7P +KHFlqkDSohiuS0LjtP2upSGyOaPJg0Ab+8IpnoRBc2lqG6jhOcPwC4okYdBEzmffcA0/qFW8 +oBgSBg2lkW24Bp48w/ALCiZh0FwGZJC8K71b45xR19dFlUkYoPGly/iMOn0rDL+gFBIGjabB +JauWXSfixVhLv4QbN26cnZ09f/582DkHnFtXEgZNp6+ENnXKGeJFDSRJ8tprry0tLe3fvz/s +bNMb+X29JQy4anz3IuRh3IdoZFdYvBh3H/nIRw4cOPD888+nd0+fPn3zzTdv3Ljx2LFj6ZQ4 +jmdnZ9evX3/06NF0yokTJzZv3rx58+aFhYV0yte//vUbb7yx7RS3rf/TG53PGkW/cyfPzOwY +fQGdFhbO5DHbAhiJXWPa4nFR1ic1Xpc48X0eWtXa+dYlDi5durRmzZpLly5FUXTrrbc++eST +119//T333PPGG2+kD3vxxRejKNq/f//Pf/7zKIq2bt168ODBKIr27dv3+uuvR1F03XXXffe7 +392zZ8+qVauyc85eRaHzWSOtfNf3Mc0W8/PzI849qzU3CYNq0iiPhXI3w84yRgW/Lb7Jo6ha +O9/a/f/yl7/csWPHm2++GUXRxMREFEVXrlxp/R/H8TvvvJMkyYYNG5aWltLHXLhwIUmSdevW +Xbx4MYqi73//+0888cTS0tLp06c3bdrUNWF0PmsUXa581ipdhE0YU1NboihaXDwbcJ4QUJIk +2bJhdZoYWkrvp+gctVOp3Xl2xaqwPoTyq1/96sEHH7zrrrvSu9u2bTtw4MDMzExajUidOnUq +iqLJycn07i233NI2Zc+ePX/5l3/5p3/6pz/84Q///M//vPXE1atXnzt37mMf+1jXZ42i+7VV +5+b2jj7rrEOHngo7Q8hDdv/h+quVVfrn0nWIXOlRo/QVICdxHN9www133XXXo48+mk55+umn +77333s9+9rNR5uM+cuTI8ePHn3nmmfTu448/Pjs7G0XRs88+25pPFEU7d+688847s/O/7777 +tmzZ8vbbbydJ0vmskda887s4M7Mjj4TRqmHoJaH6NNYVVOUNsGtxpbBVVboIqMpfsz6q+Yuo +ew0jClp1CJ5XIG/ZHpMKbrdUTVlVjfEaf0rT9EwYUaAhmTkdkAJ5EzIqZVx+WeYdNXqNRKn+ +O0OuqvkF6JcwoOGM/ayI0gd4DqF/1MhjQVA1Egb00zb2M9KgF27cx8QEP3PimL4PNJCEActz +jEkpajaAsQYvAQbirOGwUuN7AulxlC1d2DfDOJIwYABjfaGKMTLuPSNApJcEhmBwRn5q1jMC +TSZhwJBaR5pEckYIsgXUjIQBw2u7SoWcMTTdIlA/EgaMqmvOiOwsVxYsqOsAAAvmSURBVEbp +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 + + +
diff --git a/parciales/parcial mapa.jpg b/parciales/parcial mapa.jpg new file mode 100644 index 0000000..0b3d882 Binary files /dev/null and b/parciales/parcial mapa.jpg differ diff --git a/parciales/parcial.jpg b/parciales/parcial.jpg new file mode 100644 index 0000000..2dac786 Binary files /dev/null and b/parciales/parcial.jpg differ diff --git a/practicas/tp3_informe/Makefile b/practicas/tp3_informe/Makefile new file mode 100644 index 0000000..58f1eba --- /dev/null +++ b/practicas/tp3_informe/Makefile @@ -0,0 +1,26 @@ + +tp_mom.pdf: tp_mom.ps + ps2pdf14 tp_mom.ps + +tp_mom.ps: tp_mom.dvi + dvips tp_mom.dvi + +tp_mom.dvi: tp_mom.latex tp_mom.bib is-unsrt.bst arquitectura.eps esquema.eps + ./cal.py < tp_mom.latex > tmp + mv tmp tp_mom.latex + @echo "======== LATEX ========" + latex tp_mom.latex + @echo "======== BIBTEX ========" + bibtex -min-crossrefs=1 tp_mom + @echo "======== LATEX ========" + latex tp_mom.latex + latex tp_mom.latex + +%.eps: %.dia + dia -t eps-builtin -e $@ $? + +clean: + rm -rf *.aux *.log *.dvi *.ps *.out *.bbl *.blg *.eps *.pdf + +.PHONY: clean + diff --git a/practicas/tp3_informe/arquitectura.dia b/practicas/tp3_informe/arquitectura.dia new file mode 100644 index 0000000..4024b6b --- /dev/null +++ b/practicas/tp3_informe/arquitectura.dia @@ -0,0 +1,1031 @@ + + + + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Multicast +de Red# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Comunicación +de Grupos# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Administrador +de Stock# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Membresía +de Sitios# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Detector de +Fallas de Sitios# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Membresía de +Participantes# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Autorización de +Particiantes# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Part1# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Part2# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #PartN# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Participantes# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Sitios# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Detector de Fallas +de Participantes# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/practicas/tp3_informe/cal.py b/practicas/tp3_informe/cal.py new file mode 100755 index 0000000..d01f48f --- /dev/null +++ b/practicas/tp3_informe/cal.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# vim: set encoding=utf-8 : + +"""Convierte acentos comunes a acentos de LaTeX""" + +from sys import stdin + +for line in stdin: + for (o, n) in (("á", "'a"), ("é", "'e"), ("í", "'i"), ("ó", "'o"), ("ú", "'u"), ("ñ", "~n")): + line = line.replace(o, '\\' + n) + print line, + diff --git a/practicas/tp3_informe/esquema.dia b/practicas/tp3_informe/esquema.dia new file mode 100644 index 0000000..e1e04d7 --- /dev/null +++ b/practicas/tp3_informe/esquema.dia @@ -0,0 +1,841 @@ + + + + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Punto de Venta# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #X.25# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Fábrica# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Fábrica# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Fábrica# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Córdoba# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Catamarca# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Chubut# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Punto de Venta# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Servidor# + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/practicas/tp3_informe/tp_mom.bib b/practicas/tp3_informe/tp_mom.bib new file mode 100644 index 0000000..4104565 --- /dev/null +++ b/practicas/tp3_informe/tp_mom.bib @@ -0,0 +1,194 @@ + +@misc{MOM, + author = "Wikipedia", + title = "Message Oriented Middleware", + url = "http://en.wikipedia.org/wiki/Message_Oriented_Middleware", + year = "2006", +} + +@inbook{GROUP, + crossref = "VERISSIMO", + title = "Group Oriented", + chapter = "3.7", +} + +@misc{PUBLISHER, + author = "Wikipedia", + title = "Publish/Subscribe", + url = "http://en.wikipedia.org/wiki/Publish_subscribe", + year = "2006", +} + +@inbook{X25, + crossref = "STALLINGS", + title = "X.25", + chapter = "9.4", +} + +@inbook{WAN, + crossref = "VERISSIMO", + title = "Fundamental Tradeoffs (distribution in the small)", + chapter = "3.2.1", + pages = "99", +} + +@inbook{ASYNC, + crossref = "VERISSIMO", + title = "Asynchronous Models", + chapter = "3.3", +} + +@inbook{PART, + crossref = "VERISSIMO", + title = "Primary Partition", + chapter = "2.9.7", +} + +@inbook{DEGRAD, + crossref = "VERISSIMO", + title = "Distribution for Availability and Performance", + chapter = "3.2.3", +} + +@inbook{LAN, + crossref = "VERISSIMO", + title = "Fundamental Tradeoffs (distribution in the large)", + chapter = "3.2.1", + pages = "99", +} + +@inbook{SITE, + crossref = "VERISSIMO", + title = "Infrastructure (Site-Participant Clustering)", + chapter = "3.1.1", + pages = "92--93", +} + +@inbook{MCAST, + crossref = "VERISSIMO", + title = "Multicast Protocol", + chapter = "2.4.2", +} + +@inbook{NAMING, + crossref = "VERISSIMO", + title = "Naming and Addressing", + chapter = "2.1", + pages = "21--23", +} + +@inbook{DNS, + crossref = "VERISSIMO", + title = "Name Server Approach", + chapter = "2.1.3", +} + +@inbook{GROUPARCH, + crossref = "VERISSIMO", + title = "Group-Oriented Architecture", + chapter = "3.7.1", +} + +@inbook{VISTA, + crossref = "VERISSIMO", + title = "Group and Views", + chapter = "2.4.1", +} + +@inbook{GROUP.DISSE, + crossref = "VERISSIMO", + title = "Building Group-Oriented Systems (Figure 3.14b)", + chapter = "3.7.3", + pages = "121", +} + +@inbook{GROUP.VIEW, + crossref = "VERISSIMO", + title = "Groups and Views", + chapter = "2.4.1", +} + +@inbook{ORDER.FIFO, + crossref = "VERISSIMO", + title = "FIFO Order", + chapter = "2.7.2", +} + +@inbook{ORDER.CAUSAL, + crossref = "VERISSIMO", + title = "Causal Order", + chapter = "2.7.3", +} + +@inbook{ORDER.FIFO.FAIL, + crossref = "VERISSIMO", + title = "FIFO Order (Figure 2.14b)", + chapter = "2.7.2", + pages = "51" +} + +@inbook{ORDER.TOTAL, + crossref = "VERISSIMO", + title = "Total Order", + chapter = "2.7.4", +} + +@inbook{ORDER.CAUSAL.FAIL, + crossref = "VERISSIMO", + title = "Causal Order (Figure 2.15b)", + chapter = "2.7.3", + pages = "52" +} + +@unpublished{RFC1034, + author = "P. Mockapetris", + title = "Domain names - Concepts and Facilities.", + year = "November 1987", + note = "RFC 1034", + url = "http://www.ietf.org/rfc/rfc1034.txt", +} + +@inbook{ACTIV, + crossref = "VERISSIMO", + title = "Classes of distributed activities", + chapter = "3.5", +} + +@inbook{ACTIV.COORD, + crossref = "VERISSIMO", + title = "Coordination", + chapter = "3.5.1", +} + +@inbook{ACTIV.SHARE, + crossref = "VERISSIMO", + title = "Sharing", + chapter = "3.5.2", +} + +@inbook{ACTIV.REPLI, + crossref = "VERISSIMO", + title = "Replication", + chapter = "3.5.3", +} + +@book{VERISSIMO, + author = "Paulo Ver\'issimo and Lu\'is Rodrigues", + booktitle = "Distributed Systems for System Architects", + title = "Distributed Systems for System Architects", + year = "2001", + publisher = "Kluwer Academic Publishers", + isbn = "0-7923-7266-2", +} + +@book{STALLINGS, + author = "William Stallings", + booktitle = "Data and Computer Communications", + title = "Data and Computer Communications", + edition = "Seventh", + year = "2003", + publisher = "Prentice Hall", + isbn = "0-1310-0681-9", +} + + diff --git a/practicas/tp3_informe/tp_mom.latex b/practicas/tp3_informe/tp_mom.latex new file mode 100644 index 0000000..a68a1de --- /dev/null +++ b/practicas/tp3_informe/tp_mom.latex @@ -0,0 +1,377 @@ +\documentclass[twocolumn]{article} +\usepackage{graphicx} +\usepackage{times} +\usepackage{hyperref} +\usepackage[activeacute,spanish]{babel} +\usepackage{fancyheadings} +% \usepackage[left=0.in,top=1.0in,right=0.75in,bottom=1.0in,nohead,nofoot]{geometry} +\columnsep 0.2in +\parindent 0.2in +\textheight=9.8in +\textwidth=7in +\headsep 0.0in +\topmargin=-1.0in + +% Margein : Es 1in - oddsidemargin +\oddsidemargin -0.25in + +\setlength{\headrulewidth}{0.0pt} + +\renewcommand{\section}[1] { + \begin{center}\Large \bf #1\end{center} +} + +\renewcommand{\subsection}[1] { + \begin{center}\bf #1\end{center} +} + +%% HEADER +\rhead{\Large \bf Trabajo Pr\'actico Sistemas Distribuidos I 1º C. 2006} + +\begin{document} + +\title{SISTEMA DE CONTROL DE STOCK DE PRODUCCION: ANALISIS DE + REQUERIMIENTOS DE SISTEMAS DISTRIBUIDOS} + +\author{Leandro Lucarella\footnote{Leandro Lucarella, Facultad de +Ingenier\'ia, Universidad de Buenos Aires, llucare@fi.uba.ar} y Ricardo +Markiewicz\footnote{Ricardo Markiewicz, Facultad de Ingenier\'ia, +Universidad de Buenos Aires, rmarkie@fi.uba.ar}} + +\maketitle +\thispagestyle{fancy} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Resumen} + +En el presente trabajo proponemos una soluci\'on alternativa para +un Sistema de Control de Stock de Producci\'on para una empresa +automotriz que cuenta con varias plantas en distintos puntos del +pa\'is (Catamarca, C\'ordoba y Chubut). Actualmente utiliza un sistema +centralizado con varios problemas de base. La soluci\'on que proponemos +se basa en un sistema distribuido, utilizando como soporte un un +Middleware asincr\'onico para implementar un Publisher - Subscriber con +actualizaci\'on de informaci\'on y soporte de grupos, para mejorar tanto +la eficiencia como la confiabilidad y escalabilidad del sistema actual. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Introducci\'on} + +La empresa cuenta actualmente con un sistema centralizado (ver +Figura \ref{esquema}) que acarrea varios problemas de base, como la +inoperatividad ante fallas de conectividad, la eficiencia (el servidor +central est\'a al l\'imite de su capacidad) y la falta de escalabilidad +(lo que ser\'a un problema a corto plazo si la empresa crece al ritmo +esperado). Es por esto que presentamos como soluci\'on alternativa +un Middleware orientado a mensajes\cite{MOM} para atacar todas estas +falencias principales del sistema centralizado. + +La empresa cuenta con 2 entidades que realizan operaciones bien +diferenciadas sobre el el stock de producci\'on: F\'abricas (producen +stock) y Puntos de Venta (o PDV, que consumen stock). A su vez cada +entidad puede tener otras restricciones sobre las operaciones, como por +ejemplo poder producir s\'olo cierto tipo de producto. Es por esto que +proponemos un Middleware con soporte de grupos\cite{GROUP}. Adem\'as, +dada la naturaleza Productor - Consumidor del problema es que proponemos +adem\'as un modelo Publisher - Subscriber\cite{PUBLISHER} para la +soluci\'on. + +\begin{figure} +\begin{center} +\includegraphics[width=3.0in]{esquema.eps} +\caption{Infrastructura actual del sistema} +\label{esquema} +\end{center} +\end{figure} + +La conectividad a nivel nacional de la empresa est\'a dada a trav\'es de +una red p\'ublica X.25\cite{X25} que, como cualquier red p\'ublica de +gran escala\cite{WAN}, tiende a tener problemas de estabilidad en los +enlaces de forma considerablemente peri\'odica, por lo tanto el modelo +m\'as adecuado ser\'a el asincr\'onico\cite{ASYNC} y habr\'a que tener en +cuenta el particionamiento\cite{PART} de la red para minimizar el impacto +en el sistema de la falta de conectividad, logrando una degradaci\'on +gr\'acil\cite{DEGRAD}. + +Adem\'as de la conectividad a nivel nacional a trav\'es de una red +p\'ublica poco confiable, la empresa cuenta con LANs\cite{LAN} en +cada provincia con un nivel de confiabilidad muy alto, por lo que, +relacionado al particionamiento, proponemos la divisi\'on en sitios, +con conglomerado de participantes en los sitios\cite{SITE}. De esta +manera los participantes de un mismo sitio (o sitios con los que conserve +conectividad) pueden seguir funcionando de forma aut\'onoma utilizando +informaci\'on del stock local. + +Para la comunicaci\'on entre los distintos participantes (ya +sea en un mismo sitio o sitios externos) proponemos entonces un +multicast\cite{MCAST}, de manera de que sea lo m\'as eficiente +posible y circule la m\'inima cantidad posible de mensajes por la red +p\'ublica que adem\'as tiene un costo por tr\'afico utilizado. Esto nos +conduce al problema del direccionamiento y de la selecci\'on de un +esquema de nombres\cite{NAMING} de participantes apropiado, para lo cual +proponemos un sistema de resoluci\'on de nombres\cite{DNS} jer\'arquico +y distribuido, para conservar la autonom\'ia local de cada sitio. Por +estos mismos motivos proponemos que la autenticaci\'on y permisos de +participantes en grupos utilicen un sistema an\'alogo de resoluci\'on. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Grupos} + +El sistema actual requiere de distintos perfiles de usuarios. Hay usuarios +que s\'olo pueden modificar cierto tipo de producto (y s\'olo agregar +stock), hay otros que s\'olo pueden quitar stock, por ejemplo. Este +esquema se ajusta bien a un esquema de grupos con un sistema de +autorizaci\'on. M\'as espec\'ificamente este problema se ajusta a un +modelo de grupos de diseminaci\'on\cite{GROUP.DISSE}. + +Para que todos los participantes tengan una visi\'on global del sistema +{\em precisa} y {\em consistente} es preciso contar con un servicio de +membres\'ia que consista de grupos {\em visibles} (ya que los grupos +son parte del problema y no s\'olo de la soluci\'on), una {\em vista} +y un esquema de orden adecuado. Este problema se ajusta, adem\'as, a un +modelo de grupos {\em cerrado} (porque s\'olo pueden enviar mensajes +a un grupo los miembros de este, ya que deben estar autorizados para +pertenecer al grupo y modificar el stock)\cite{GROUP.VIEW}. + +Para todo esto es necesario tener el soporte de un protocolo de multicast +para la comunicaci\'on de grupos. + +\subsection{Autorizaci\'on} +Para cumplir con los objetivos planteados, la soluci\'on que proponemos +consiste en un esquema similar a la resoluci\'on de nombres\cite{DNS} +ya que al ser un esquema distribuido asegura que no haya un punto \'unico +de falla, localidad y eficiencia utilizando un {\em cache}. + +\subsection{Orden} +En principio notamos que un orden de tipo {\em FIFO}\cite{ORDER.FIFO} +no es necesario (puesto que los Puntos de Venta y las F\'abricas +ser\'an siempre participantes distintos). Sin embargo s\'i es +necesario un orden de tipo causal\cite{ORDER.CAUSAL}, porque de +otra forma podr\'ian quedar participantes con una vista del stock +en negativo\cite{ORDER.FIFO.FAIL}. Tambi\'en es necesario un orden +total\cite{ORDER.TOTAL} porque independientemente de la causalidad puede +darse el caso anterior en otras circunstancias\cite{ORDER.CAUSAL.FAIL}. + +\subsection{Multicast} +Para poder implementar la comunicaci\'on de grupos es necesario +tener un protocolo de {\em multicast} con las siguientes +caracter\'isticas\cite{MCAST}: +\begin{description} + \item[Enrutamiento] Responsable de eligir la ruta del origen al + destino. + \item[Tolerancia a omisiones] Responsable de lidiar con mensajes + perdidos o corruptos. + \item[Control de flujo] Responsable de minimizar la p\'erdida de datos + por la falta de espacio en buffers. + \item[Ordenamiento] Responsable de asegurar que los mensajes lleguen + en un orden dado por el criterio visto en la secci\'on previa. + \item[Recuperaci\'on ante errores] Responsable de reforzar el criterio + de ordenamiento y confiabilidad en relaci\'on al cambio de la + vista. +\end{description} + +Esto es necesario para mantener la consistencia del sistema incluso +ante fallas en la conectividad de la red p\'ublica. Si alguna de estas +caracter\'isticas no estuviera presente, ser\'ia imposible asegurar esto. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Sitios} + +El servicio de multicast debe atravesar varios sitios. Un sitio\cite{SITE} +es una LAN dentro de la WAN de LANs\cite{WAN}. Es importante un buen +manejo de sitios para evitar que el multicast atraviese redes que no +es necesario atravesar y esto no es una buena idea si hay que atravesar +una red p\'ublica que es lenta y que suele tener un costo por tr\'afico. + +Para esto es necesario un mecanismo de detecci\'on de fallas de +comunicaci\'on entre sitios y de membres\'ia, para saber qu\'e sitios +est\'an activos. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Particionamiento} + +Al estar dividido el sistema en sitios, separados por la red p\'ublica, es +de esperarse que hayan problemas de conectividad entre los sitios. Esto +es conocido como una partici\'on y aunque un esquema de partici\'on +primaria\cite{PART} puede resultar una soluci\'on simple, para este caso +creemos que es conveniente buscar un esquema m\'as adecuado. + +Lo que proponemos es que, de acuerdo a los sitios activos que vea cada +participante, se de un estado de stock {\em local} a esa partici\'on. De +esta forma se puede seguir operando en todas las particiones (no +s\'olo la primaria) aunque no se cuente con el estado del stock global +(consigui\'endose una degradaci\'on gr\'acil\cite{DEGRAD}). + +Al recuperarse la conectividad se puede reestablecer el stock global +simplemente revisando la diferencia de los stocks locales antes de +particionarse y enviandose esa diferencia entre las distintas particiones. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Asincron\'ia} + +Al atravesar una red p\'ublica propensa a particiones, no se pueden dar +garant\'ias de tiempo, s\'olo pueden darse garant\'ias de {\em liveness} +(como, por ejemplo, se puede asegurar que "el mensaje llegar\'a +eventualmente", pero no dar precisiones de cu\'ando), debi\'endose +utilizar un modelo asincr\'onico\cite{ASYNC}. + +Una desventaja de este modelo es que es muy dif\'icil diferenciar fallas +de tiempos de respuesta muy largos, por lo que es necesario agregar un +mecanismo de detecci\'on de fallas. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Esquema de nombres} + +Para poder identificar a los distintos participantes de forma +independiente de la arquitectura utilizada por el middleware, es necesario +usar un esquema de nombre y por lo tanto un sistema de resoluci\'on +de nombres\cite{DNS}. + +Proponemos un esquema jer\'arquico como el utilizado por +internet\cite{RFC1034}. Éste, si bien acarrea la utilizaci\'on de nombre +impuros, es muy conveniente para el problema analizado, debido a que +permite un correcto funcionamiento ante particiones (si hay al menos +un servidor de nombres en cada partici\'on), aprovecha la local\'ia +a trav\'es del uso de cache, proveyendo adem\'as redundancia ante +fallas y es eficiente porque distribuye la carga de la resoluci\'on de +nombres evitando que sea tanto un punto \'unico de falla como un cuello +de botella. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Actividades} + +Cualquier sistema distribuido est\'a compuesto por una combinaci\'on de 3 +clases de actividades primitivas\cite{ACTIV}: coordinar\cite{ACTIV.COORD}, +compartir\cite{ACTIV.SHARE} y replicar\cite{ACTIV.REPLI}. + +Nuestra propuesta no es la excepci\'on, aunque se centra en s\'olo 2 +actividades principales, de las cuales es responsable el m\'odulo de +administraci\'on de stock. + +\subsection{Compartir} +El sistema tiene que compartir una visi\'on global de stock. Para +que el acceso a este recurso sea consistente es que se analizaron los +requerimientos de orden, que aseguran que siempre que se modifique dicho +stock, se haga de forma coherente. + +\subsection{Replicar} +Debido a la posibilidad de particiones propusimos un esquema de +diseminaci\'on que permite que la informaci\'on de stock se replique en +todos los sitios, de manera tal que ante problemas de conectividad cada +sitio pueda seguir trabajando con su stock local. La consolidaci\'on ya +se ha explicado que es simple, s\'olo hay que calcular la diferencia de +stock que hubo en el tiempo sin conexi\'on. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Arquitectura general} + +A continuaci\'on presentamos, de forma resumida, un esquema de la +arquitectura general del sistema propuesta en base al an\'alisis realizado +en las secciones anteriores. + +\begin{figure} +\begin{center} +\includegraphics[width=3.0in]{arquitectura.eps} +\caption{Arquitectura general del sistema} +\label{arquitectura} +\end{center} +\end{figure} + +Como se puede apreciar en la Figura \ref{arquitectura}, el sistema que +proponemos est\'a basado en una arquitectura conocida\cite{GROUPARCH} +que consiste en 2 capas principales: Participantes y Sitios. Cada capa +est\'a compuesta por una serie de m\'odulos que pasaremos a describir +brevemente a continuaci\'on. + +\subsection{Detector de fallas de sitios} +Este m\'odulo es responsable de la detecci\'on de fallas en la +comunicaci\'on entre sitios, fundamental para proveer un servicio de +membres\'ia de sitios para el manejo de particiones en caso de falla en +el enlace de la red p\'ublica. + +\subsection{Multicast de red} +El m\'odulo de multicast de red provee comunicaci\'on {\em multi-peer} +no confiable a nivel de capa de red (como podr\'ia ser el servicio +de multicast que provee IP) como mecanismo b\'asico para el pasaje +de mensajes entre los nodos del sistema. Este m\'odulo utiliza el +Detector de fallas de sitios para propagar los mensajes s\'olo a los +sitios activos. + +\subsection{Comunicaci\'on de grupos} +Este m\'odulo es el encargado de agregar confiabilidad y orden a la +comunicaci\'on multicast para cumplir con la sem\'antica y restricciones +a nivel de grupos, proveyendo una comunicaci\'on entre participantes +adecuada para garantizar los requerimientos del sistema. + +\subsection{Membres\'ia de sitios} +Este m\'odulo es el encargado de proveer informaci\'on sobre la +membres\'ia de los sitios participantes (activos) de los grupos, de manera +que el servicio de multicast no disemine mensajes en sitios inactivos. + +\subsection{Detector de fallas de participantes} +Es an\'alogo al detector de fallas de sitios pero a nivel de +participantes. Informa a otros m\'odulos cuando se suma o se retira +un participante. + +\subsection{Autorizaci\'on de participantes} +Este m\'odulo usa un modelo similar a la resoluci\'on de nombres\cite{DNS} +para proveer informaci\'on sobre los grupos a los que puede asociarse un +participante. La estructura jer\'arquica distribuida permite aprovechar +la localidad en caso de particionamiento. + +\subsection{Membres\'ia de participantes} +Provee informaci\'on de membres\'ia a nivel de participantes, la vista +\cite{VISTA}. Utiliza el detector de fallas de participantes y membres\'ia +de sitios para saber qu\'e participantes est\'an activos. + +\subsection{Administraci\'on de stock} +Este m\'odulo es el que se encarga de, en base a la informaci\'on que +provee la membres\'ia de sitios y participantes, dar una vista de la +informaci\'on de stock del sistema, seg\'un la conectividad disponible +como as\'i administrar las actividades distribuidas\cite{ACTIV}. + +\subsection{Participantes} +Son las entidades del sistema: F\'abricas y Puntos de Venta. Son los +verdaderos usuarios del middleware. Se comunican s\'olamente con el +m\'odulo de Administraci\'on de stock quien los abstrae del resto de +la arquitectura del sistema, proveyendo una interfaz simple para que +los programadores de la aplicaci\'on no deban lidiar con los problemas +complejos del sistema distribuido. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Conclusiones} + +Dados los requerimientos del modelo de negocio, y el costo de la +utilizaci\'on de la red p\'ublica, el modelo planteado impone una +soluci\'on \'optima para garantizar el bajo costo en las comunicaciones, +como tambi\'en as\'i dar garant\'ias de consitencia en la informaci\'on +manejada por los sistemas clientes que utilizan el middleware. + +Un esquema de trabajo como el planteado ayudar\'a a mejorar la +integraci\'on de los diferentes grupos dentro del sistema y garantizar +una correcta escalabilidad del sistema a largo plazo, pudiendo integrar +nuevos grupos o nuevos clientes a los grupos existentes en la actualidad. + +Tambi\'en se consigue mejorar la tolerancia a fallas y la disponibilidad +del sistema, consiguiendo una degradaci\'on gr\'acil ante particiones +a diferencia de la soluci\'on actual que deja inoperable al sistema +por completo. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Referencias} +\bibliography{tp_mom} +\bibliographystyle{is-unsrt} + +\end{document} + +% vim: set tw=74 :