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.