Pular para o conteúdo principal

Questão de Arquitetura de Software — WebServices — FGV 2023

Arquitetura de SoftwareWebServices
Código
fg071492
Banca
FGV
Órgão
TCE-SP
Ano
2023
Nível
Superior
Cargo
Agente da Fiscalização - TI
O analista Marcos desenvolveu um novo frontend para a aplicação TCEDigital, a fim de modernizar a experiência do usuário. O backend da TCEDigital é exposto por meio de uma Application Programming Interface (API) web. O novo frontend desenvolvido por Marcos utiliza a API web do backend já existente e não exige a desativação do frontend antigo, com ambos coexistindo ao mesmo tempo.À luz da arquitetura hexagonal, Marcos adicionou à TCEDigital um(a):
  1. Aaplicação;
  2. Bporta primária;
  3. Cporta secundária;
  4. Dadaptador primário;
  5. Eadaptador secundário.
Revelar gabarito e comentário

GabaritoD — adaptador primário;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Arquitetura Hexagonal (Ports and Adapters)

Gabarito: letra D. O novo frontend desenvolvido por Marcos é um adaptador primário, pois consome a API web (porta primária) para interagir com o núcleo da aplicação, sem desativar o frontend antigo. Na arquitetura hexagonal, adaptadores primários são implementações que conduzem interações externas (como uma interface de usuário) para o interior do sistema por meio das portas primárias.

A arquitetura hexagonal (ports and adapters) visa isolar o núcleo da aplicação (domínio) das tecnologias externas. As portas são interfaces que definem as interações; os adaptadores são implementações concretas dessas interfaces. As portas primárias são aquelas que o núcleo expõe para ser acionado por agentes externos (ex.: API REST). Os adaptadores primários são os componentes que implementam essas portas para viabilizar a comunicação (ex.: um controlador web ou um frontend que chama a API).

No cenário, a API do backend já existia – era a porta primária. O novo frontend é uma nova implementação que consome essa mesma API, ou seja, um novo adaptador primário. Ele não cria uma nova porta, nem uma nova aplicação; também não é um adaptador secundário, pois não se trata de uma interação com sistemas externos no sentido de saída (como banco de dados ou serviços externos).

Conceito

Definição

Exemplo no Cenário

Relação com o Núcleo

Aplicação

Núcleo do domínio, contendo as regras de negócio.

Backend já existente.

Não foi adicionado; já existia.

Porta Primária

Interface que o núcleo expõe para ser acionado por agentes externos (entrada).

API web do backend.

Não foi criada; já existia.

Porta Secundária

Interface para interações de saída do núcleo (ex.: banco de dados).

Não se aplica ao frontend.

Não se aplica.

Adaptador Primário

Implementação que consome a porta primária para conduzir interações externas ao núcleo.

Novo frontend que consome a API.

Adicionado por Marcos.

Adaptador Secundário

Implementação de uma porta secundária (ex.: driver de banco de dados).

Não se aplica ao frontend.

Não se aplica.

Arquitetura hexagonal
  • 1Núcleo (domínio)
    • Portas primárias (entrada)
      • API REST
    • Portas secundárias (saída)
      • Repositórios
  • 2Adaptadores primários
    • Frontend novo
    • Frontend antigo
  • 3Adaptadores secundários
    • Banco de dados
    • Serviços externos
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A aplicação (núcleo do domínio) não foi adicionada; ela já existia no backend. O novo frontend é um adaptador que se conecta a ela.

Alternativa B — ❌ Incorreta

A porta primária é a interface (API) que já existia. Marcos não criou uma nova interface; ele apenas implementou um novo consumidor para ela.

Alternativa C — ❌ Incorreta

A porta secundária é uma interface para interações de saída (ex.: repositório). O frontend é uma interação de entrada, portanto não se enquadra.

Alternativa D — ✅ Correta ⟵ GABARITO

O novo frontend é um adaptador primário: ele implementa o papel de conduzir as ações do usuário para o núcleo da aplicação por meio da API existente (porta primária), permitindo a coexistência com o frontend antigo.

Alternativa E — ❌ Incorreta

Adaptadores secundários são implementações de portas secundárias, usadas para integrar o núcleo com sistemas externos como bancos de dados ou serviços de terceiros. O frontend é uma interface com o usuário (entrada), não uma integração de saída.

NÃO CAIA NESSA!

A banca tenta confundir porta primária (a interface/API) com adaptador primário (a implementação que a consome). Marcos não criou uma nova interface, mas sim uma nova forma de consumir a já existente – portanto, é um adaptador. Lembre: a porta é o contrato; o adaptador é a concretização que conduz a interação.

Gabarito: letra D.

Link permanente: /questoes/fg071492