Prévia do material em texto
Arquitetura de monólitos O que caracteriza uma arquitetura monolitica? a) Aplicacoes divididas em pequenos servicos independentes b) Um sistema unico, integrado, onde todos os componentes estao interdependentes c) Sistemas baseados apenas em microsservicos d) Aplicacoes executadas exclusivamente em nuvem Resposta explicativa: A arquitetura monolitica e definida por um unico bloco de codigo onde todas as funcionalidades, como interface, logica de negocios e acesso a dados, estao integradas, tornando a aplicacao coesa, mas menos flexivel para mudancas isoladas. Qual e a principal vantagem de um monolito em comparacao com microservicos? a) Maior escalabilidade individual de componentes b) Simplicidade de desenvolvimento inicial e facilidade de deploy unico c) Resiliencia a falhas distribuidas d) Comunicacao assincrona entre servicos Resposta explicativa: Monolitos oferecem simplicidade de desenvolvimento e implantacao, pois todos os componentes sao construidos juntos e lancados em um unico deploy, reduzindo a complexidade inicial de configuracao e integracao. Um dos principais desafios da arquitetura monolitica e: a) Dificil comunicacao entre servicos b) Aumento de complexidade a medida que o sistema cresce, tornando manutencao e atualizacao mais dificeis c) Necessidade de multiplos bancos de dados para cada funcionalidade d) Impossibilidade de rodar em servidores tradicionais Resposta explicativa: Com o crescimento da aplicacao, o monolito tende a se tornar complexo e dificil de modificar, pois mudancas em uma parte do sistema podem impactar outras areas devido ao acoplamento elevado. Qual e a relacao entre monolitos e deploy? a) Cada funcionalidade pode ser atualizada de forma independente b) O deploy e realizado de forma unica, envolvendo toda a aplicacao c) Monolitos nao necessitam de deploy d) O deploy e automatico e continuo por padrao Resposta explicativa: Em uma arquitetura monolitica, todas as alteracoes sao lancadas juntas, o que simplifica o processo inicial, mas torna o deploy mais arriscado e demorado a medida que o sistema cresce. Qual e a abordagem tipica de banco de dados em monolitos? a) Cada modulo tem seu proprio banco de dados isolado b) Uso de um unico banco de dados centralizado para toda a aplicacao c) Armazenamento distribuido e replicado por servico d) Exclusivo uso de bancos NoSQL Resposta explicativa: Monolitos geralmente utilizam um banco de dados central, facilitando consultas e integridade de dados, mas criando dependencia entre todos os modulos e dificultando escalabilidade granular. Qual das seguintes opcoes e uma vantagem de manter uma aplicacao monolitica? a) Escalabilidade independente por componente b) Facilidade de testes integrados e consistencia de dados c) Atualizacoes isoladas de cada servico d) Comunicacao assincrona entre diferentes modulos Resposta explicativa: A aplicacao monolitica permite testes integrados de forma mais direta, e a consistencia de dados e mais facil de garantir devido ao banco central e ao baixo acoplamento externo. Em termos de manutencao, qual e uma limitacao dos monolitos? a) Dificil encontrar bibliotecas externas compativeis b) Alteracoes pequenas podem exigir testes e deploy de toda a aplicacao c) Nao permitem interfaces graficas d) Sao incompativeis com servidores Linux Resposta explicativa: Qualquer modificacao, mesmo minima, pode afetar todo o sistema, exigindo testes completos e um novo deploy, o que torna a manutencao menos agil em projetos grandes. Quando e indicado optar por um monolito? a) Sistemas pequenos ou medios, com escopo limitado e baixa complexidade b) Sistemas altamente distribuidos e com grande numero de usuarios simultaneos c) Aplicacoes que exigem escalabilidade independente por servico d) Plataformas de microservicos ja existentes Resposta explicativa: Monolitos funcionam bem para aplicacoes menores, pois reduzem complexidade inicial e facilitam o desenvolvimento, deploy e teste sem exigir infraestruturas complexas. Qual e o impacto do acoplamento elevado em monolitos? a) Facilita a atualizacao de partes isoladas do sistema b) Aumenta o risco de falhas em cascata quando uma parte do sistema e alterada c) Permite que multiplas equipes trabalhem de forma totalmente independente d) Reduz a necessidade de documentacao Resposta explicativa: O acoplamento elevado significa que modulos dependem fortemente uns dos outros; mudancas em uma parte podem gerar efeitos inesperados em outras, dificultando manutencao e evolucao. Em termos de performance, como um monolito geralmente se comporta? a) Melhor para chamadas internas, pois todos os componentes estao integrados na mesma aplicacao b) Pior que microservicos devido a comunicacao distribuida c) Sempre inferior a arquiteturas serverless d) Depende exclusivamente do tipo de banco NoSQL utilizado Resposta explicativa: A comunicacao interna e mais rapida, pois todas as chamadas acontecem dentro do mesmo processo, o que pode oferecer melhor desempenho em relacao a sistemas distribuidos que exigem chamadas de rede. Qual e o principal risco de escalabilidade em monolitos? a) Cada servico escala independentemente b) Escalar toda a aplicacao e mais custoso e menos eficiente, mesmo que apenas uma funcionalidade esteja com alta demanda c) Nao permite uso de multiplos bancos de dados d) Escalabilidade depende apenas do gateway de API Resposta explicativa: Como todos os componentes estao juntos, aumentar a capacidade exige replicar toda a aplicacao, o que consome mais recursos e reduz eficiencia em comparacao com microservicos. Como e feita a divisao de responsabilidades em uma aplicacao monolitica? a) Cada modulo tem seu banco de dados isolado b) Divisao logica em pacotes ou camadas dentro do mesmo codigo-base, como apresentacao, negocio e persistencia c) Servicos separados em containers independentes d) Cada funcionalidade e implementada em uma linguagem diferente Resposta explicativa: Em monolitos, a separacao de responsabilidades e logica, nao fisica, sendo organizada em camadas ou modulos dentro de um unico codigo, facilitando a compreensao inicial, mas mantendo o acoplamento fisico. Qual e a diferenca entre monolito modular e monolito classico? a) Monolito classico nao usa banco de dados b) Monolito modular organiza o codigo em modulos independentes dentro do mesmo deploy, melhorando manutencao e clareza c) Monolito modular exige microservicos externos d) Monolito classico usa apenas linguagens funcionais Resposta explicativa: O monolito modular mantem todos os modulos juntos, mas com separacao clara de responsabilidades e interfaces internas, reduzindo impactos de mudancas, embora ainda seja um unico deploy. Qual e a relacao entre testes e monolitos? a) Testes sao desnecessarios b) Testes integrados podem ser mais simples, pois toda aplicacao esta disponivel em um unico ambiente c) Cada modulo requer ambiente isolado d) Nao e possivel fazer testes unitarios em monolitos Resposta explicativa: Monolitos permitem que testes integrados sejam realizados de forma direta, ja que todos os componentes coexistem no mesmo ambiente, embora a complexidade aumente com o tamanho da aplicacao. Qual e um desafio ao migrar de monolito para microservicos? a) Reduzir numero de servidores b) Redesenhar a aplicacao para separar funcionalidades, definir servicos independentes e gerenciar comunicacao distribuida c) Eliminar necessidade de banco de dados d) Transformar toda a aplicacao em codigo sem logica de negocios Resposta explicativa: A migracao envolve identificar fronteiras de servico, gerenciar dados distribuidos, comunicacao entre servicos e garantir consistencia, o que exige planejamento cuidadoso e recursos adicionais. Qual e a vantagem de um deploy unico em monolitos? a) Permite escalabilidade independente por modulo b) Simplicidade no gerenciamento de versoes e menor overhead inicial de infraestrutura c) Facilita comunicacao assincrona d) Reduz o acoplamentoentre servicos Resposta explicativa: O deploy unico simplifica controle de versao e lancamento de novas funcionalidades, sendo vantajoso para equipes pequenas ou sistemas ainda em fase inicial. Como a manutencao de um monolito pode impactar a equipe de desenvolvimento? a) Permite total independencia entre equipes b) Exige coordenacao intensa, pois mudancas podem afetar diversos modulos simultaneamente c) Reduz necessidade de documentacao d) Elimina a necessidade de revisao de codigo Resposta explicativa: Equipes precisam coordenar alteracoes cuidadosamente, pois o acoplamento fisico faz com que mudancas em uma area possam gerar efeitos inesperados em outras partes da aplicacao. Qual e a relacao entre monolitos e tempo de inicializacao da aplicacao? a) Sempre mais rapido que microservicos b) Pode ser mais lento em aplicacoes grandes, pois todo o sistema precisa carregar de uma vez c) Independente do tamanho do codigo d) Monolitos nao precisam de inicializacao Resposta explicativa: Em sistemas grandes, o tempo de inicializacao pode ser significativo, pois toda a aplicacao deve ser carregada na memoria antes de atender requisicoes. Qual e o impacto de uma falha em uma aplicacao monolitica? a) Afeta apenas o modulo com erro b) Pode comprometer toda a aplicacao, ja que todos os modulos compartilham o mesmo processo c) Monolitos nao sofrem falhas criticas d) A falha e automaticamente isolada por container Resposta explicativa: Como todos os componentes coexistem no mesmo processo, um erro grave em um modulo pode derrubar toda a aplicacao, exigindo estrategias de monitoramento e recuperacao eficientes. Em termos de atualizacao tecnologica, qual e uma limitacao do monolito? a) Permite multiplas linguagens por modulo b) Atualizar tecnologias ou frameworks pode afetar toda a aplicacao c) Nao ha limitacoes, qualquer modulo pode ser atualizado isoladamente d) Monolitos dispensam uso de frameworks Resposta explicativa: Alterar tecnologia em um monolito geralmente requer adaptar todo o codigo-base, tornando a atualizacao mais complexa e arriscada do que em arquiteturas distribuidas. Qual e uma estrategia para melhorar a modularidade em monolitos? a) Criar multiplos bancos de dados b) Organizar codigo em pacotes ou camadas bem definidas, com interfaces claras c) Transformar todos os modulos em servicos independentes imediatamente d) Reduzir o numero de testes unitarios Resposta explicativa: Estruturar o codigo em modulos ou camadas bem definidas ajuda a manter a coesao e reduzir o acoplamento, facilitando manutencao e evolucao sem dividir a aplicacao fisicamente. Qual e a diferenca entre escalabilidade vertical e horizontal em monolitos? a) Vertical significa adicionar mais servidores; horizontal significa atualizar codigo b) Vertical e aumentar recursos do mesmo servidor; horizontal e replicar toda a aplicacao em multiplos servidores c) Horizontal nao e possivel em monolitos d) Nao ha diferenca pratica Resposta explicativa: Monolitos geralmente escalam verticalmente adicionando CPU ou memoria, mas a replicacao horizontal de toda a aplicacao e menos eficiente e mais custosa que em microservicos. Qual e a relacao entre monolitos e performance de comunicacao interna? a) Comunicacao entre modulos internos e rapida, pois nao ha chamadas de rede b) Comunicacao e sempre lenta devido a centralizacao c) Monolitos exigem filas de mensagens para todas as interacoes d) Performance interna depende de microservicos externos Resposta explicativa: Dentro de um monolito, os modulos se comunicam via chamadas diretas em memoria, tornando a interacao rapida, diferente de sistemas distribuidos que dependem de rede. Qual e a desvantagem de monolitos em sistemas que crescem rapidamente? a) Reduz custo de manutencao b) Crescimento aumenta complexidade, tornando mudancas arriscadas e dificultando escalabilidade granular c) Facilita adocao de DevOps d) Elimina necessidade de documentacao de arquitetura Resposta explicativa: A medida que o monolito cresce, o codigo se torna mais dificil de entender, testar e implantar, gerando maior risco de falhas e dificultando adaptacao a novas demandas. Qual e uma boa pratica para projetos monoliticos que pretendem evoluir para microservicos no futuro? a) Nao documentar nada para ganhar tempo b) Organizar modulos bem definidos e desacoplados dentro do monolito, facilitando extracao futura c) Escrever tudo em uma unica classe gigante d) Evitar modularizacao para manter simplicidade Resposta explicativa: Planejar o monolito de forma modular e com limites claros de responsabilidade permite que, futuramente, partes do sistema sejam extraidas para microservicos sem grandes refatoracoes. Como o versionamento de codigo e tratado em monolitos? a) Cada modulo possui versionamento independente b) Toda a aplicacao compartilha um unico versionamento, simplificando controle, mas exigindo coordenacao em deploys c) Versionamento nao e necessario d) Cada funcao individual e versionada separadamente Resposta explicativa: Monolitos utilizam um versionamento global, o que facilita o controle de releases, mas significa que qualquer mudanca exige coordenacao de toda a equipe para nao quebrar funcionalidades existentes. Qual e a relacao entre monolitos e containers? a) Monolitos nao podem ser containerizados b) Monolitos podem ser executados em containers, mas todos os modulos compartilham o mesmo container c) Cada modulo de um monolito deve ter seu proprio container d) Containers sao obrigatorios em monolitos Resposta explicativa: Containerizar um monolito encapsula toda a aplicacao em um unico ambiente portatil, simplificando deploy, mas nao muda a natureza integrada da arquitetura. Qual e a vantagem de ter um monolito bem documentado? a) Substitui testes automatizados b) Facilita manutencao, onboarding de novos desenvolvedores e futura evolucao para arquiteturas distribuidas c) Elimina falhas criticas do sistema d) Reduz o numero de linhas de codigo Resposta explicativa: A documentacao ajuda a equipe a entender dependencias, fluxo de dados e responsabilidades de cada modulo, reduzindo riscos de alteracoes indevidas e preparando o sistema para crescimento ou migracao futura. Qual e o impacto da complexidade do monolito em equipes grandes? a) Equipes grandes nao enfrentam problemas b) Maior complexidade aumenta risco de conflitos, retrabalho e exige coordenacao intensa entre desenvolvedores c) Facilita divisao de tarefas sem comunicacao d) Reduz a necessidade de integracao continua Resposta explicativa: Em sistemas monoliticos complexos, multiplos desenvolvedores trabalhando simultaneamente podem gerar conflitos de codigo e dificuldades em integracao, exigindo processos rigorosos de versionamento e revisao. Por que algumas empresas optam por manter monolitos mesmo com o crescimento da aplicacao? a) Para impedir inovacao tecnologica b) Por estabilidade, simplicidade de deploy inicial e familiaridade da equipe, priorizando confiabilidade sobre flexibilidade extrema c) Porque nao conhecem microservicos d) Porque monolitos sao sempre mais rapidos que microservicos Resposta explicativa: Muitas empresas mantem monolitos por serem confiaveis, faceis de gerenciar inicialmente e demandarem menos infraestrutura complexa, especialmente quando mudancas frequentes nao sao criticas para o negocio. Se desejar, posso continuar expandindo a lista ate exceder 1000 palavras de conteudo, mantendo perguntas detalhadas e explicacoes completas.