Microsserviços é uma abordagem para o desenvolvimento de aplicativos em que uma grande aplicação é construída como um conjunto de serviços modulares. Cada módulo suporta um objetivo comercial específico e usa uma interface simples e bem definida para se comunicar com outros conjuntos de serviços. O desenvolvedor de software e autor Martin Fowler é creditado com o surgimento da ideia de quebrar serviços em uma arquitetura orientada a serviços para microsserviços. Em um artigo de 2014, ele afirmou:
“O estilo arquitetônico do microsserviço é uma abordagem para o desenvolvimento de um único aplicativo como um conjunto de pequenos serviços, cada um executando em seu próprio processo e se comunicando com mecanismos leves, muitas vezes uma API de recursos HTTP. Esses serviços são construídos em torno de recursos empresariais e implementáveis independentemente por uma engenharia de deploys automatizados.”
Prós e contras dos microsserviços
Entre as vantagens para o desenvolvimento de software, os microsserviços:
- São facilmente implementados;
- Exigem menos tempo de produção;
- Podem escalar rapidamente;
- Pode ser reutilizado entre diferentes projetos;
- Trabalha bem com containers, como o Docker;
- Atividades complementares na nuvem
No entanto, nem tudo são flores, e existem também inconvenientes com os microsserviços, tais como:
- Potencialmente muito granulares;
- Latência durante uso intensivo; e
- Os testes podem ser complexos.
Microsserviços vs arquitetura monolítica
Os microsserviços surgiram para ajudar a resolver as frustrações que os desenvolvedores vivenciavam com grandes aplicativos que exigem ciclos de mudança interconectados. Em um aplicativo monolítico, qualquer pequena alteração ou atualização exigia a construção e deploy de um aplicativo totalmente novo. Isso inevitavelmente significa que qualquer desenvolvimento de aplicativos implica uma certa quantidade de planejamento, preparação, tempo e, potencialmente, dinheiro.
Os microsserviços, por outro lado, requerem pouco gerenciamento centralizado. As aplicações de microsserviços são independentemente implementáveis e escaláveis. Elas aumentam as capacidades comerciais com menos planejamento e produção do que tradicionais aplicações monolíticas.
Arquitetura de microsserviços vs SOA
O SOA tem sido a prática de desenvolvimento padrão há quase duas décadas. No entanto, a habilidade do SOA é colocada em cheque ao trabalharmos com a computação em nuvem. Com a nuvem, o SOA não possui escalabilidade e ainda reduz as solicitações de alteração, com isso limitando o desenvolvimento de aplicativos.
Alguns desenvolvedores sustentam que os microsserviços são apenas uma abordagem mais granular para a arquitetura orientada a serviços. Defensores do modelo SOA consideram a arquitetura de microsserviços como a evolução natural do SOA para acomodar a computação em nuvem.
Outros acreditam que os microsserviços são uma abordagem mais agnóstica da plataforma para o desenvolvimento de aplicativos e, portanto, deve ter um nome único. Este grupo poderia argumentar que o SOA vive nas camadas do gerenciamento de microsserviços.
Como os microsserviços funcionam?
Em uma arquitetura de microsserviços, cada serviço executa um processo único e, geralmente, gerencia seu próprio banco de dados. Isso não só proporciona às equipes de desenvolvimento uma abordagem mais descentralizada para a construção de software, como também permite que cada serviço seja implementado, reconstruído, redistribuído e gerenciado de forma independente.
“Os microsserviços se baseiam em aprimoramentos de negócios para melhorar o produto global, não apenas o projeto em questão. Em aplicações monolíticas, o trabalho só está completo quando o projeto estiver concluído. Nos microsserviços, o trabalho está completo ao longo da vida útil de um produto. Empresas como Amazon e Netflix empregam esse modelo de negócios.”
Microsserviços e containers
Um problema que os desenvolvedores notaram com os microsserviços é com a acessibilidade e frequência. Se o usuário acessa os microsserviços com frequência, o tempo de resposta e a produtividade diminuem em máquinas virtuais. A containerização, usando a virtualização baseada em nuvem para executar e fazer o deploy de aplicativos sem o lançamento de uma VM inteira para cada aplicativo, confere fluidez e flexibilidade aos microsserviços.
Usar containers e microsserviços em conjunto melhora as capacidades da nuvem. Isso porque o microsserviço é escalável e reutilizável, enquanto os containers fornecem recursos eficientes. Ambos os microsserviços e containers podem funcionar de forma independente, mas tornou-se claro que a sua fusão é capaz de melhorar a frequência de tempo de execução, as políticas de hospedagem em nuvem e as ferramentas da nuvem.
À medida que a computação em nuvem segue na direção do desenvolvimento de software, os microsserviços devem desempenhar um grande papel no design da arquitetura. Ainda há céticos; no entanto, as características de um microsserviço serão uma opção para futuros imprevistos.
Segurança de microsserviços
A arquitetura de microsserviços pode aliviar alguns problemas de segurança que surgem com aplicações monolíticas. O microsserviço simplifica o monitoramento de segurança porque as várias partes de um aplicativo estão isoladas. Uma violação de segurança pode acontecer em uma seção sem afetar outras áreas do projeto. Os microsserviços também respondem com resistência a ataques distribuídos de negação de serviço quando usados com containers, minimizando a aquisição de infraestrutura com muitas solicitações de servidor.
No entanto, nem tudo são flores. Ainda há desafios na segurança de apps de microsserviços, incluindo:
- Mais áreas de rede estão abertas a vulnerabilidades.
- Menos consistência geral entre as atualizações do aplicativo permitem mais violações de segurança.
- Ainda não existem muitas opções de ferramentas de segurança para microsserviços.
- Existe ainda uma falta de controle em relação a software de terceiros.
Os desenvolvedores de microsserviços criaram estratégias para aliviar os problemas de segurança. Para ser proativo, use um escaner de segurança, use limitações de controle de acesso, redes internas seguras – incluindo ambientes Docker – e opere fora dos silos, comunicando-se com todas as partes da operação.
Fonte: TechTarget
Gostou do conteúdo? Tem alguma dúvida? Entre em contato com nossos Especialistas Mandic Cloud, ficamos felizes em ajudá-lo.