Automatizando Processos Com Microsserviços e Mecanismo de Fluxo de Trabalho
Por ExpressoNaWeb
Ao projetar uma arquitetura de microsserviço, você define limites lógicos em torno de recursos significativos de negócios ou domínio. Dentro de um limite de serviço, a equipe de desenvolvimento tem autonomia para fazer o que for necessário para implementar os requisitos técnicos e de negócios. Dessa forma, os microsserviços proporcionam um alto nível de flexibilidade e agilidade; cada equipe pode fornecer mudanças em seu próprio ritmo sem ter que reconstruir e reimplantar um aplicativo de negócios monolítico todas as vezes.
É importante ter em mente que um processo de negócios automatizado de ponta a ponta normalmente se estende por vários microsserviços individuais que devem se comunicar e colaborar para alcançar um resultado comercial. É aí que entra um mecanismo de fluxo de trabalho. Um mecanismo de fluxo de trabalho gerencia o fluxo de um processo de negócios entre microsserviços visualizando, operando e relatando o processo.
Vantagens de um mecanismo de fluxo de trabalho para microsserviços
A automação de processos alimentada por um mecanismo de fluxo de trabalho oferece muitas vantagens, como:
Manipulação de estado – Persiste o estado de cada instância de um processo de negócios (por exemplo, cada pedido feito em um site de comércio eletrônico)
Processos explícitos – Torna os processos de negócios explícitos em vez de enterrá-los em código (ou seja, são mais fáceis para as equipes entenderem e modificarem).
Correlação e coordenação de mensagens – Mescla mensagens pertencentes a uma única instância de processo e decide as próximas etapas – linguagens de modelagem de processos (por exemplo, Business Process Model and Notation) implementam automaticamente padrões de mensagens como sequências, sincronização, exclusão mútua e tempos limite.
Compensação por problemas – Compensa se um processo de negócios encontrar um problema que exija que etapas concluídas anteriormente sejam desfeitas
Tratamento de tempo limite – rastreia a passagem do tempo e, se uma mensagem não chegar a tempo, automaticamente age ou muda para outro caminho no fluxo do processo.
Tratamento de erros – Permite especificar o comportamento que deve ocorrer quando ocorre um erro (por exemplo, repetir uma ação, seguir outro caminho)
Transparência do status – Permite que as equipes de operações monitorem o status das instâncias do processo em tempo real.
Colaboração – Fornece modelos gráficos de processos de negócios que facilitam a discussão entre as partes interessadas do negócio, desenvolvedores e equipes de operações.
Projete microsserviços independentes
Os microsserviços independentes permitem dimensionar sua força de trabalho de desenvolvimento, mantendo a agilidade e um ritmo de desenvolvimento rápido. Microsserviços bem projetados têm os seguintes atributos:
Ciclos de vida independentes – As equipes devem ser capazes de desenvolver, implantar e fazer escolhas de tecnologia para seus microsserviços sem envolver outros serviços ou equipes. Iniciar, interromper ou alterar um microsserviço não deve interromper outros serviços.
Interfaces estáveis – As interfaces de microsserviço não devem ser interrompidas durante as atualizações. Se forem necessárias alterações incompatíveis em uma interface, elas devem ser implementadas por meio do controle de versão da interface.
Comunicação assíncrona – um microsserviço precisa se comunicar com outros serviços, mas o par pode não estar disponível imediatamente. A comunicação assíncrona por meio de mensagens pode remover dependências da disponibilidade de outros serviços.
Resiliência e tolerância a falhas – Um microsserviço ainda deve ser executado se outros serviços no sistema causarem problemas.
Degradação– Se um microsserviço falhar, o restante do sistema ainda deve funcionar da melhor maneira possível (por exemplo, voltando a um fluxo padrão).
Escalabilidade independente – Cada microsserviço deve ter acesso aos recursos necessários para responder às mudanças na carga do sistema sem afetar outros serviços.
Armazenamento de dados local – Cada microsserviço deve armazenar uma cópia local dos dados necessários para cumprir sua tarefa.
Alinhar microsserviços ao domínio de negócios
As organizações geralmente lutam para implementar microsserviços que dão suporte a um processo de negócios de ponta a ponta, mantendo a independência e preservando a autonomia da equipe de desenvolvimento. Por exemplo, imagine que você tenha um processo de atendimento para pedidos online de produtos digitais. Requer microsserviços como pagamento, inventário, envio e assim por diante. Embora cada serviço opere de forma independente, o processo de atendimento de pedidos requer uma cadeia lógica de eventos.