Pregunta

Introduction

En mi organización actual, tenemos muchas aplicaciones de escritorio y web que se complementan entre sí en algún momento. Cuando se cuidan aplicaciones antiguas o se crean nuevas aplicaciones, resulta muy difícil tratar de recordar qué sistema depende de otros sistemas para funcionar. No estoy hablando de dependencias de software como DLL e imágenes, estoy hablando de sistemas completos como un sistema de Finanzas que depende del sistema de recursos humanos, etc.

Mi pregunta

¿Cuál es la mejor manera de rastrear cómo un sistema completo depende de otro?

La respuesta puede sugerir un método para hacer lo anterior, un paquete de software o técnicas de documentación.

En mi caso particular, Many significa más de 20 aplicaciones web y de escritorio en una docena de servidores.

¿Fue útil?

Solución

Diría que lo indique claramente en su documento de diseño de arquitectura. Hay algunas buenas herramientas para esto como Enterprise Architect . Esta herramienta le permite crear diagramas utilizando el estándar UML para describir estas dependencias de una manera clara y visual.

Otros consejos

La mejor fuente de información se encuentra generalmente en los archivos de configuración. Por lo general, esto tiene las cadenas de conexión, las direcciones URL del servicio web, etc., lo que dará una buena idea sobre las dependencias externas.

Otra técnica es mediante el uso de perfiles, el rastreo y la aplicación de filtros, podemos rastrear fácilmente cualquier llamada externa. La mayoría de los casos, la dependencia está en la capa de la base de datos, y la comprobación de los servidores vinculados y el seguimiento de sus dependencias puede desenterrar mucha información.

No estoy seguro de si hay alguna forma automática de obtener esta información, especialmente si los sistemas están en varias plataformas. Se requerirá mucho trabajo manual para documentar todo eso.

Este es el tipo de aplicación que producimos en Tideway Systems , y que muchas organizaciones grandes usan solo para esto propósito. Puede usar el producto para descubrir su patrimonio, y usar las capacidades de modelado para describir las aplicaciones de su negocio (que generalmente consisten en más de una pieza de software y servidores de rango).

Parece que calificas para usar la Community Edition of Foundation gratuita, que puedes usar en hasta 30 servidores, solo descárgalo y compruébalo. ¡Entonces háganos saber lo que piensa por favor!

Descargo de responsabilidad: dirijo el grupo de desarrollo en Tideway . El producto es muy bueno de la OMI, aunque yo no he escrito nada de él directamente :)

Apague cada máquina una por una y vea qué se rompe ...; p

En serio, no hay una respuesta simple a esta pregunta. Con una colección de sistemas, podría crear un diagrama que muestre las dependencias básicas, pero no tendría mucho significado a menos que tuviera una idea de lo que era la dependencia. Por lo general, su objetivo es determinar lo que necesita " revalidar " Cuando cambia otro sistema, no a qué máquinas puede apagar al azar. Pero ese tipo de información requiere una gran cantidad de detalles y es difícil de acumular en primer lugar.

Todo esto eventualmente termina en una situación en la que sus sistemas están por delante de su automatización. Nunca encontrarás una herramienta de automatización que se mantenga al día. Por otro lado, con tantos detalles necesarios, cualquier cosa que pueda ocuparse de la mitad o incluso un tercio de la carga de trabajo será valiosa.

Esta es una buena pregunta: parece que luchamos con esto cada vez.

Lo que hemos intentado hacer durante el último año más o menos es ser " despiadado " en dos cosas:

  1. automatización: si lo automatiza y crea / implementa a menudo, el proceso de automatización tenderá a hacer las cosas bien la mayoría de las veces (configuración, etc.)

  2. wiki, wiki, wiki: tratamos de ser firmes para mantener el equipo y la wiki del proyecto actualizados.

Curioso por ver otras respuestas.

Suena como un trabajo para un descubrimiento empresarial que está automatizado en la medida de lo posible. Dependiendo del tamaño de su organización y del entorno, existen diferentes soluciones. Para paisajes grandes, de todos modos necesitará una CMDB (Base de datos de administración de configuración). Productos como HP Universal CMDB puede descubrir y rastrear dependencias en entornos a gran escala.

Por ejemplo, puede descubrir las relaciones entre un sistema SAP y sus bases de datos relacionadas y los hosts en los que se ejecutan los sistemas distribuidos y mostrarle las dependencias. Más importante es que puede advertirle en caso de que se realicen cambios no autorizados en el entorno real.

Así que la respuesta depende de lo que consideres 'muchos'.

Dos tipos de problemas involucrados:

a.) para aquellos que desean saber cómo determinar las dependencias para cada componente

b.) para aquellos que desean hacer un seguimiento de las interdependencias y sus prioridades en un sistema de componentes. (como en, qué componente se instala primero en un entorno de prueba, etc.)

