Prática de Workflow Engine em Youzan DevOps

1. Fundo

Com o crescimento da escala de Youzan, os assuntos de operação e manutenção estão se tornando cada vez mais complexos. Como podemos coordenar o desenvolvimento, operação e manutenção, a relação entre ferramentas e processos de forma mais eficiente e reduzir o pessoal de operação e manutenção de baixa eficiência, alta intensidade e sujeito a erros É um grande desafio liberá-los completamente da operação manual e liberar suas habilidades e energia em maior extensão.

Após dois anos de evolução, Opsflow, o mecanismo de fluxo de trabalho da plataforma Youzan DevOps, evoluiu de um sistema que suporta apenas sequências fixas simples e scripts personalizados, e lentamente evoluiu para uma GUI que pode ser operada sem codificação e é altamente personalizada. , Um mecanismo de fluxo de trabalho visual ciente do progresso que oferece suporte a centenas de milhares de processos diferentes, incluindo, mas não se limitando a, vários aplicativos de permissão, aplicativos de componentes de aplicativos, aprovações relacionadas a big data, aprovações de liberação, integração e entrega contínuas, etc.

Este artigo irá detalhar a construção e evolução do Opsflow do mecanismo de fluxo de trabalho Youzan DevOps a partir dos seguintes aspectos principais:

Antes de o Opsflow ser aperfeiçoado, enfrentamos uma série de problemas:

  1. Baixo grau de personalização do processo
  2. As pessoas envolvidas no processo não conseguem perceber o andamento de um processo
  3. Incapaz de visualizar o processo, precisa de carne humana para verificar a configuração, fácil de errar
  4. Personalização de front-end baixa
  5. Vários processos de aprovação estão espalhados em diferentes aplicações, repetindo a roda
  6. Não suporta a determinação dinâmica de ramificações do processo
  7. O sistema antigo não pode lidar com questões como aprovadores solicitando licença
  8. Falta de suporte de tipo de participante
  9. O custo de acesso ao novo processo é alto
  10. Sem relatórios estatísticos centralizados, é difícil perceber o status da operação
  11. ...

Projeto do sistema Opsflow e sua implementação em Youzan, incluindo:

  1. Projeto do sistema Opsflow
  2. O status atual da plataforma DevOps em Youzan
  3. Roteiro

2. Projeto do motor de fluxo de trabalho

2.1 Projeto de arquitetura

! [m7tC0P.png ] (https://imgchr.com/i/m7tC0P)

A implementação do Opsflow consiste no módulo Opsflow-FSM que gerencia máquinas de estado finito, o módulo Opsflow-Web que interage com o mundo externo, o módulo Opsflow-Plugins que direciona os plug-ins, o módulo Worker que executa tarefas específicas e o módulo de monitoramento que monitora o consumo de tarefas. Apresente esses módulos um por um.

2.1.1 Opsflow-FSM

Até a publicação deste artigo, a plataforma DevOps da Youzan tinha 60 processos conectados ao Opsflow. Da perspectiva do Opsflow, cada processo é uma máquina de estado finito ( máquina de estado finito ). Quando o administrador gera um novo por meio da interface GUI no plano de fundo de gerenciamento do Opsflow O processo é essencialmente criar um novo FSM no Opsflow. Por exemplo, o "Novo aplicativo ES" na figura abaixo é um FSM gerenciado pelo Opsflow-FSM. Opsflow-FSM é o núcleo do Opsflow e impulsiona a ordem de trabalho, por exemplo , Quando um tíquete "Novo aplicativo ES" é executado com o status de "Aprovação do administrador ES", o Opsflow-FSM pode obter três transferências "Concordo" / ", que podem ser acionadas pelo aprovador atual persistindo a instância do tíquete no RDS Rejeitado "/" Fechar tíquete ", após qualquer fluxo através da página ser acionado, ele é direcionado pelo Opsflow-FSM para um dos status" Execução de script de rejeição de aprovação "/" Execução de script de aprovação concluída "/" Execução de script de rejeição de aprovação ", então Por analogia, no final, o Opsflow-FSM leva uma ordem de serviço (ou seja, uma instância de um FSM específico) ao estado "final", completando o ciclo de vida de uma ordem de serviço.

! [m7t9mt.png ] (https://imgchr.com/i/m7t9mt)

2.1.2 Opsflow-Web

Opsflow-FSM apenas gerencia FSM e não pode interagir com o mundo exterior. Opsflow-Web encapsula Opsflow-FSM e adiciona verificação de permissão (se uma pessoa tem permissão para processar uma ordem de serviço específica, se um aplicativo pode operar um determinado tipo de fluxo de trabalho ( FSM), etc.) e outros módulos para fornecer serviços ao mundo exterior na forma de API RESTful, interagir com outros sistemas (sistema de publicação, sistema CI & CD, sistema de nível de água, etc.) sob a plataforma Youzan DevOps. O anterior "Novo aplicativo ES" Pegue o processo como exemplo, quando o tíquete está no nó "Aprovação do administrador ES", o Opsflow-Web renderiza os três botões correspondentes no front end de acordo com as três informações de fluxo fornecidas pelo Opsflow-FSM. Depois que o aprovador pressiona um dos botões, a ação A API RESFful fornecida pelo Opsflow-Web interage com o front end, acionando o Opsflow-FSM para transferir as instâncias do FSM para a ramificação correspondente e o FSM avança em direção ao estado "final".

2.1.3 Plugins Opsflow

Com base em considerações de escalabilidade, Opsflow fornece um sistema de plug-in Opsflow-Plugins. O sistema de plug-in envia vários eventos de Opsflow-FSM no processo de transferência FSM entre diferentes estados, por exemplo, o evento "ordem de serviço configura um novo participante", Graças aos Opsflow-Plugins, uma vez que os alunos de operação e manutenção recebem uma solicitação como "notificar xxx ao configurar um novo participante em uma ordem de serviço", é fácil de implementar e só precisa fornecer uma implementação muito simples O plug-in é suficiente, especificamente para se inscrever no evento correspondente e fornecer uma interface de retorno de chamada. Atualmente, existem notificações WeChat empresariais, itens de tarefas de Ops e outros plug-ins que acessam o Opsflow por meio de plug-ins Opsflow, que enriquece as funções do Opsflow enquanto mantém o núcleo do Opsflow simplificado .

2.1.4 Trabalhador

Depois que a ordem de serviço passa pelo nó de aprovação, ela normalmente fluirá para o nó "script" definido na máquina de estado (o atributo participante do nó é o nó FSM de "script"), e Opsflow-Web enviará a tarefa correspondente (por exemplo, "Novo O processo de aplicativo ES é especificamente responsável por criar novas tarefas de recursos relacionadas ao ES) para a fila de mensagens, e o Trabalhador obtém a execução da tarefa da fila de mensagens. Depois de executar a tarefa específica, ele aciona o Opsflow-FSM para continuar o fluxo. A realização do Trabalhador usa uma fila de tarefas distribuída As filas de aipo podem ser rapidamente expandidas horizontalmente quando são empilhadas.

2.1.5 Front-end

Estrutura da página de front-end

! [m7tPTf.png ] (https://imgchr.com/i/m7tPTf)

O front-end do Opsflow fornece exibição de página padrão para todos os fluxos de trabalho, incluindo "fluxograma" / "andamento da ordem de trabalho" / "detalhes da ordem de trabalho" (apresentando informações sobre instâncias de ordens de trabalho na forma de chave / valor) / "operações de ordens de trabalho", etc. Componente, o administrador pode configurar convenientemente se deseja exibir e solicitar esses componentes em segundo plano de gerenciamento.

Caso de componente front-end personalizado de fluxo de trabalho

![m7tFk8.png](https://imgchr.com/i/m7tFk8)

Diferentes fluxos de trabalho podem precisar personalizar seus próprios front-ends. Por exemplo, o processo "Novo aplicativo ES" mencionado acima precisa exibir "informações de campo" / "SLA" e outras informações na página. Opsflow fornece suporte avançado para front-ends de fluxo de trabalho personalizado , Para o processo de "novo aplicativo ES", o aluno responsável pelo desenvolvimento só precisa fornecer um componente React. Quando o Opsflow renderiza a página de detalhes do tíquete, ele carrega dinamicamente (via react-loadable) e o componente front-end correspondente é renderizado no topo Na posição mostrada na figura, Opsflow fornece o componente personalizado com propriedades ricas. Essas propriedades cobrem todas as informações da ordem de serviço atual. O componente personalizado pode extrair os dados correspondentes no back-end correspondente para renderização com base nessas propriedades, conforme mostrado na figura acima. Vários exemplos.

Desenho de fluxograma

A máquina de estado finito mantida por Opsflow-EFM é Dirigido gráfico acíclico (DAG) em estrutura de dados. Opsflow usa uma muito excelente DAG fluxograma desenho da biblioteca com base no nível hierárquico disposição introduzida no algoritmo de uma técnica para Desenho Directed gráficos . Dagre- d3 desenha um processo muito elegante, veja o exemplo na figura abaixo.

! [m7tktS.png ] (https://imgchr.com/i/m7tktS)

2.2 A solução para "uma série de problemas" no design Opsflow

Para as questões 1, 2, 3, 4, 9

Opsflow fornece uma interface de GUI para gerenciar FSM. Os administradores de processo podem configurar vários atributos de nós e bordas em FSM na página. Locais irracionais no processo podem ser expostos por meio de fluxogramas em tempo real, e os administradores podem fazer isso imediatamente Após o ajuste, a estrutura frontal reduzida no artigo anterior resolve os problemas 2, 4.

! [m7tAfg.png ] (https://imgchr.com/i/m7tAfg)

Para a pergunta 5

A maioria dos processos na plataforma DevOps da Youzan foi migrada para Opsflow, e os processos baseados no antigo sistema de workflow ficaram offline, e os requisitos comuns em muitos processos serão implementados no Opsflow, evitando rodadas repetidas.

Em resposta à pergunta 6

Opsflow fornece a função de "expressão condicional". Especificamente, o administrador do tíquete pode especificar uma "expressão condicional" ao configurar um "fluxo" FSM. Por exemplo, no processo de aprovação de declaração do Hive

{row_count} >= 1000000 and not {upload}

Opsflow-FSM no estado de decisão quando uma ordem de trabalho com base na avaliação da expressão é um nó de processo dinâmico, o exemplo se encaixa row_counte uploadé diferente das propriedades de uma única instância de trabalho, por exemplo, row_countrepresentantes de "processo de aprovação declaração Hive" Processo O número de linhas afetadas pelo SQL na instância do tíquete, a expressão acima traduzida em "palavras humanas" significa: "O número de linhas é maior do que 1000000 e o usuário carrega para o nó XXX", onde "nó XXX" pode ser um gerenciamento Hive Pessoa autorizada, caso contrário, pode ser TL etc.

Em resposta à pergunta 7

Opsflow está intimamente integrado com outros sistemas internos, como o OA em Youzan. Quando o Opsflow calcula o próximo participante do nó de acordo com a configuração do FSM, ele substituirá automaticamente o aprovador do nó pelo agente de saída de acordo com as informações do agente de saída no OA (se o aprovador original for de férias).

Em resposta à pergunta 8

Opsflow atualmente oferece suporte a participantes de nó, incluindo:

  • Configurável
  • A lógica de várias pessoas e várias pessoas pode ser "e" ou "ou"
  • Líder de equipe, aplicativo PE / DEV e outras funções
  • customizar
  • Script (Python)
  • Obtenha um agente de licença automaticamente
  • Alguém aprova (você gosta do aplicativo do funcionário)
  • Notificar sistemas externos
  • Notificação WeChat empresarial
  • impulso
  • ……

Ele basicamente cobre as necessidades dos tipos de participantes em vários processos de aprovação.

Participantes do nó com suporte do Opsflow:

  • Circulação condicional
  • Qualquer número de transferências
    ! [M7tVpQ.png ] (https://imgchr.com/i/m7tVpQ)

Para a pergunta 10

O Opsflow gera gráficos estatísticos executando tarefas estatísticas periodicamente, e os administradores podem compreender intuitivamente a operação de diferentes processos.

3. Situação atual

! [m7tZlj.jpg ] (https://imgchr.com/i/m7tZlj) ! [m7te6s.png ] (https://imgchr.com/i/m7te6s)

O Opsflow está online há mais de um ano e, após iterações contínuas, melhorou significativamente sua facilidade de uso, funcionalidade, escalabilidade e estabilidade. Até agora, existem 60 capturas de tela do processo, envolvendo todos os aspectos do DevOps, e há elogios fora da plataforma DevOps. Existem também plataformas de big data e acesso a processos de departamentos como a indústria da beleza.

Quatro, Roteiro

! [m7tmXn.png ] (https://imgchr.com/i/m7tmXn)

O Opsflow implementará a sincronização de processos entre ambientes no futuro (por exemplo, o ambiente de QA para teste no ambiente de produção Prod, etc.), permitindo que todos os desenvolvedores executem a criação / edição de processos de funções de gerenciamento aberto e acelere ainda mais o acesso de novos processos. Fluxo de trabalho duplicado, aprovação rápida de terminal móvel mais conveniente e outras funções atendem melhor aos alunos que gostam de operação, manutenção e desenvolvimento.

Você elogia a fundação para garantir a honra da equipe DevOps?

Acho que você gosta

Origin blog.csdn.net/YZcoder/article/details/101059143
Recomendado
Clasificación