Las 8 falacias de la computación distribuida

Hoy me encontré en la red con un texto que no es muy nuevo, pero que yo no conocía y quiero compartirlo acá. Peter Deutsch creó una lista de 7 aspectos o presunciones erroneas que arquitectos o diseñadores de sistemas distribuidos pueden obviar fácilmente y que a la larga pueden tener consecuencias como errores y limitaciones en el alcance del sistema. Esta lista fue creada en 1994 y posteriormente fue adicionada una más por James Gosling en 1997, para finalmente ser conocidas colectivamente como las 8 falacias de la computación distribuida.


1. Confiabilidad de la red
La red es frágil y se puede caer, se puede ir la luz, los servidores pueden fallar. Por más robustos que sean los servicios en la nube, no son inmunes a fallas. Por esto, una aplicación debe estar diseñada de tal manera que pueda sortear fallos de este tipo mediante mecanismos como reintentos.

2. Latencia
La latencia puede ser insignificante si se diseña una aplicación para trabajar dentro de una red local, pero no es lo mismo si se trabaja sobre internet. Se deben tener consideraciones especiales si la aplicación soportará usuarios alrededor del mundo. Igualmente, hay que tener en cuenta que muchas operaciones pueden ser hechas desde dispositivos móviles, donde se debe asumir que una conexión es lenta y se pierde la conexión con frecuencia.

3. Ancho de banda
Si bien día a día crecen las infraestructuras y se tiene mejor conectividad, no se puede asumir que el ancho de banda es infinito. Hay que tener en cuenta que pueden existir congestiones, y también hay que tener en cuenta que en ciertas circunstancias hay limitaciones de conexión, sobretodo para dispositivos moviles.

4. Seguridad
La peor creencia que se puede tener es asegurar que una red es 100% segura. Troyanos, virus, software malicioso, usuarios malintencionados y vulnerabilidades de software están siempre presentes en la red. Desde el primer día de un proyecto se debe tener en cuenta la seguridad como un aspecto fundamental para la construcción de un software.

5. Topología de red
No podemos pensar que la red nunca cambia. Servidores y clientes están cambiando constantemente, hay nuevos dispositivos, nuevos servicios, nuevas direcciones IP, etc. En una aplicación siempre se debe pensar en la configuración de estos aspectos, nunca puede ser estática o “hardcodeada”, o de lo contrario puede traer problemas.

6. Administración
Es posible que en una red pequeña exista un administrador, pero en grandes redes es muy dificil que haya uno y solo un administrador. Sin embargo muchas veces se diseñan aplicaciones que son muy complicadas para que alguien que no está familiarizado con ellas pueda administrarlas o diagnosticar un error facilmente.

7. Costo de transporte
No podemos asumir que el costo de una red es cero. En cuanto a infraestructura, hay que pagar un costo por el hardware, ancho de banda y capacidades como balanceo de red. En cuanto al software, también se tiene un costo asociado al performance de la aplicación, de ahí que la recomendación es siempre diseñar pensando en hacer el software lo más optimo posible. También se debe tener en cuenta escenarios con dispositivos móviles, que como se menciona en un punto anterior, tienen una conectividad limitada, y muchas veces así tenga una conectividad ilimitada el usuario debe pagar por lo que usa.

8. Red homogenea
En una red soportamos existe una gran variedad de protocolos y dispositivos. Cada aplicación debe tener en cuenta sus necesidades para poder soportar aquellos aspectos que sean necesarios.

Igualmente, les dejo el link a la página que recopila la lista original y fuente de este post.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: