Prévia do material em texto
Microserviços 1. Qual é o principal conceito por trás da arquitetura de microserviços? a) Agrupar todos os componentes em uma única aplicação monolítica. b) Dividir uma aplicação em serviços independentes que comunicam entre si. c) Usar apenas um banco de dados para toda a aplicação. d) Focar em um único tipo de tecnologia para todas as partes da aplicação. Resposta correta: b) Dividir uma aplicação em serviços independentes que comunicam entre si. O principal conceito por trás da arquitetura de microserviços é dividir uma aplicação em serviços independentes que comunicam entre si. Cada microserviço é responsável por uma funcionalidade específica e pode ser desenvolvido, implantado e escalado de forma independente. Essa abordagem permite que equipes distintas trabalhem em diferentes serviços, utilizando tecnologias e linguagens de programação variadas, conforme as necessidades de cada parte do sistema. A comunicação entre os microserviços geralmente ocorre por meio de APIs ou mensageria, promovendo um acoplamento fraco. Esse design modular traz benefícios significativos em termos de escalabilidade, flexibilidade e resiliência, permitindo que atualizações em um serviço não afetem o funcionamento dos outros. Além disso, em um ambiente de desenvolvimento ágil, as equipes podem implementar mudanças e melhorias de forma mais rápida, resultando em um ciclo de vida de desenvolvimento mais eficiente. 2. Quais são os principais benefícios da arquitetura de microserviços? a) Maior complexidade na gestão e desenvolvimento. b) Melhor escalabilidade, flexibilidade e resiliência. c) Diminuição da possibilidade de falhas isoladas. d) Necessidade de uma única equipe para gerenciar todos os serviços. Resposta correta: b) Melhor escalabilidade, flexibilidade e resiliência. Os principais benefícios da arquitetura de microserviços incluem melhor escalabilidade, flexibilidade e resiliência. Com microserviços, cada componente da aplicação pode ser escalado de forma independente, permitindo que partes específicas do sistema atendam a aumentos de carga sem a necessidade de escalar toda a aplicação. Isso resulta em uma utilização mais eficiente dos recursos e em menores custos operacionais. A flexibilidade é outra vantagem significativa, pois as equipes podem adotar diferentes tecnologias ou linguagens de programação para cada af://n986 microserviço, escolhendo a melhor ferramenta para a tarefa em questão. Essa diversidade tecnológica não só melhora a inovação, mas também permite que as organizações se adaptem rapidamente às mudanças nas necessidades do mercado. Além disso, a resiliência é aumentada, pois se um microserviço falhar, os outros podem continuar a funcionar, minimizando o impacto no sistema como um todo. Essa abordagem modular facilita também a implementação de estratégias de recuperação e manutenção, contribuindo para a estabilidade e a disponibilidade da aplicação. 3. Qual é um dos principais desafios ao trabalhar com microserviços? a) Simplicidade na implementação e manutenção. b) Aumento na complexidade da comunicação entre serviços. c) Necessidade de um único banco de dados. d) Menor flexibilidade na escolha de tecnologias. Resposta correta: b) Aumento na complexidade da comunicação entre serviços. Um dos principais desafios ao trabalhar com microserviços é o aumento na complexidade da comunicação entre serviços. Com a divisão da aplicação em múltiplos microserviços independentes, a forma como esses serviços interagem torna-se um aspecto crítico a ser gerenciado. A comunicação pode ser realizada por meio de APIs REST, gRPC ou sistemas de mensageria, mas cada um desses métodos traz suas próprias complexidades, como latência de rede, gerenciamento de versões de API e tratamento de falhas de comunicação. Além disso, a monitorização e o rastreamento de solicitações que atravessam vários microserviços podem ser desafiadores, exigindo ferramentas adicionais para garantir que as interações sejam eficientes e que problemas possam ser identificados rapidamente. É necessário também implementar mecanismos adequados de segurança, autenticação e autorização para proteger as comunicações entre os serviços, o que pode adicionar ainda mais complexidade ao sistema. Portanto, as equipes devem estar preparadas para enfrentar esses desafios e implementar boas práticas de design e gerenciamento de microserviços. 4. Qual é uma prática recomendada para garantir a resiliência em uma arquitetura de microserviços? a) Ignorar o monitoramento e logging de serviços. b) Implementar circuit breakers e retries nas comunicações. c) Depender de uma única instância de cada microserviço. d) Evitar testes automatizados. Resposta correta: b) Implementar circuit breakers e retries nas comunicações. Uma prática recomendada para garantir a resiliência em uma arquitetura de microserviços é implementar circuit breakers e retries nas comunicações. O padrão de circuit breaker ajuda a evitar que chamadas repetidas a um microserviço que está falhando causem mais problemas e sobrecarga no sistema. Quando um serviço falha, o circuit breaker "abre", interrompendo temporariamente as chamadas para aquele serviço e permitindo que ele se recupere. Após um tempo, o sistema tenta novamente a comunicação, e se o serviço estiver operacional, o circuit breaker "fecha" novamente, permitindo chamadas normais. Além disso, o uso de retries pode ser útil em situações onde uma falha pode ser temporária, permitindo que o sistema tente novamente a operação após um pequeno atraso. Essas práticas, quando implementadas corretamente, aumentam a resiliência do sistema e garantem que falhas em um serviço não afetem todo o ecossistema de microserviços, melhorando a experiência do usuário e a confiabilidade da aplicação. 5. Como a segurança é abordada em uma arquitetura de microserviços? a) Implementando uma única camada de segurança no servidor. b) Através de autenticação e autorização centralizadas para todos os serviços. c) Ignorando questões de segurança devido à natureza distribuída. d) Aplicando segurança em cada microserviço de forma independente. Resposta correta: d) Aplicando segurança em cada microserviço de forma independente. Em uma arquitetura de microserviços, a segurança é abordada aplicando medidas de segurança em cada microserviço de forma independente. Cada microserviço pode ter suas próprias necessidades e requisitos de segurança, então é fundamental que as equipes implementem autenticação, autorização e criptografia em nível de serviço. Isso pode incluir o uso de tokens JWT (JSON Web Tokens) para autenticação, verificação de permissões de usuário antes de permitir o acesso a funcionalidades específicas e a aplicação de práticas de segurança na comunicação entre serviços, como o uso de HTTPS. Além disso, é importante que as equipes façam a validação e sanitização de entradas em cada microserviço, prevenindo vulnerabilidades como injeções de código. A abordagem descentralizada para segurança também permite que cada serviço seja atualizado e mantido de forma independente, facilitando a adaptação a novas ameaças e práticas recomendadas. Essa robustez em segurança é essencial para proteger dados sensíveis e garantir que a arquitetura de microserviços permaneça segura em um ambiente em constante evolução.