Engenharia de Software - 3 Flashcards
Como funciona uma arquitetura por microsserviços? Qual tecnologia possibilitou que essa arquitetura fosse desenvolvida
A arquitetura divide o programa em pequenas partes chamadas módulos que são executados em processos independentes que não compartilham memória entre si. Em cada momento, somente um pequeno grupo desses módulos é executado de cada vez.
Essa arquitetura só é possível graças à computação em nuvem.
Cite 3 vantagens do uso de uma arquitetura em microsserviços.
- Permitem a evolução mais rápida e independente de um sistema.
- Permitem escalar um sistema mais facilmente de forma horizontal
- Devido à independência entre os microsserviços, cada um deles pode ser implementado com tecnologias diferentes.
- Um microsserviço falhar não implica no sistema inteiro falhar, apenas na função que aquele microsserviço cumpre. Falhas na arquitetura de microsserviços são parciais ao invés de totais.
Cite três desvantagens do uso de uma arquitetura em microsserviços.
Complexidade: Comunicação entre módulos que executam em um mesmo processo depende de protocolos de comunicação, o que leva a uma dependência de tecnologias de rede.
Latência: A dependência de tecnologias de rede também pode acarretar um tempo maior entre essas comunicações que pode afetar o desempenho do sistema.
Transações Distribuídas: Microsserviços que atuam simultaneamente em múltiplos bancos de dados podem ter dificuldade garantindo que essas transações ocorram de forma atômica (ou seja, ou ambas ocorrem ou nenhuma ocorre). Protocolos de transações distribuídas, como two-phase commit, podem ser necessários para garantir uma semântica de transações em operações que escrevem em mais de um banco de dados.
Qual problema é resolvido pela arquitetura em microsserviços?
Um sistema monolítico é ao mesmo tempo susceptível e sensível a mudanças. Uma mudança em uma classe A pode impactar todos os desenvolvedores que a usam e um pequeno bug na classe A pode causar uma falha total.
A arquitetura em microsserviços resolve esse problema separando os módulos tanto em desenvolvimento quanto na execução.
Como funciona a arquitetura em camadas? Dê exemplos de sistemas que utilizam essa arquitetura.
Uma arquitetura em camadas particiona a complexidade envolvida no desenvolvimento de um sistema em componentes menores (as camadas) enquanto disciplina as dependências entre essas camadas visto que a camada n somente pode usar serviços da camada n-1.
Exemplos de sistemas que usam inclui protocolos de rede.
Como funciona a arquitetura em três camadas?
É uma arquitetura (geralmente implementada de forma distribuída) que implementa as seguintes camadas:
- Interface com o Usuário, também chamada de camada de apresentação, é responsável por toda interação com o usuário e executada geralmente em sua máquina.
- Lógica de Negócio, também conhecida como camada de aplicação, implementa as regras de negócio do sistema, geralmente executada em um servidor.
- Banco de Dados, que armazena os dados manipulados pelo sistema. Pode ser executada no mesmo servidor da Lógica de Negócio ou em um terceiro.
Como funciona a Arquitetura MVC?
A Arquitetura MVC define que as classes de um sistema devem ser organizadas em três grupos:
- Visão: classes responsáveis pela apresentação da interface gráfica do sistema, incluindo janelas, botões, menus, barras de rolagem, etc.
- Controladoras: classes que tratam e interpretam eventos gerados por dispositivos de entrada, como mouse e teclado e podem usar esses eventos para solicitar uma alteração no estado do Modelo ou da Visão.
- Modelo: classes que armazenam os dados manipulados pela aplicação e que têm a ver com o domínio do sistema em construção.
Como funciona uma Arquitetura Orientada a Mensagens ?
Neste tipo de arquitetura, a comunicação entre clientes e servidores é mediada por um terceiro serviço que tem a única função de prover uma fila (também chamada de broker) de mensagens.
Os clientes (produtores) inserem mensagens na fila. E os servidores (consumidores) retiram mensagens da fila e processam a informação contida nelas. Com as filas de mensagens, a comunicação pelo lado do cliente torna-se assíncrona, pois uma vez que a informação seja colocada na fila, o cliente está liberado para continuar seu processamento.
Quais os maiores riscos de uma Arquitetura Orientada a Mensagens ?
Devido à dependência da fila de mensagens, é importante que esse serviço seja instalado em uma máquina estável e com alto poder de processamento. Também é importante que ela seja persistente para que os dados não sejam perdidos em uma queda de servidor.
Cite duas vantagens de uma Arquitetura Orientada a Mensagens.
- Desacoplamento no espaço: visto que clientes exclusivamente produzem e servidores exclusivamente consomem, um não precisa conhecer o outro.
- Desacoplamento no tempo: A fila de mensagens permite que a comunicação entre cliente e servidor ocorra mesmo quando um estiver indisponível.
Como funciona uma Arquitetura Publish/Subscribe? Por qual outro nome ela é conhecida?
Em arquiteturas publish/subscribe, as mensagens são chamadas de eventos. Os componentes da arquitetura são chamados de publicadores (publishers) e assinantes (subscribers) de eventos. Publicadores produzem eventos e os publicam no serviço de publish/subscribe e quando um evento é publicado, os seus assinantes são notificados.
Arquiteturas Publish/Subscribe também são, por vezes, chamadas de Arquiteturas Orientadas a Eventos.
Quais as diferenças entre a Arquitetura Publish/Subscribe a Arquitetura Orientada a Mensagens?
As diferenças entre a Publish Subscribe e a Orientada a Mensagens é que em publish/subscribe, um evento gera notificações em todos os seus assinantes enquanto na orientada a mensagens, cada mensagem é sempre consumida por um único servidor.
Em publish/subscribe, os assinantes são notificados assincronamente; quando o evento de interesse ocorre, eles são notificados por meio da execução de um determinado método. Por outro lado, quando se usa uma fila de mensagens, os servidores — isto é, os consumidores das mensagens — têm que puxar (pull) as mensagens da fila.
Quais são os 5 princípios que devem ser seguidos pelos testes de unidade? Qual acrônimo eles formam?
Os princípios FIRST:
- Rápidos (Fast): Testes são executados com frequência e por isso devem levar na ordem de milissegundos para serem executados.
- Independentes: A ordem de execução dos testes não pode influenciar seus resultados.
- Determinísticos (Repeatable): Testes de unidade devem ter sempre o mesmo resultado, não importa quantas vezes for executado. Testes com resultados não-determinísticos são chamados de Testes Flaky (ou Testes Erráticos) e uma das principais responsáveis por esse comportamento é a concorrência.
- Auto-verificáveis (Self-checking): O resultado de um teste de unidades deve ser facilmente verificável.
- Escritos o quanto antes (Timely), se possível antes mesmo do código que vai ser testado.
Dê três exemplos de test smells
Teste Obscuro: é um teste longo, complexo e difícil de entender.
Um Teste com Lógica Condicional inclui código que pode ou não ser executado. Isso é considerado um smell porque prejudica o entendimento do teste.
Duplicação de Código em Testes ocorre, como o próprio nome sugere, quando temos código repetido em diversos métodos de teste.
O que são testes caixa-preta e testes caixa-branca? Que outra nomenclatura eles possuem?
Testes caixa-preta (também chamados de testes funcionais) leva em conta apenas o que o método é e o que ele faz. Testes caixa-branca (também chamados de testes estruturais) verificam também como ele faz.