Create an account or log in

Keep learning for free! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
6 Hrs
35 Min
13 Seg

Elementos de un sistema distribuido en la nube

4/25
Resources

What is a distributed system?

In the world of technology, distributed systems have become an essential trend, allowing applications to scale beyond the traditional client-server model. A distributed system is composed of multiple components that work together to form a whole, offering significant advantages in terms of performance and scalability.

What are the common components of a distributed system?

The components of a distributed system are not fixed; they can vary depending on the purpose and needs of the system. However, some of the most common elements include:

  • Load balancers: These help distribute traffic evenly among servers, avoiding overloads and ensuring availability.
  • Databases: These can be relational or non-relational, depending on the type of data and structure needed.
  • Queues (Qs): Such as AWS SQS, which allows handling queued operations, avoiding data loss and improving process management.
  • Storage services: For example, Amazon S3, which allows you to store various types of files efficiently.
  • Notification systems: Such as SNS, which implements the publish-subscriber pattern to send notifications to subscribers, useful in applications with push notifications.

These elements act as pieces of a puzzle, allowing you to design and adapt the distributed system to your specific needs.

How can a distributed system grow?

The growth of a distributed system is almost unlimited. Unlike the traditional client-server model, which is limited to a single, complete server, distributed systems can expand globally:

  • Globalization and scalability: A distributed system can have servers located in various regions of the world, such as North America, South America and Europe, thus optimizing speed and performance.
  • Redundancy and efficiency: Multiple instances of an application can be running in different locations. A user in South America, for example, will connect to a server in that region for a better experience.

This geographic arrangement of components allows distributed systems to not only support current demands, but also prepare for future growth and fluctuations in traffic.

Why is proximity important in a distributed system?

Proximity directly affects system performance. By having servers located close to the end user:

  • Reduced latency: The distance data must travel is minimized, speeding service delivery and improving the user experience.
  • Improved performance: Users receive faster and more efficient responses, which is crucial for critical or high-demand applications.

Ultimately, the strategic location of servers in a distributed system is key to providing optimal performance and meeting modern user expectations. When designing such a system, the geographical distribution of users must be considered to optimize efficiency and speed of response. The creativity and flexibility offered by distributed systems allow you to build an environment tailored to your needs, always promoting scalability and performance. Keep exploring and expanding your knowledge in this fascinating field!

Contributions 15

Questions 1

Sort by:

Want to see more contributions, questions and answers from the community?

¿Alguna vez han visto que algunos videojuegos les piden que elijan el servidor? Ahora saben por qué.
.
Como adicional, recomiendo que sus sistemas distribuidos tengan servidores lo más cercano posible entre sí. Es decir, no vas a poner el servidor en América y la base de datos en Asia.
.
Adicionalmente, para distribuir tu sistema al rededor del mundo podemos usar un CDN o Content Delivery Network (Red de distribución de contenido), esto permitirá distribuir servidores en todo el mundo que se conectan a nuestro servidor central, y en dado caso de que este caiga, la CDN los mantendrá en línea con una copia en caché de los datos ^^

Elementos que podemos encontrar en un Sistema Distribuido

  • Load Balancers
  • Máquinas Virtuales
  • Bases de datos Relacionales o No Relacionales
  • Servicios de Colas (Ejemplo: SQS)
  • Servicios de Storage (Ejemplo: S3)
  • Servicios Publisher-Suscriber (Ejemplo: SNS)
  • Pipelines

¿Hasta donde puede llegar a crecer un Sistema Distribuido?
Podemos globalizar nuestro sistema teniendolo distribuido en diferentes partes del mundo a través de servicios implementados en diferentes servidores

Para dar un poco de ejemplo de como podemos romper todo un monolito en pequeños servicios, podemos tener un caso de Login, busqueda y subida de videos en una app, todo eso en un monolito, es un servidor cualquiera con capacidades de RAM/CPU/Storage establecido.

En microservicios podemos encontrar:

  • Cada vez que alguien suba un video, puede publicar un evento para que los demás sistemas (como el de busquedas) se enteren del nuevo video usando SNS.

  • Cada vez que se suba un video, también se enviará un mensaje a una cola, para que se transforme la calidad y resolución al video.

  • Los videos pueden estar alojados en S3, así, no tendremos problema porque se nos acabo el espacio en disco.

  • Usando APIGateway y Lambdas podremos crear un pequeño servicio que haga consultas a una base de datos para hacer la busqueda de videos.

Esto de los microsevicios, es una nueva forma de pensar, cambia muchos paradigmas de construir todo en una misma app, para entregar las responsabilidades a distintos servicios enfocados a cada tarea.

\n Perdon que no se viusalice bien :’( algo pasa con esta caja de comentarios jaja

Para aprender lo mas util de aws que puedes implementar en futuros o actuales proyectos le recomiendo el libro de https://gumroad.com/l/aws-good-parts

Primer comentario del curso

Este concepto de sistemas distribuidos va muy acorde con el principio de responsabilidad unica, cada servicio se encarga de hacer lo suyo.

Es aquí donde los proveedores de computo en la nube nos facilitan demasiado la vida, bastan unos pocos clics para configurar tu servidor para que se aloje en X o Y país, o incluso que sea multi-región.

o.O por eso en localhost:8000 es bien rápido 😅

El profesor pregunta : ¿Hasta donde puede llegar a crecer un sistema distribuido?

En algunos sistemas se detecta automáticamente tu zona para conectarte al servidor de conveniencia.

Qué pasa con las restricciones que tiene un sistema distribuido? Extrañé la mención del teorema CAP

Un como ingeniero de software debemos de en no siempre inventar la rueda cuando ya existe, podemos aprovechar las herramientas y servicios que existen en el mercado para tener proyectos bien elaborados y con gran escalabilidad. Siempre pensando que casa cosa tiene su caso de uso especifico.

excelente curso

Excelente