Qué son los sistemas distribuidos

3/25
Recursos

Aportes 16

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

En mi experiencia, cada tipo de sistema presenta sus distintos retos:

  • El sistema monolitico permite tener una alta cohesion entre todas las partes, los flujos de nuestro negocio son cercanos entre ellos y usan una misma base de datos, el desarrollo con pocas personas puede ser agil, pero cuando un proceso se vuelve pesado todo el sistema completo falla. Porque es un solo sistema.

Ejemplo: Tenemos una app monolitica como youtube. Pero, cada vez que alguien está subiendo un video muy pesado (que tienes que convertir a distintos formatos) las personas demoran mas en iniciar sesión.

Un solo proceso está afectando a toda la aplicación. Es por esto, que muchas empresas se mueven a sistemas distribuidos, a microservicios.

Ahora, esa aplicación de youtube, ya no es un solo sistema, ahora lo podemos dividir en distintas servicios, los usuarios tendrán su propia base de datos y su propio sistema, la carga de videos y conversión tendrá otra base de datos y así con todas las pequeñas partes. TODO se divide.

El reto llega cuando, los sistemas tienen que comunicarse entre ellos de la forma request/response y uno de esos microservicios tiene un bajo performance, ahora, la cohesion de nuestra aplicación baja, tenemos sistemas separados pero aún podrían causar conflictos cuando uno de ellos falla.

Cada una tiene retos y soluciones interesantes 🤘🏼

Explicación visual de un monolito vs un sistema distribuido o también llamado microservicios

Microservicio y Microfrontends

Los sistemas distribuidos ofrecen muchas ventajas, entre las principales es que permite tener un sistema Flexible y Escalable

Otra de las grandes ventajas de los sistemas distribuidos es que puedes ajustar el “poder” que necesita un servicio y de este modo no desperdiciar recursos, si tienes un servicio que necesita mucha RAM, CPU etc bueno pues ese servicio especifico lo aprovisionas con servidores más grandes, pero si no lo requiere pues igualmente lo ajustas a tus necesidades.

Una de las ventajas que he visto de los siistemas distribuidos es que podemos escalar horizontalmente muy rapido y en momentos precisos de la demanda de las transacciones.

Entonces un sistema distribuido no permite escalar la aplicación de forma horizontal más que de forma vertical, porque en vez de necesitar más recursos en un solo servidor, distribuimos la carga de trabajo entre distintos servidores y así sería más díficil que la aplicación colapse para el usuario

veo en tu ejemplo que el monolito es enfocado a la infraestructura pero en microservicios como se llega a la conclusión de que es un monolito (al nivel de arquitectura de software)?

Qué alternativas tenemos cuando nuestro sistema es distribuido para hacer un seguimiento eficiente de un posible bug? me imagino un sistema inmenso que falla en “x” cosa y luego revisando los logs llego a una parte, luego esta reviso el request que consume este otro servicio, este otro servicio respondió aquello, esta respuesta se persiste, luego la devuelve… etc, etc, me formo un meollo. ¿Qué herramientas existen para darle seguimiento a los posibles bugs? o para hacer debug correctamente a un sistema de esta magnitud.

es raro observar el uso de sistemas monolíticos al 100% en el software moderno. Generalmente las bases de datos se aíslan en otros servers especializados para esto. Lo menciono como aporte

Varios servicios desplegados con Docker en varias máquinas, cuenta como sistema distribuido?

La blockchain es un sistema distribuido con esteroides.

Los sistemas distribuidos y los microservicios son lo mismo??? Platicando un poco con Guillermo Rodas, me comentaba todos dicen que están utilizando microservicios, pero no es así, ya que siendo un poco estrictos cada microservicio debería de ser una entidad de nuestro negocio, por ejemplo si tenemos un sistema de chat, vamos a tener un microservicio para los usuarios y uno para los chats.

Lo que me encantan los sistemas distribuidos es que puedes interconectar todo, tu aplicación está soportada por diversos servidores, tienes un servidor especial que se dedica únicamente al almacenamiento, otro que se dedica únicamente a las bases de datos, todo está abstraído.
.
Hoy en día, usar servicios cloud es una buena forma de tener un sistema distribuido, y de hecho Google Cloud Patform es uno de los sistemas Cloud top para armar sistemas distribuidos.
.
En este video Freddy explica muy bien cómo funcionan este tipo de sistemas cloud y por qué es mucho mejor que un hosting compartido o dedicado (claro, todo depende de la situación de la aplicación)

excelente