Hubo un tiempo en que poner de pie un sitio web o aplicación era simple y directo y no las redes complejas que son hoy. Los desarrolladores o administradores web no tenían que preocuparse o incluso considerar la complejidad de los sistemas distribuidos de hoy. La receta era sencilla. ¿Tienes una base de datos? Comprobar. ¿Tienes un servidor web? Comprobar. Genial, su sistema estaba listo para ser implementado. Una vez que se implementó el sistema, para asegurarse de que todo funcionara sin problemas, solo se necesitaron un par de comprobaciones simples para verificarlo. ¿Se estaba ejecutando la base de datos? Sí. ¿Se está ejecutando el servidor web? Perfecto. El último elemento a comprobar fue si el servidor web era capaz de hablar con la base de datos? Impresionante, todo está funcionando como se esperaba. Al siguiente proyecto.

Ok, así que tal vez ese sea un ejemplo demasiado simplificado, pero entiendes el punto. Configurar y monitorear estos sistemas fue bastante fácil en comparación con los estándares actuales. No había aplicaciones web dinámicas o escenarios de usuario complejos que tener que monitorear. Para sitios web básicos y simples, un desarrollador pudo automatizar fácilmente estas comprobaciones y solucionar cualquier problema antes de que un usuario los encontrara. Si bien hay más opciones cuando se trata de crear un sitio web, la complejidad del entorno se ha expandido. Atrás quedaron los días de la arquitectura monolítica. Con los rápidos avances en tecnologías de aplicaciones web, lenguajes de programación, servicios de computación en la nube, microservicios, entornos híbridos, etc., el monitoreo de sistemas distribuidos se vuelve mucho más difícil de llevar a cabo y administrar. Tanto es así que se ha convertido en un rol de trabajo dedicado a tiempo completo dentro de las organizaciones.

 

¿Qué es un sistema distribuido?

Por definición, un sistema distribuido es cualquier sistema que se compone de múltiples componentes en una variedad de máquinas que trabajan juntas para aparecer como un sistema único y organizado. Aunque la definición puede parecer sencilla, en el mundo real, un sistema distribuido es uno de los entornos más complejos de entender, administrar y monitorear. Esta complejidad está “oculta” para el usuario final, como la forma en que funciona una API (Interfaz de programación de aplicaciones), ya sea un usuario real u otra computadora.

Estos sistemas pueden incluir servidores físicos, contenedores, máquinas virtuales o incluso un dispositivo, o nodo, que se conecta y se comunica con la red. Debido a esto, incluso los componentes más pequeños pueden causar problemas de gran alcance que son difíciles de identificar y solucionar. Dentro de una organización, la responsabilidad de monitorear estos grandes sistemas distribuidos generalmente recae en los equipos de ingeniería de confiabilidad del sitio (SRE).

 

Tipos de sistemas distribuidos

Cuando pensamos en la arquitectura de un sistema, lo primero que puede surgir en su mente es el sistema cliente-servidor tradicional, donde un servidor era el recurso compartido entre muchos dispositivos y máquinas diferentes, como impresoras, computadoras, clientes, etc. Con el tiempo, eso se ha convertido en algo diferente. Hoy en día, hay una variedad de arquitecturas y sistemas en uso. Por ejemplo, puede pensar en una red de telefonía celular como un tipo de sistema distribuido, que consiste en una red de dispositivos conectados a Internet que comparten la carga de trabajo de recursos.

 

Peer-to-Peer

En este tipo de red, las cargas de trabajo se distribuyen en cientos o miles de máquinas diferentes. Blockchain es un buen ejemplo de esto. No hay un solo servidor o máquina que se encargue de la carga de trabajo.

 

Tres niveles

Un sistema de tres niveles es una arquitectura de aplicación de software que consta de una capa de presentación, capa de aplicación y capa de datos, o núcleo. La ventaja de este sistema es que cada nivel se ejecuta independientemente de los otros niveles, por lo que se pueden actualizar o escalar sin afectar a los otros niveles.

 

Multinital

Multi-tier, también conocido como N-tier, es cualquier arquitectura de aplicación con más de un solo nivel, sin embargo, esto no es tan común porque cuantas más capas se utilicen, más complejo y difícil es de administrar. ¿Y quién realmente quiere más complejidad? Por lo tanto, el sistema de tres niveles sigue siendo popular hoy en día y cuando se discuten los sistemas de varios niveles o N niveles, generalmente se refiere a los sistemas de tres niveles.

 

