Pergunta

Introdução

Na minha organização atual, temos muitas aplicações desktop e web toda a alimentação para o outro em algum ponto. Ao olhar depois de aplicativos mais antigos ou a criação de novas aplicações, está provando muito difícil tentar e lembre-se que o sistema dependem de outros sistemas, a fim de trabalho. Eu não estou falando sobre dependências de software como DLL e imagens, eu estou falando de sistemas inteiros como um sistema de Finanças dependentes do sistema de RH etc.

Minha pergunta

Qual é a melhor maneira de controlar como um sistema inteiro é dependente de outro?

A resposta pode sugerir quer um método de fazer o acima, um pacote de software ou documentação técnicas.

No meu caso particular, Muitos significa mais de 20 web e aplicação de desktop mais de uma dúzia de servidores.

Foi útil?

Solução

Eu diria para indicar claramente que em seu documento de concepção de arquitetura. Existem algumas ferramentas boas para isso, como Enterprise Architect . Esta ferramenta permite que você crie diagramas usando o padrão UML para descrever essas dependências de uma maneira clara e visual.

Outras dicas

A melhor fonte de informação é normalmente encontrado em Arquivos de Configuração. Isso normalmente tem as seqüências de conexão, URLs de serviço web etc, que lhe dará uma boa idéia sobre as dependências externas.

Outra técnica é usando perfis ou rastreamento e aplicação de filtros, podemos facilmente rastrear todas as chamadas externas. A maioria dos casos, a dependência é na camada de banco de dados e verificação de servidores vinculados e acompanhamento de suas dependências pode descobrir muitas informações.

Eu não tenho certeza se existe alguma maneira automática para obter esta informação, especialmente se os sistemas estão em múltiplas plataformas. Muito trabalho manual estarão envolvidos para documentar tudo isso.

Este é o tipo de aplicação que produzimos em Tideway Sistemas , e que muitas grandes organizações usam para apenas esta objetivo. Você pode usar o produto para descobrir sua propriedade, e usar os recursos de modelagem para descrever seus aplicativos de negócios (que tipicamente consistem em mais do que um pedaço de servidores de software e span).

Parece que você se qualificar para usar o livre Community Edition da Fundação, que você pode usar em até 30 servidores - basta download -lo e verificá-la. Em seguida, deixe-nos saber o que você pensa, por favor!

Disclaimer: Eu corro o grupo de desenvolvimento em Tideway . O produto é muito legal IMO, embora eu não tenho escrito nada disso me directamente:)

Desligue cada uma máquina por um e ver o que breaks ..; p

Falando sério, não há uma resposta simples para essa pergunta. Com uma coleção de sistemas que você poderia criar um diagrama mostrando as dependências básicas, mas não teria um grande significado a menos que você teve uma idéia do que a dependência era. Normalmente, o seu objetivo é determinar o que você precisa "revalidar" quando você altera um outro sistema, não as máquinas que você pode desligar aleatoriamente. Mas esse tipo de informação requer uma grande quantidade de detalhes e é difícil de se acumular no primeiro lugar.

Tudo isso eventualmente acaba em uma situação onde você está sistemas estão à frente de sua automação. Você nunca vai encontrar uma ferramenta de automação psiquiatra que mantém-se. Por outro lado, com tanto detalhe qualquer coisa necessária que pode cuidar de metade ou até um terço da carga de trabalho vai ser valiosa.

Esta é uma boa pergunta - lutamos com isso toda vez, parece

.

O que tentei fazer ao longo do último ano ou assim é ser "implacável" em duas coisas:

  1. automação - se você automatizá-lo e construir / implantar muitas vezes, em seguida, o processo de automação tenderá a fazer as coisas direito na maioria das vezes (definições de configuração, etc)

  2. wiki, wiki, wiki -. Nós tentamos ser hard-core em manter a equipe e projeto wiki up-to-date

Curioso para ver outras respostas.

soa como um trabalho para uma descoberta empresa que é automatizado na medida em que pode ir. Dependendo do tamanho da sua organização e do ambiente existem soluções diferentes. Para grandes paisagens você precisará de um CMDB (Configuration Management Database) de qualquer maneira. Produtos como HP Universal CMDB pode descobrir e rastrear dependências em ambientes de grande escala.

por exemplo. ele pode descobrir as relações entre um sistema SAP e é bases de dados relacionados e os anfitriões em que os sistemas distribuídos estão em execução e mostrar-lhe as dependências. Mais importante que pode avisá-lo no caso de algumas alterações não autorizadas são feitos para o ambiente real.

Portanto, a resposta depende do que você considera como 'muitos'.

Dois tipos de problemas envolvidos:

a.) Para aqueles que querem saber como determinar as dependências para cada componente

b.) Para quem quiser acompanhar interdependências e suas prioridades em um sistema de componentes. (Como, qual componente é instalado em um ambiente de teste primeiro etc ...)

