Guia de microserviços: questões envolvendo segurança, benefícios e complexidade

Microserviço é 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 microserviços. Em um artigo de 2014, ele afirmou:

O estilo arquitetônico do microserviç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 microserviços

Entre as vantagens para o desenvolvimento de software, os microserviç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 microserviços, tais como:

  • Potencialmente muito granulares;
  • Latência durante uso intensivo; e
  • Os testes podem ser complexos.


Microserviços vs. arquitetura monolítica

Os microserviç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 microserviços, por outro lado, requerem pouco gerenciamento centralizado. As aplicações de microserviç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 microserviç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 microserviços são apenas uma abordagem mais granular para a arquitetura orientada a serviços. Defensores do modelo SOA consideram a arquitetura de microserviços como a evolução natural do SOA para acomodar a computação em nuvem.

Outros acreditam que os microserviç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 microserviços.
Print

Como os microserviços funcionam

Em uma arquitetura de microserviç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.

O microserviç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 microserviços, o trabalho está completo ao longo da vida útil de um produto. Empresas como Amazon e Netflix empregam esse modelo de negócios.

Microserviços e containers

Um problema que os desenvolvedores notaram com os microserviços é com a acessibilidade e frequência. Se o usuário acessa os microserviç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 microserviços.

Usar containers e microserviços em conjunto melhora as capacidades da nuvem. Isso porque o microserviço é escalável e reutilizável, enquanto os containers fornecem recursos eficientes. Ambos os microserviç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 microserviços devem desempenhar um grande papel no design da arquitetura. Ainda há céticos; no entanto, as características de um microserviço serão uma opção para futuros imprevistos.

Segurança de microserviços

A arquitetura de microserviços pode aliviar alguns problemas de segurança que surgem com aplicações monolíticas. O microserviç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 microserviç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 microserviç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 microserviços.
  • Existe ainda uma falta de controle em relação a software de terceiros.


Os desenvolvedores de microserviç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

 

21