Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Dica
Esse conteúdo é um trecho do eBook, arquitetura de microsserviços do .NET para aplicativos .NET em contêineres, disponível em do .NET Docs ou como um PDF para download gratuito que pode ser lido offline.
Como o nome indica, uma arquitetura de microsserviços é uma abordagem para criar um aplicativo de servidor como um conjunto de pequenos serviços. Isso significa que uma arquitetura de microsserviços é orientada principalmente para o back-end, embora a abordagem também esteja sendo usada para o front-end. Cada serviço é executado em seu próprio processo e se comunica com outros processos usando protocolos como HTTP/HTTPS, WebSockets ou AMQP. Cada microsserviço implementa um domínio de ponta a ponta específico ou uma funcionalidade de negócios dentro de um determinado limite de contexto e cada um deve ser desenvolvido de forma autônoma e implantável de forma independente. Por fim, cada microsserviço deve possuir seu modelo de dados de domínio relacionado e lógica de domínio (soberania e gerenciamento de dados descentralizado) e pode ser baseado em diferentes tecnologias de armazenamento de dados (SQL, NoSQL) e linguagens de programação diferentes.
Qual deve ser o tamanho de um microsserviço? Ao desenvolver um microsserviço, o tamanho não deve ser o ponto importante. Em vez disso, o ponto importante deve ser criar serviços flexívelmente acoplados para que você tenha autonomia de desenvolvimento, implantação e escala para cada serviço. É claro que, ao identificar e criar microsserviços, você deve tentar torná-los o menor possível, desde que não tenha muitas dependências diretas com outros microsserviços. Mais importante do que o tamanho do microsserviço é a coesão interna que ele deve ter e sua independência de outros serviços.
Por que uma arquitetura de microsserviços? Em suma, ele fornece agilidade a longo prazo. Os microsserviços permitem uma melhor manutenção em sistemas complexos, grandes e altamente escalonáveis, permitindo que você crie aplicativos com base em muitos serviços implantáveis independentemente que têm ciclos de vida granulares e autônomos.
Como um benefício adicional, os microsserviços podem ser dimensionados de forma independente. Em vez de ter um único aplicativo monolítico que você deve aumentar como uma unidade, é possível aumentar microsserviços específicos. Dessa forma, você pode dimensionar apenas a área funcional que precisa de mais poder de processamento ou largura de banda de rede para dar suporte à demanda, em vez de dimensionar outras áreas do aplicativo que não precisam ser dimensionadas. Isso significa economias de custo, porque você precisa de menos hardware.
Figura 4-6. Implantação monolítica versus a abordagem de microsserviços
Como mostra a Figura 4-6, na abordagem monolítica tradicional, o aplicativo é dimensionado clonando todo o aplicativo em vários servidores/VM. Na abordagem de microsserviços, a funcionalidade é segregada em serviços menores, para que cada serviço possa ser dimensionado de forma independente. A abordagem de microsserviços permite alterações ágeis e iteração rápida de cada microsserviço, pois você pode alterar áreas específicas e pequenas de aplicativos complexos, grandes e escalonáveis.
A arquitetura de aplicativos baseados em microsserviços refinados permite práticas de integração e de entrega contínua. Ela também acelera a entrega de novas funções no aplicativo. A composição refinada de aplicativos também permite executar e testar microsserviços isoladamente e evoluí-los de forma autônoma, mantendo contratos claros entre eles. Desde que você não altere a interfaces ou contratos, é possível alterar a implementação interna de qualquer microsserviço ou adicionar novas funcionalidades sem interromper outros microsserviços.
Veja a seguir aspectos importantes para permitir o sucesso na entrada em produção com um sistema baseado em microsserviços:
Monitoramento e verificações de integridade dos serviços e da infraestrutura.
Infraestrutura escalonável para os serviços (ou seja, nuvem e orquestradores).
Design e implementação de segurança em vários níveis: autenticação, autorização, gerenciamento de segredos, comunicação segura etc.
Entrega rápida de aplicativos, geralmente com equipes diferentes com foco em microsserviços diferentes.
Práticas e infraestrutura de DEvOps e CI/CD.
Destes, apenas os três primeiros são abordados ou introduzidos neste guia. Os dois últimos pontos, que estão relacionados ao ciclo de vida do aplicativo, são abordados no e-book adicional Containerized Docker Application Lifecycle with Microsoft Platform and Tools.
Recursos adicionais
Mark Russinovich. Microsserviços: uma revolução de aplicativos alimentada pela nuvem
https://azure.microsoft.com/blog/microservices-an-application-revolution-powered-by-the-cloud/Martin Fowler. Microsserviços
https://www.martinfowler.com/articles/microservices.htmlMartin Fowler. Pré-requisitos de microsserviços
https://martinfowler.com/bliki/MicroservicePrerequisites.htmlJimmy Nilsson. Computação em nuvem de blocos
https://www.infoq.com/articles/CCC-Jimmy-NilssonCesar de la Torre. Ciclo de vida do aplicativo Docker em contêineres com a Plataforma e as Ferramentas da Microsoft (livro eletrônico para download)
https://aka.ms/dockerlifecycleebook