Guia de microserviços: questões envolvendo segurança, benefícios e complexidade | MANDIC
Laura Loenert 30/06/2017 Agilidade, Arquitetura, AWS, Azure, Big Data, Cloud, Cloud Computing, DevOps, Escalabilidade, Lean Startup, Mobilidade, Monitoramento, Nuvem, REST, Scrum, Startup
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:
No entanto, nem tudo são flores, e existem também inconvenientes com os microserviços, tais como:
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
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.
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.
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:
Ainda não existem muitas opções de ferramentas de segurança para microserviços.
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.