1 \documentclass[twocolumn]{article}
5 \usepackage[activeacute,spanish]{babel}
6 \usepackage{fancyheadings}
7 % \usepackage[left=0.in,top=1.0in,right=0.75in,bottom=1.0in,nohead,nofoot]{geometry}
15 % Margein : Es 1in - oddsidemargin
16 \oddsidemargin -0.25in
18 \setlength{\headrulewidth}{0.0pt}
20 \renewcommand{\section}[1] {
21 \begin{center}\Large \bf #1\end{center}
24 \renewcommand{\subsection}[1] {
25 \begin{center}\bf #1\end{center}
29 \rhead{\Large \bf Trabajo Pr\'actico Sistemas Distribuidos I 1º C. 2006}
33 \title{SISTEMA DE CONTROL DE STOCK DE PRODUCCION: ANALISIS DE
34 REQUERIMIENTOS DE SISTEMAS DISTRIBUIDOS}
36 \author{Leandro Lucarella\footnote{Leandro Lucarella, Facultad de
37 Ingenier\'ia, Universidad de Buenos Aires, llucare@fi.uba.ar} y Ricardo
38 Markiewicz\footnote{Ricardo Markiewicz, Facultad de Ingenier\'ia,
39 Universidad de Buenos Aires, rmarkie@fi.uba.ar}}
45 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
48 En el presente trabajo proponemos una soluci\'on alternativa para
49 un Sistema de Control de Stock de Producci\'on para una empresa
50 automotriz que cuenta con varias plantas en distintos puntos del
51 pa\'is (Catamarca, C\'ordoba y Chubut). Actualmente utiliza un sistema
52 centralizado con varios problemas de base. La soluci\'on que proponemos
53 se basa en un sistema distribuido, utilizando como soporte un un
54 Middleware asincr\'onico para implementar un Publisher - Subscriber con
55 actualizaci\'on de informaci\'on y soporte de grupos, para mejorar tanto
56 la eficiencia como la confiabilidad y escalabilidad del sistema actual.
58 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
59 \section{Introducci\'on}
61 La empresa cuenta actualmente con un sistema centralizado (ver
62 Figura \ref{esquema}) que acarrea varios problemas de base, como la
63 inoperatividad ante fallas de conectividad, la eficiencia (el servidor
64 central est\'a al l\'imite de su capacidad) y la falta de escalabilidad
65 (lo que ser\'a un problema a corto plazo si la empresa crece al ritmo
66 esperado). Es por esto que presentamos como soluci\'on alternativa
67 un Middleware orientado a mensajes\cite{MOM} para atacar todas estas
68 falencias principales del sistema centralizado.
70 La empresa cuenta con 2 entidades que realizan operaciones bien
71 diferenciadas sobre el el stock de producci\'on: F\'abricas (producen
72 stock) y Puntos de Venta (o PDV, que consumen stock). A su vez cada
73 entidad puede tener otras restricciones sobre las operaciones, como por
74 ejemplo poder producir s\'olo cierto tipo de producto. Es por esto que
75 proponemos un Middleware con soporte de grupos\cite{GROUP}. Adem\'as,
76 dada la naturaleza Productor - Consumidor del problema es que proponemos
77 adem\'as un modelo Publisher - Subscriber\cite{PUBLISHER} para la
82 \includegraphics[width=3.0in]{esquema.eps}
83 \caption{Infrastructura actual del sistema}
88 La conectividad a nivel nacional de la empresa est\'a dada a trav\'es de
89 una red p\'ublica X.25\cite{X25} que, como cualquier red p\'ublica de
90 gran escala\cite{WAN}, tiende a tener problemas de estabilidad en los
91 enlaces de forma considerablemente peri\'odica, por lo tanto el modelo
92 m\'as adecuado ser\'a el asincr\'onico\cite{ASYNC} y habr\'a que tener en
93 cuenta el particionamiento\cite{PART} de la red para minimizar el impacto
94 en el sistema de la falta de conectividad, logrando una degradaci\'on
95 gr\'acil\cite{DEGRAD}.
97 Adem\'as de la conectividad a nivel nacional a trav\'es de una red
98 p\'ublica poco confiable, la empresa cuenta con LANs\cite{LAN} en
99 cada provincia con un nivel de confiabilidad muy alto, por lo que,
100 relacionado al particionamiento, proponemos la divisi\'on en sitios,
101 con conglomerado de participantes en los sitios\cite{SITE}. De esta
102 manera los participantes de un mismo sitio (o sitios con los que conserve
103 conectividad) pueden seguir funcionando de forma aut\'onoma utilizando
104 informaci\'on del stock local.
106 Para la comunicaci\'on entre los distintos participantes (ya
107 sea en un mismo sitio o sitios externos) proponemos entonces un
108 multicast\cite{MCAST}, de manera de que sea lo m\'as eficiente
109 posible y circule la m\'inima cantidad posible de mensajes por la red
110 p\'ublica que adem\'as tiene un costo por tr\'afico utilizado. Esto nos
111 conduce al problema del direccionamiento y de la selecci\'on de un
112 esquema de nombres\cite{NAMING} de participantes apropiado, para lo cual
113 proponemos un sistema de resoluci\'on de nombres\cite{DNS} jer\'arquico
114 y distribuido, para conservar la autonom\'ia local de cada sitio. Por
115 estos mismos motivos proponemos que la autenticaci\'on y permisos de
116 participantes en grupos utilicen un sistema an\'alogo de resoluci\'on.
119 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
122 El sistema actual requiere de distintos perfiles de usuarios. Hay usuarios
123 que s\'olo pueden modificar cierto tipo de producto (y s\'olo agregar
124 stock), hay otros que s\'olo pueden quitar stock, por ejemplo. Este
125 esquema se ajusta bien a un esquema de grupos con un sistema de
126 autorizaci\'on. M\'as espec\'ificamente este problema se ajusta a un
127 modelo de grupos de diseminaci\'on\cite{GROUP.DISSE}.
129 Para que todos los participantes tengan una visi\'on global del sistema
130 {\em precisa} y {\em consistente} es preciso contar con un servicio de
131 membres\'ia que consista de grupos {\em visibles} (ya que los grupos
132 son parte del problema y no s\'olo de la soluci\'on), una {\em vista}
133 y un esquema de orden adecuado. Este problema se ajusta, adem\'as, a un
134 modelo de grupos {\em cerrado} (porque s\'olo pueden enviar mensajes
135 a un grupo los miembros de este, ya que deben estar autorizados para
136 pertenecer al grupo y modificar el stock)\cite{GROUP.VIEW}.
138 Para todo esto es necesario tener el soporte de un protocolo de multicast
139 para la comunicaci\'on de grupos.
141 \subsection{Autorizaci\'on}
142 Para cumplir con los objetivos planteados, la soluci\'on que proponemos
143 consiste en un esquema similar a la resoluci\'on de nombres\cite{DNS}
144 ya que al ser un esquema distribuido asegura que no haya un punto \'unico
145 de falla, localidad y eficiencia utilizando un {\em cache}.
148 En principio notamos que un orden de tipo {\em FIFO}\cite{ORDER.FIFO}
149 no es necesario (puesto que los Puntos de Venta y las F\'abricas
150 ser\'an siempre participantes distintos). Sin embargo s\'i es
151 necesario un orden de tipo causal\cite{ORDER.CAUSAL}, porque de
152 otra forma podr\'ian quedar participantes con una vista del stock
153 en negativo\cite{ORDER.FIFO.FAIL}. Tambi\'en es necesario un orden
154 total\cite{ORDER.TOTAL} porque independientemente de la causalidad puede
155 darse el caso anterior en otras circunstancias\cite{ORDER.CAUSAL.FAIL}.
157 \subsection{Multicast}
158 Para poder implementar la comunicaci\'on de grupos es necesario
159 tener un protocolo de {\em multicast} con las siguientes
160 caracter\'isticas\cite{MCAST}:
162 \item[Enrutamiento] Responsable de eligir la ruta del origen al
164 \item[Tolerancia a omisiones] Responsable de lidiar con mensajes
165 perdidos o corruptos.
166 \item[Control de flujo] Responsable de minimizar la p\'erdida de datos
167 por la falta de espacio en buffers.
168 \item[Ordenamiento] Responsable de asegurar que los mensajes lleguen
169 en un orden dado por el criterio visto en la secci\'on previa.
170 \item[Recuperaci\'on ante errores] Responsable de reforzar el criterio
171 de ordenamiento y confiabilidad en relaci\'on al cambio de la
175 Esto es necesario para mantener la consistencia del sistema incluso
176 ante fallas en la conectividad de la red p\'ublica. Si alguna de estas
177 caracter\'isticas no estuviera presente, ser\'ia imposible asegurar esto.
180 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
183 El servicio de multicast debe atravesar varios sitios. Un sitio\cite{SITE}
184 es una LAN dentro de la WAN de LANs\cite{WAN}. Es importante un buen
185 manejo de sitios para evitar que el multicast atraviese redes que no
186 es necesario atravesar y esto no es una buena idea si hay que atravesar
187 una red p\'ublica que es lenta y que suele tener un costo por tr\'afico.
189 Para esto es necesario un mecanismo de detecci\'on de fallas de
190 comunicaci\'on entre sitios y de membres\'ia, para saber qu\'e sitios
194 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
195 \subsection{Particionamiento}
197 Al estar dividido el sistema en sitios, separados por la red p\'ublica, es
198 de esperarse que hayan problemas de conectividad entre los sitios. Esto
199 es conocido como una partici\'on y aunque un esquema de partici\'on
200 primaria\cite{PART} puede resultar una soluci\'on simple, para este caso
201 creemos que es conveniente buscar un esquema m\'as adecuado.
203 Lo que proponemos es que, de acuerdo a los sitios activos que vea cada
204 participante, se de un estado de stock {\em local} a esa partici\'on. De
205 esta forma se puede seguir operando en todas las particiones (no
206 s\'olo la primaria) aunque no se cuente con el estado del stock global
207 (consigui\'endose una degradaci\'on gr\'acil\cite{DEGRAD}).
209 Al recuperarse la conectividad se puede reestablecer el stock global
210 simplemente revisando la diferencia de los stocks locales antes de
211 particionarse y enviandose esa diferencia entre las distintas particiones.
214 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
215 \subsection{Asincron\'ia}
217 Al atravesar una red p\'ublica propensa a particiones, no se pueden dar
218 garant\'ias de tiempo, s\'olo pueden darse garant\'ias de {\em liveness}
219 (como, por ejemplo, se puede asegurar que "el mensaje llegar\'a
220 eventualmente", pero no dar precisiones de cu\'ando), debi\'endose
221 utilizar un modelo asincr\'onico\cite{ASYNC}.
223 Una desventaja de este modelo es que es muy dif\'icil diferenciar fallas
224 de tiempos de respuesta muy largos, por lo que es necesario agregar un
225 mecanismo de detecci\'on de fallas.
228 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
229 \section{Esquema de nombres}
231 Para poder identificar a los distintos participantes de forma
232 independiente de la arquitectura utilizada por el middleware, es necesario
233 usar un esquema de nombre y por lo tanto un sistema de resoluci\'on
234 de nombres\cite{DNS}.
236 Proponemos un esquema jer\'arquico como el utilizado por
237 internet\cite{RFC1034}. Éste, si bien acarrea la utilizaci\'on de nombre
238 impuros, es muy conveniente para el problema analizado, debido a que
239 permite un correcto funcionamiento ante particiones (si hay al menos
240 un servidor de nombres en cada partici\'on), aprovecha la local\'ia
241 a trav\'es del uso de cache, proveyendo adem\'as redundancia ante
242 fallas y es eficiente porque distribuye la carga de la resoluci\'on de
243 nombres evitando que sea tanto un punto \'unico de falla como un cuello
247 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
248 \section{Actividades}
250 Cualquier sistema distribuido est\'a compuesto por una combinaci\'on de 3
251 clases de actividades primitivas\cite{ACTIV}: coordinar\cite{ACTIV.COORD},
252 compartir\cite{ACTIV.SHARE} y replicar\cite{ACTIV.REPLI}.
254 Nuestra propuesta no es la excepci\'on, aunque se centra en s\'olo 2
255 actividades principales, de las cuales es responsable el m\'odulo de
256 administraci\'on de stock.
258 \subsection{Compartir}
259 El sistema tiene que compartir una visi\'on global de stock. Para
260 que el acceso a este recurso sea consistente es que se analizaron los
261 requerimientos de orden, que aseguran que siempre que se modifique dicho
262 stock, se haga de forma coherente.
264 \subsection{Replicar}
265 Debido a la posibilidad de particiones propusimos un esquema de
266 diseminaci\'on que permite que la informaci\'on de stock se replique en
267 todos los sitios, de manera tal que ante problemas de conectividad cada
268 sitio pueda seguir trabajando con su stock local. La consolidaci\'on ya
269 se ha explicado que es simple, s\'olo hay que calcular la diferencia de
270 stock que hubo en el tiempo sin conexi\'on.
273 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
274 \section{Arquitectura general}
276 A continuaci\'on presentamos, de forma resumida, un esquema de la
277 arquitectura general del sistema propuesta en base al an\'alisis realizado
278 en las secciones anteriores.
282 \includegraphics[width=3.0in]{arquitectura.eps}
283 \caption{Arquitectura general del sistema}
288 Como se puede apreciar en la Figura \ref{arquitectura}, el sistema que
289 proponemos est\'a basado en una arquitectura conocida\cite{GROUPARCH}
290 que consiste en 2 capas principales: Participantes y Sitios. Cada capa
291 est\'a compuesta por una serie de m\'odulos que pasaremos a describir
292 brevemente a continuaci\'on.
294 \subsection{Detector de fallas de sitios}
295 Este m\'odulo es responsable de la detecci\'on de fallas en la
296 comunicaci\'on entre sitios, fundamental para proveer un servicio de
297 membres\'ia de sitios para el manejo de particiones en caso de falla en
298 el enlace de la red p\'ublica.
300 \subsection{Multicast de red}
301 El m\'odulo de multicast de red provee comunicaci\'on {\em multi-peer}
302 no confiable a nivel de capa de red (como podr\'ia ser el servicio
303 de multicast que provee IP) como mecanismo b\'asico para el pasaje
304 de mensajes entre los nodos del sistema. Este m\'odulo utiliza el
305 Detector de fallas de sitios para propagar los mensajes s\'olo a los
308 \subsection{Comunicaci\'on de grupos}
309 Este m\'odulo es el encargado de agregar confiabilidad y orden a la
310 comunicaci\'on multicast para cumplir con la sem\'antica y restricciones
311 a nivel de grupos, proveyendo una comunicaci\'on entre participantes
312 adecuada para garantizar los requerimientos del sistema.
314 \subsection{Membres\'ia de sitios}
315 Este m\'odulo es el encargado de proveer informaci\'on sobre la
316 membres\'ia de los sitios participantes (activos) de los grupos, de manera
317 que el servicio de multicast no disemine mensajes en sitios inactivos.
319 \subsection{Detector de fallas de participantes}
320 Es an\'alogo al detector de fallas de sitios pero a nivel de
321 participantes. Informa a otros m\'odulos cuando se suma o se retira
324 \subsection{Autorizaci\'on de participantes}
325 Este m\'odulo usa un modelo similar a la resoluci\'on de nombres\cite{DNS}
326 para proveer informaci\'on sobre los grupos a los que puede asociarse un
327 participante. La estructura jer\'arquica distribuida permite aprovechar
328 la localidad en caso de particionamiento.
330 \subsection{Membres\'ia de participantes}
331 Provee informaci\'on de membres\'ia a nivel de participantes, la vista
332 \cite{VISTA}. Utiliza el detector de fallas de participantes y membres\'ia
333 de sitios para saber qu\'e participantes est\'an activos.
335 \subsection{Administraci\'on de stock}
336 Este m\'odulo es el que se encarga de, en base a la informaci\'on que
337 provee la membres\'ia de sitios y participantes, dar una vista de la
338 informaci\'on de stock del sistema, seg\'un la conectividad disponible
339 como as\'i administrar las actividades distribuidas\cite{ACTIV}.
341 \subsection{Participantes}
342 Son las entidades del sistema: F\'abricas y Puntos de Venta. Son los
343 verdaderos usuarios del middleware. Se comunican s\'olamente con el
344 m\'odulo de Administraci\'on de stock quien los abstrae del resto de
345 la arquitectura del sistema, proveyendo una interfaz simple para que
346 los programadores de la aplicaci\'on no deban lidiar con los problemas
347 complejos del sistema distribuido.
350 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
351 \section{Conclusiones}
353 Dados los requerimientos del modelo de negocio, y el costo de la
354 utilizaci\'on de la red p\'ublica, el modelo planteado impone una
355 soluci\'on \'optima para garantizar el bajo costo en las comunicaciones,
356 como tambi\'en as\'i dar garant\'ias de consitencia en la informaci\'on
357 manejada por los sistemas clientes que utilizan el middleware.
359 Un esquema de trabajo como el planteado ayudar\'a a mejorar la
360 integraci\'on de los diferentes grupos dentro del sistema y garantizar
361 una correcta escalabilidad del sistema a largo plazo, pudiendo integrar
362 nuevos grupos o nuevos clientes a los grupos existentes en la actualidad.
364 Tambi\'en se consigue mejorar la tolerancia a fallas y la disponibilidad
365 del sistema, consiguiendo una degradaci\'on gr\'acil ante particiones
366 a diferencia de la soluci\'on actual que deja inoperable al sistema
370 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
371 \section{Referencias}
372 \bibliography{tp_mom}
373 \bibliographystyle{is-unsrt}