Características clave de un sistema distribuido

 

Sin reloj compartido

Cada nodo mantiene su propio reloj local, o temporizador, y los valores de hora pueden ser diferentes entre los nodos. La sincronización se logra a través de un reloj lógico para mantener y ordenar eventos.

 

Sin memoria compartida

Cada proceso tiene su propia memoria independiente con la que trabaja. El estado se distribuye a través del sistema.

 

Concurrencia

Los componentes de software y hardware son autónomos y ejecutan tareas simultáneamente. La simultaneidad se refiere a la capacidad del sistema para llevar a cabo múltiples tareas en paralelo y administrar el acceso y el uso de los recursos compartidos.

 

Heterogeneidad

Un sistema distribuido se compone de una variedad de componentes de hardware y software con diferentes sistemas operativos y tecnologías, lo que significa que los procesadores están separados e independientes entre sí. Para que todo funcione en armonía, el middleware se utiliza para actuar como el conducto entre estos diferentes componentes de hardware y software. También hay varios tipos de middleware, incluyendo middleware de base de datos, middleware de servidor de aplicaciones, middleware orientado a mensajes (MOM), middleware web, middleware de procesamiento de transacciones (TP) y muchos más.

 

Beneficios de un sistema distribuido

Los sistemas distribuidos son ideales para proyectos a gran escala donde los recursos se pueden compartir a través de la red, lo que ayuda a crear y construir un sistema más confiable. Todos estos beneficios proporcionan a la organización un sistema más flexible y robusto.

 

Escalabilidad

En un sistema distribuido, se pueden agregar (o eliminar) nuevos dispositivos o máquinas de manera económica aprovechando la potencia de cálculo de los nodos individuales. Esto proporciona a las organizaciones escalar horizontalmente para proporcionar una mejor funcionalidad y rendimiento.

 

Fiabilidad

Otro beneficio clave de los sistemas distribuidos es la confiabilidad. Las interconexiones entre los nodos y el resto del sistema permiten comunicarse y compartir datos de manera eficiente.

 

Tolerancia a fallos

La tolerancia a fallos es la capacidad de un sistema para responder positivamente a una falla dentro de los componentes de software o hardware y los servicios continuarán funcionando correctamente. Como mencionamos anteriormente, en un sistema distribuido, el uso compartido de recursos es un componente clave, lo que hace posible la tolerancia a fallos.

 

Desventajas de los sistemas distribuidos

Todos sabemos que no existe tal cosa como un sistema perfecto y hay una compensación por cada decisión tomada, especialmente en los casos en que se trata de tecnologías complejas y modernas. Estas son algunas de las desventajas de los sistemas distribuidos.

 

Complejidad

Cuanto más complejo es el entorno, más difícil se vuelve de gestionar. Más nodos y dispositivos significan que se procesan y pasan más datos, lo que crea una mayor probabilidad de que algo salga mal. Por ejemplo, esto puede provocar problemas de sincronización de datos y errores de nodo. Esta es una razón crucial por la que las organizaciones necesitan invertir en una solución de monitoreo. Profundizaremos más en el monitoreo de sistemas distribuidos en las siguientes secciones. Esto también entra en el principio de SRE de aceptar el riesgo y aprender a manejar las fallas.

Lea: Principios de la SRE: Las 7 reglas fundamentales

 

Latencia

Reiterando lo que mencionamos en la sección anterior, cuanto más complejo y distribuido se vuelve el sistema, más margen de error. Esto también incluye la latencia, o el tiempo que tardan los datos o una solicitud en atravesar una red. También es una de las cuatro señales doradas de monitoreo, que también incluye tráfico, error y saturación.

 

Seguridad

La gestión de un sistema pequeño y centralizado puede considerarse un paseo por el parque en comparación con los sistemas distribuidos. La seguridad es de suma importancia en todos los aspectos del sistema, desde la propia red hasta los dispositivos y nodos que se conectan a ella. Las organizaciones deben garantizar que los datos estén seguros, especialmente con el auge del panorama de Internet de las cosas, donde cualquier dispositivo podría convertirse en un riesgo potencial para la seguridad.

 

Recursos