Se o que você tem é uma série de componentes, para cada um dos quais você sabe dependências, e você quer uma ordem de dependência para toda a lista de componentes, você pode encontrar um módulo Perl chamado Algorithm :: Dependência :: mandada de algum valor. Há outros módulos relacionados que podem trabalhar com bancos de dados de registros de componentes etc, ou registros de arquivo mesmo simples. Mas um aviso: Eu tive problemas para fazer este trabalho.

Como alternativa, uma ferramenta de gráficos podem ser de valor.

Esta é a função de um grupo "Gerenciamento de Configuração". Para começar, você vai ter que falar com os "especialistas" em sua empresa e criar um mapa / gráfico de aplicações. Use graphviz / cs para gerar um diagrama, não vai ser bonito, mas ele vai te dar uma representação visual das dependências.

Aqui está um exemplo:

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

Espero que isso ajude,

mapeamento de dependência do sistema é uma coisa. configurações verdadeiros ambientais, de uid, senhas, configurações de representação, nomes de bancos de dados e outros dados que mudam de desenvolvimento para qa para uat para a produção é o verdadeiro desafio.

Quem lojas / lembra-los todos?

O desenvolvedor não sabe qual servidor de produção (s) sua aplicação irá residir em. Ele só documenta o nome de seu banco de dados de desenvolvimento, de uid, pwd de e descreve seu tabelas de banco de dados, seqüências de conexão, etc.

Uma vez que é verificado no repositório de código, e migraram para o ambiente de QA, que é o detentor dos dados necessários para atualizar os arquivos de configuração com os valores adequados?

Mais uma vez, quando migrou para QA e UAT, quem?

Quem está é a responsabilidade de informar o grupo de migração próxima do que precisa ser mudado?

Na minha empresa, isso é o que nos leva a mais dor de cabeça. No momento em que seja aprovado pelo processo de controle de mudança interna e uma solicitação de migração é criado para migrar o aplicativo no ambiente de produção, tudo o que preciso é uma definição de configuração para ser esquecido para arruinar toda a implementação, e isso acontece o tempo todo porque linhas claras de responsabilidade não são desenhados (na minha opnião).

Além responsabilidade que eu acho que é um repositório central de informações.

ie. Um sistema que armazena todas as configurações para todos os projetos / aplicações, e com base no seu "papel" você pode / não pode ver os valores reais.

O desenvolvedor termina sua construção, e cria uma solicitação de migração no "sistema". A pessoa QA recebe notificação de que construir ### está pronto. Os QA pessoa entra para o "sistema" e recupera as instruções de migração. Agora eles sabem claramente o que precisa ser feito, e eles beging a verificar o código-out e processo de migração.

Repita para UAT e, finalmente, prod.

Quando alguém constrói este sistema Migração me avise, porque isso vai ajudar muitas pessoas.

Talvez eu construí-lo ... Quem quer me contratar?

Eu era novo para um trabalho, e foi sugerido como uma primeira tarefa que vou identificar as dependências do sistema. Acontece que o meu chefe queria dizer era que ir falar com as pessoas - de que maneira eu iria aprender quem era quem. Eu pensei que meu chefe me queria escrever um programa de computador para fazer isso. E assim eu fiz. Minha suposição era de que se um programa era um cliente de outro programa (um serviço ou um servidor), então netstat -pant e netstat -panu seguida, grep para ESTABELECIDO lhe daria isso. Você pode identificar os serviços por grepping a saída para ouvir.

Esta é apenas uma solução parcial. Sim, diz-lhe o que as aplicações falar com quais aplicativos, mas há outras dependências. Assim, por exemplo, alguns aplicativos usar DNS para encontrar os seus servidores, enquanto outros são difíceis codificados ou em arquivos de configuração. Qualquer coisa que usa TCP ou UDP é dependente de IP. Na maioria dos lugares, IP depende ARP e Ethernet ou Wi-Fi. dependente de um serviço em outra rede local tudo é dependente de pelo menos um router.

Se você tem um balanceador de carga ou algum tipo de cluster, em seguida, o problema torna-se mais interessante. Se eu um serviço que sai de um balanceador de carga e qualquer servidor "real" por trás do firewall vai para baixo, em seguida, o serviço é degradado, mas ainda é para cima.

Ele fica ainda mais interessante porque os serviços (programas) dependem de servidores (hardware). Servidores, por sua vez, dependem de energia e ar condicionado.

Assim como o meu pensamento em espiral fora de controle, as coisas ficaram mais horrivelmente complicada, e eu pensei sobre a criação de uma linguagem específica de domínio (DSL) para capturar todas essas dependências. Pensei que, por exemplo, server_1, server_3 e server_5 estão em fase de alimentação 1; server_2, server_4 e server_6 estão em fase de alimentação 2. server_1, Server_3 e server_5 todos falham em aproximadamente o mesmo tempo: provavelmente a fase 1 falhou. Eu ainda não percebi bem isso. Obviamente, a situação pode ser representado por um grafo dirigido, eu só não trabalhei fora os detalhes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top