Si lo que tiene es una serie de componentes, para cada uno de los cuales conoce dependencias, y desea un orden de dependencia para la lista completa de componentes, puede encontrar un módulo de Perl llamado Algorithm :: Dependency :: Ordered to be de algun valor. Hay otros módulos relacionados que pueden trabajar con bases de datos, registros de componentes, etc., o incluso con registros de archivos simples. Pero una advertencia: he tenido problemas para hacer que esto funcione.

Alternativamente, una herramienta gráfica puede ser valiosa.

Esta es la función de una " Gestión de la configuración " grupo. Para comenzar, deberá hablar con los " expertos " en su empresa y crear un mapa / gráfico de aplicaciones. Usa graphviz / dot para generar un diagrama, no será bonito, pero te dará una representación visual de las dependencias.

Aquí hay un ejemplo:

digraph g {
 rankdir=LR;
 app1->app2->db1;
 app1->app3;
}

Espero que esto ayude,

El mapeo de dependencia del sistema es una cosa. El verdadero desafío es la configuración del entorno real, los uid, las contraseñas, la configuración de suplantación, los nombres de las bases de datos y otros datos que cambian de desarrollo a qa a uat a producción.

¿Quién las almacena / recuerda todas?

El desarrollador no sabe en qué servidores de producción residirá su aplicación. Solo documenta el nombre de su base de datos de desarrollo, uid's, pwd's y describe sus tablas de bases de datos, cadenas de conn, etc.

Una vez que se registra en el repositorio de códigos y se migra al entorno de control de calidad, ¿quién es el guardián de los datos necesarios para actualizar esos archivos de configuración con los valores adecuados?

Nuevamente, cuando se migra a QA y UAT, ¿quién?

¿Quién tiene la responsabilidad de informar al próximo grupo de migración de lo que debe cambiarse?

En mi empresa, esto es lo que nos causa más dolor de cabeza. Cuando el proceso de control de cambios interno lo aprueba y se crea una solicitud de migración para migrar la aplicación al entorno de producción, todo lo que se necesita es una configuración de configuración que debe olvidarse para arruinar toda la implementación, y sucede todo el tiempo porque No se dibujan líneas claras de responsabilidad (en mi opinión).

Más allá de la responsabilidad, creo que es un depósito central de esta información.

es decir. Un sistema que almacena todos los ajustes de configuración para todos los proyectos / aplicaciones, y se basa en su función " " " puede / no puede ver los valores reales.

El desarrollador finaliza su compilación y crea una solicitud de migración en el " sistema " ;. La persona de control de calidad recibe la notificación de que la compilación ### está lista. La persona de control de calidad inicia sesión en el " sistema " y recupera las instrucciones de migración. Ahora saben claramente lo que hay que hacer, y están empezando el proceso de migración y código de salida.

Repita para UAT y, finalmente, prod.

Cuando alguien construya este sistema de Migración, avíseme, porque ESO ayudará a muchas personas.

Tal vez lo construya yo mismo ... ¿Quién quiere contratarme?

Era nuevo en un trabajo, y se sugirió como primera tarea que identifique las dependencias del sistema. Resulta que lo que mi jefe quería decir era ir a hablar con la gente, de esa forma, yo sabría quién era quién. Pensé que mi jefe quería que escribiera un programa de computadora para hacer eso. Y así lo hice. Mi suposición era que si un programa era cliente de otro programa (un servicio o un servidor), entonces netstat -pant y netstat -panu entonces grep para ESTABLISHED le daría ese. Puede identificar los servicios grepping la salida para ESCUCHAR.

Esto es sólo una solución parcial. Sí, le indica qué aplicaciones hablan con qué aplicaciones, pero hay otras dependencias. Entonces, por ejemplo, algunas aplicaciones usan DNS para encontrar sus servidores, mientras que otras están codificadas o en archivos de configuración. Cualquier cosa que use TCP o UDP depende de IP. En la mayoría de los lugares, la IP depende de ARP y de Ethernet o WiFi. Cualquier cosa que dependa de un servicio en otra LAN depende de al menos un enrutador.

Si tiene un equilibrador de carga o algún tipo de clúster, entonces el problema se vuelve más interesante. Si soy un servicio que sale de un equilibrador de carga, y ya sea " real " el servidor detrás del firewall se desactiva, entonces el servicio está degradado pero aún está activo.

Se vuelve aún más interesante porque los servicios (programas) dependen de los servidores (hardware). Los servidores, a su vez, dependen de la potencia y del aire acondicionado.

Entonces, cuando mi pensamiento se salió de control, las cosas se complicaron mucho más, y pensé en crear un lenguaje específico de dominio (DSL) para capturar todas estas dependencias. Pensé que, por ejemplo, server_1, server_3 y server_5 están en la fase de potencia 1; server_2, server_4 y server_6 están en la fase de energía 2. Server_1, Server_3 y server_5 fallan casi al mismo tiempo: probablemente la fase 1 haya fallado. Todavía no me he dado cuenta de eso. Obviamente, la situación se puede representar mediante un gráfico dirigido, simplemente no he resuelto los detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top