Você já ouviu falar sobre os oito padrões de disponibilidade de produção? Nesse artigo serão abordados alguns conceitos básicos sobre o assunto.
Importância e desafios da padronização de microsserviços
É fundamental que cada microsserviço integrante de um ecossistema atenda padrões de arquitetura, operação e organização capazes de garantir a sua disponibilidade. Esses padrões precisam ser genéricos o suficiente para poderem ser aplicados a todos, e ao mesmo tempo, específicos o bastante para poderem ser avaliados.
Um ecossistema de microsserviços costuma ser avaliado conforme acordos de nível de serviços, conhecidos como SLA’s (service-level agreements). Eles podem ser avaliados através do cálculo da disponibilidade:

A disponibilidade é o objetivo da padronização, mas apesar de útil, sozinha ela não é capaz de fornecer passos aplicáveis para que seja possível construir um microsserviço disponível. Para tanto, existe um conjunto de oito princípios que podem ser aplicados, que serão brevemente apresentados nos tópicos a seguir.
Estabilidade
Para ser estável, um microsserviço deve ser desenvolvido, implantado e alterado de forma que não surjam instabilidades que afetem sua disponibilidade ou a de outros serviços que o utilizem de alguma forma. De acordo com Fowler (2021), os requisitos para a construção de um microsserviço estável são:
- ciclo de desenvolvimento padronizado;
- processo de implantação estável;
- procedimentos estáveis de introdução e descontinuação
Para evitar e atenuar o surgimento de problemas provenientes do ciclo de desenvolvimento, o recomendável é que eles sejam implantados com cuidado e com lançamentos do tipo staging, pré release e produção.
Confiabilidade
Um microsserviço que possui confiabilidade é aquele no qual seus clientes, dependências e ecossistema podem fiar-se. Esse requisito e o de estabilidade são inseparáveis, pois os requisitos de estabilidade exigem confiabilidade. Fowler (2021), diz que para a confiabilidade ser atingida é necessário:
- processo de implantação, roteamento e descoberta confiáveis;
- planejamento capaz de evitar e reduzir possíveis falhas e dependências.
Como pode-se perceber, esses requisitos lembram bastante aqueles vistos no tópico sobre estabilidade.
Escalabilidade
Os microsserviços devem ser escaláveis, ou seja, capazes de tratar várias tarefas e/ou solicitações simultaneamente, precisando ter um bom desempenho e disponibilidade para tal. Para Fowler (2021), um microsserviço escalável deve:
- ter os obstáculos identificados;
- definir o crescimento de forma qualitativa e quantitativa;
- dispor de planejamento de capacidade automatizado;
- manter tratamento escalável de tráfego e dependências
- armazenar os dados de modo eficiente e escalável;
- ser capaz de redirecionar o tráfego em caso de falha;
- usar os recursos de hardware adequadamente.
Desempenho
Para que um microsserviço possua alto desempenho, é necessário que ele trate as solicitações e tarefas com rapidez e eficiência, além de usar a infraestrutura física de forma adequada. Esse requisito é intimamente ligado ao de escalabilidade, e Fowler (2021) indica que seus principais requisitos são:
- SLA’s dentro do determinado;
- tratamento e processamento eficaz;
- bom dimensionamento de capacidade para a infraestrutura física.
Tolerância a falhas e Prontidão para catástrofes
Para atender esses dois requisitos, o microsserviço precisa resistir a falhas e catástrofes internas e externas. É possível se preparar para cenários adversos, desde que eles sejam identificados e que sejam criadas estratégias e um planejamento para mitigá-los, que devem ser formatados em procedimentos simples de serem entendidos e executados. Fowler (2021) afirma que as principais exigências que para esse requisito são:
- identificação de falhas;
- tráfego gerenciado;
- estratégias para detectar e mitigar falhas durante o funcionamento;
- procedimentos claros para cenários problemáticos;
- realização de testes de resiliência, carga e caos.
Monitoramento
Serve para oferecer aos desenvolvedores as informações importantes sobre o funcionamento do microsserviço. Ele permite que seja feito um acompanhamento das métricas mais relevantes, facilitando a identificação de falhas, permitindo que a equipe de desenvolvimento possa agir com mais rapidez, ao invés de tomar conhecimento dos problemas apenas quando eles “estouram”. Fowler indica que um microsserviço é bem monitorado se:
- as principais métricas são identificadas e monitoradas;
- existe um logging adequado;
- possui dashboards simples e com os principais indicadores;
- possui alertas e profissionais de plantão para responder em caso de necessidade;
- possui um procedimento claro e padronizado para tratamento de falhas.
Documentação
Serve para criar e manter registrados os conhecimentos necessários acerca do microsserviço. Fowler (2021) indica que os seguintes pontos devem ser seguidos para se manter uma boa documentação:
- a documentação deve ser abrangente, centralizada e atualizada regularmente;
- precisa ser de fácil compreensão.
Conclusão
Podemos perceber que todos os oito requisitos brevemente apresentados acima são interligados, com várias dependências entre eles. É recomendável que os conceitos sejam ajustados para as necessidades de projeto para auxiliar na obtenção das vantagens de adotar a arquitetura de microsserviços.
Referência bibliográfica utilizada:
Fowler, S. J. Microsserviços prontos para produção: construindo sistemas padronizados em uma organização de engenharia de software. São Paulo: O’Reilly, 2021.

Deixe um comentário