Los grandes sistemas cuestan mucho dinero. No hay forma de evitarlo. Existe la inversión inicial en hardware y software, además del mantenimiento general y los gastos generales para apoyar el desarrollo continuo y la implementación de aplicaciones y servicios.

 

Supervisión de un sistema distribuido

El lento cambio de los sistemas monolíticos a los sistemas distribuidos ha cambiado la forma en que las organizaciones y los equipos piensan sobre el monitoreo de su infraestructura, sitios web, aplicaciones, API, etc. Ya no se centran en un solo sistema gigante, los métodos tradicionales de monitoreo también han tenido que evolucionar para satisfacer las necesidades de las organizaciones modernas. Si bien las prácticas modernas de DevOps y Agile intentan garantizar que cuando las aplicaciones y los servicios pasen a producción no haya errores presentes, todavía existe la posibilidad de que los problemas de rendimiento eventualmente levanten su fea cabeza. No solo eso, el enfoque en la experiencia del usuario es primordial, especialmente en el panorama actual de dispositivos móviles. Los equipos deben asegurarse de que también están monitoreando el rendimiento desde la perspectiva del usuario, así como del propio sistema.

Para los SSE, la definición de monitoreo puede significar muchas cosas diferentes, sin embargo, hay un par de tipos distintos: monitoreo de caja blanca y monitoreo de caja negra.

 

Monitoreo de caja blanca

La supervisión de caja blanca se ocupa de comprender cómo se ejecutan sus aplicaciones en el servidor. Las métricas medidas podrían ser el monitoreo de solicitudes HTTP (Protocolo de transferencia de hipertexto), códigos de respuesta, métricas de usuario, etc. Piense en el monitoreo de caja blanca como una ventana al sistema interno. El monitoreo de caja blanca se utiliza para comprender o predecir por qué algo puede fallar.

 

Monitoreo de caja negra

Por otro lado, el monitoreo de caja negra se centra en métricas del servidor como espacio en disco, CPU, memoria, carga, etc., que generalmente se consideran las métricas de monitoreo centrales y la comprensión del rendimiento desde la perspectiva del usuario final. El monitoreo de caja negra se utiliza para comprender por qué algo dentro del sistema no funciona correctamente.

 

Lo mejor de ambos mundos

A pesar de que puede haber dos tipos distintos de supervisión que definen las responsabilidades de una SRE, rara vez se utiliza un solo tipo de supervisión por sí sola. Normalmente, se utiliza una combinación de cada tipo. Dependiendo de cuán crítica sea la aplicación o el servicio, se puede usar la supervisión de caja blanca para evitar posibles problemas. El monitoreo de caja negra se puede usar en los casos en que un SRE o equipo puede necesitar ser alertado inmediatamente por problemas que afectan a los usuarios.

 

Conclusión: Monitoreo de Sistemas Distribuidos

Dotcom-Monitor proporciona múltiples soluciones que satisfacen las necesidades únicas de los ingenieros de confiabilidad del sitio y los equipos de DevOps para monitorear el rendimiento de extremo a extremo de sitios web, aplicaciones, API, servicios e infraestructura. Junto con características como opciones de alerta personalizables, paneles de rendimiento, informes completos y análisis, la plataforma Dotcom-Monitor permite a los equipos de SRE y monitoreo de rendimiento identificar rápidamente la disponibilidad, el tiempo de actividad y los problemas de rendimiento a escala. La configuración de tareas de monitoreo proactivas y sintéticas es fundamental para sistemas complejos y distribuidos, especialmente en lo que respecta a la experiencia del usuario final.

La plataforma Dotcom-Monitor puede ayudar a los equipos a identificar de manera rápida y eficiente las causas de los problemas de rendimiento, ya sea a nivel de infraestructura o de usuario final. Los paneles de control, análisis y datos de registro en tiempo real proporcionan un flujo continuo de métricas de monitoreo para que pueda estar seguro de que sus sistemas, aplicaciones, sitios y servicios funcionan según lo previsto. Las alertas se pueden personalizar para cumplir con los requisitos de su equipo y pueden integrarse con las herramientas de comunicación y colaboración que ya utiliza.

¡Comience con la plataforma Dotcom-Monitor hoy mismo con la prueba gratuita! Si prefiere un recorrido uno a uno por la plataforma y las soluciones individuales, comuníquese con nuestro equipo para una demostración en vivo.

 

Latest Web Performance Articles​

Start Dotcom-Monitor for free today​

No Credit Card Required