Prévia do material em texto
Arquitetura de microserviços O que caracteriza uma arquitetura de microservicos? a) Um unico aplicativo monolitico com todas as funcionalidades integradas b) Um conjunto de servicos pequenos, independentes e distribuidos, cada um responsavel por uma funcao especifica c) Aplicacoes que dependem exclusivamente de bancos de dados centralizados d) Servicos que compartilham o mesmo codigo-fonte sem separacao de responsabilidades Resposta explicativa: A arquitetura de microservicos divide um sistema em multiplos servicos independentes, permitindo desenvolvimento, implantacao e escalabilidade individuais. Cada servico e responsavel por uma funcionalidade especifica, reduzindo acoplamento e aumentando flexibilidade. Qual e uma vantagem importante da arquitetura de microservicos em comparacao com a arquitetura monolitica? a) Menor complexidade de gerenciamento b) Capacidade de escalar componentes individualmente e liberar novas versoes sem afetar todo o sistema c) Eliminacao completa de testes automatizados d) Reducao do numero de servicos em execucao Resposta explicativa: Microservicos permitem que cada servico seja escalado separadamente e atualizado de forma independente, o que nao e possivel em sistemas monoliticos sem impactar o restante da aplicacao. Qual e o principal desafio de implementar microservicos? a) Reduzir o tamanho do banco de dados b) Gerenciar comunicacao entre servicos, consistencia de dados e monitoramento distribuido c) Garantir que todos os servicos usem a mesma linguagem de programacao d) Evitar a modularizacao de funcoes Resposta explicativa: A distribuicao de servicos introduz desafios como comunicacao entre servicos via APIs, consistencia de dados distribuidos, monitoramento, tolerancia a falhas e orquestracao. Estes precisam de ferramentas e padroes especificos para manter o sistema confiavel. Em microservicos, qual padrao de comunicacao e mais comum entre servicos? a) Comunicacao direta via banco de dados compartilhado b) Chamadas de APIs REST ou eventos assincronos via filas ou mensageria c) Comunicacao apenas via arquivos de texto d) Mensagens transmitidas por e-mail Resposta explicativa: APIs REST e mensageria assincrona sao os metodos mais utilizados, permitindo que os servicos se comuniquem de forma desacoplada e tolerante a falhas, garantindo independencia e escalabilidade. O que e desacoplamento na arquitetura de microservicos? a) Reduzir a quantidade de servicos no sistema b) Fazer com que os servicos sejam independentes, podendo evoluir ou falhar sem impactar outros servicos c) Compartilhar o mesmo banco de dados entre todos os servicos d) Utilizar a mesma linguagem de programacao para todos os servicos Resposta explicativa: Desacoplamento significa que cada servico funciona de forma independente. Alteracoes ou falhas em um servico nao devem afetar diretamente os demais, o que aumenta resiliencia e facilita manutencao. Qual e a funcao de um gateway de API em um ambiente de microservicos? a) Servir apenas como banco de dados central b) Atuar como ponto unico de entrada, roteando requisicoes para os servicos corretos, controlando autenticacao, limitacao de taxa e monitoramento c) Substituir todos os servicos internos d) Gerar logs apenas no servico mais critico Resposta explicativa: O gateway de API centraliza o acesso dos clientes aos microservicos, simplifica o gerenciamento de requisicoes externas, aplica seguranca, registra metricas e melhora o desempenho geral do sistema. Qual abordagem e mais adequada para persistencia de dados em microservicos? a) Todos os servicos devem compartilhar um unico banco de dados relacional b) Cada servico deve ter seu proprio banco de dados ou esquema independente c) Armazenamento em arquivos locais apenas d) Servicos nao precisam de armazenamento de dados Resposta explicativa: Cada microservico deve ser responsavel por seu proprio armazenamento, permitindo que evolua de forma independente e evitando acoplamento. Essa abordagem facilita manutencao, escalabilidade e consistencia local de cada servico. O que e event-driven architecture (EDA) em microservicos? a) Arquitetura que ignora eventos do sistema b) Modelo em que servicos se comunicam por eventos, promovendo assincronismo e reducao de dependencia direta c) Comunicacao obrigatoriamente sincrona d) Uso de logs apenas para depuracao Resposta explicativa: Na EDA, os servicos publicam e consomem eventos, permitindo reacao assincrona a mudancas no sistema. Isso aumenta escalabilidade, tolerancia a falhas e desacoplamento entre servicos. Qual e uma estrategia recomendada para deploy continuo em microservicos? a) Atualizar todos os servicos manualmente a cada mes b) Usar pipelines de integracao e entrega continua, automatizando build, testes e deploy de cada servico individualmente c) Parar toda a aplicacao para atualizar um servico d) Evitar versionamento dos servicos Resposta explicativa: CI/CD permite que cada servico seja testado e implantado independentemente, acelerando entregas, reduzindo risco de falhas e garantindo consistencia em producao. Qual e o papel do Service Discovery em um sistema de microservicos? a) Guardar logs de erro dos servicos b) Permitir que os servicos encontrem uns aos outros dinamicamente sem depender de enderecos fixos c) Substituir o gateway de API d) Atualizar o sistema operacional dos servidores Resposta explicativa: O Service Discovery registra servicos ativos e seus endpoints, permitindo que novos servicos se conectem automaticamente sem configuracao manual, essencial para escalabilidade e ambientes dinamicos. Como a arquitetura de microservicos lida com falhas em um servico? a) O sistema inteiro falha imediatamente b) Implementando padroes de tolerancia a falhas, como circuit breaker, retries e fallback c) Reiniciando manualmente todos os servicos d) Ignorando os erros ate que o sistema seja reiniciado Resposta explicativa: Microservicos aplicam estrategias como circuit breaker, retries e fallback para garantir resiliencia, isolando falhas e mantendo o funcionamento do sistema mesmo se um servico especifico estiver indisponivel. O que significa observabilidade em microservicos? a) Apenas verificar logs antigos quando ocorre erro b) Capacidade de monitorar metricas, logs e traces para entender comportamento e detectar problemas rapidamente c) Substituir testes automatizados d) Controlar somente a interface do usuario Resposta explicativa: Observabilidade fornece visao completa do funcionamento dos servicos, permitindo detectar falhas, gargalos e otimizar desempenho, sendo crucial em ambientes distribuidos complexos. Qual e o risco de usar microservicos sem padroes de versionamento de API? a) Nao ha risco significativo b) Que clientes antigos que dependem de APIs possam quebrar ao atualizar servicos, gerando incompatibilidade c) Servicos vao rodar mais rapido d) O banco de dados sera automaticamente atualizado Resposta explicativa: Sem versionamento, mudancas em um servico podem quebrar consumidores que dependem da API antiga. Versionamento garante compatibilidade e permite evolucao segura do sistema. Por que os testes automatizados sao criticos em microservicos? a) Para substituir a documentacao do sistema b) Porque servicos independentes interagem e a complexidade distribuida exige validacao continua para detectar erros rapidamente c) Apenas para monitorar desempenho de rede d) Para reduzir a necessidade de deploy Resposta explicativa: Testes automatizados (unitarios, de integracao e end-to-end) asseguram que alteracoes em um servico nao comprometam o restante do sistema, permitindo deploys frequentes e seguros. O que e bounded context no contexto de microservicos? a) Limite de usuarios que podem acessar um servico b) Delimitacao clara de responsabilidades de cada servico, garantindo que cada um gerencie seu dominio especifico c) Limite de requisicoes simultaneas d) Tamanho fisico do banco de dados Resposta explicativa:Bounded context e um conceito do DDD (Domain-Driven Design) que ajuda a definir fronteiras claras para cada microservico, evitando sobreposicao de responsabilidades e promovendo coesao e manutencao mais facil. Qual e a relacao entre conteineres e microservicos? a) Conteineres substituem microservicos b) Conteineres permitem empacotar microservicos com suas dependencias, garantindo portabilidade e consistencia em diferentes ambientes c) Conteineres so sao usados em monolitos d) Conteineres reduzem o numero de servicos necessarios Resposta explicativa: Conteineres, como Docker, isolam cada servico com suas dependencias, facilitando deployment, escalabilidade e consistencia entre ambientes de desenvolvimento, teste e producao. Por que a comunicacao sincrona entre microservicos pode ser problematica? a) Porque nunca funciona b) Pode gerar dependencia direta, causando atrasos e propagacao de falhas se um servico estiver lento ou indisponivel c) Porque APIs REST nao permitem comunicacao sincrona d) Porque aumenta automaticamente a complexidade do banco de dados Resposta explicativa: Comunicacao sincrona cria acoplamento temporal entre servicos, tornando o sistema vulneravel a atrasos e falhas. Estrategias assincronas com mensageria podem reduzir esses riscos. O que e CQRS e como ele se relaciona com microservicos? a) Um protocolo de comunicacao entre servidores b) Command Query Responsibility Segregation: separa operacoes de leitura e escrita para otimizar desempenho e escalabilidade c) Um tipo de banco de dados especifico d) Apenas uma tecnica de logging Resposta explicativa: CQRS permite que consultas e comandos sejam tratados separadamente, melhorando performance, escalabilidade e consistencia de servicos distribuidos. E uma pratica comum em arquiteturas de microservicos complexas. Como a escalabilidade horizontal funciona em microservicos? a) Aumentando o poder de processamento de um unico servidor b) Adicionando mais instancias do mesmo servico para distribuir carga e atender mais requisicoes simultaneas c) Diminuindo o numero de servicos d) Compartilhando banco de dados unico entre servicos Resposta explicativa: A escalabilidade horizontal consiste em criar multiplas instancias de um servico, equilibrando a carga com ferramentas como load balancer, aumentando capacidade sem modificar o codigo. Qual e a principal razao para uma empresa migrar de um monolito para microservicos? a) Reduzir numero de funcionarios b) Melhorar agilidade no desenvolvimento, facilitar manutencao, permitir deploys independentes e escalabilidade especifica por servico c) Reduzir custos de infraestrutura sem planejar mudancas de software d) Aumentar o tamanho do banco de dados central Resposta explicativa: Microservicos aumentam flexibilidade, agilidade e escalabilidade, permitindo que equipes independentes desenvolvam, testem e implantem servicos sem afetar todo o sistema. Se desejar, posso expandir essa lista com mais 20 perguntas detalhadas, ultrapassando 1000 palavras e mantendo o mesmo nivel de explicacao e naturalidade. Quer que eu continue?