Skip to content

Arquitetura do Software

Luis Henrique edited this page Apr 25, 2024 · 2 revisions

Visão Geral

O projeto TalentSpot AI adota uma abordagem de arquitetura em camadas para separar as responsabilidades da aplicação, facilitar a manutenção, e permitir a escalabilidade. A camada de apresentação é construída com React e Typescript, proporcionando uma interface rica e interativa para os usuários finais. A comunicação com o servidor é realizada através de uma Fachada (Facade) que abstrai as complexidades da camada de back-end, fornecendo um ponto de acesso simplificado para as operações de dados. No back-end, Django e Python são utilizados para processar requisições, executar a lógica de negócios com suporte de inteligência artificial, e interagir com o banco de dados MySQL, responsável pelo armazenamento e recuperação de dados persistentes. Essa separação clara entre as camadas possibilita que cada parte da aplicação seja desenvolvida, testada e gerenciada de forma independente, melhorando a eficiência e a qualidade do software.

image

Detalhamento dos Módulos

Front-end

O módulo front-end será responsável por apresentar a interface do usuário, onde ele poderá interagir diretamente com o aplicativo. Isso inclui a exibição de dados, a submissão de formulários e a navegação geral entre as várias seções da aplicação. Nesta camada, será utilizado React com Typescript para desenvolver uma interface reativa e moderna. O Typescript ajudará a manter o código robusto e menos propenso a erros através de tipagem estática. Esse módulo se comunicará com a camada de fachada através de requisições GraphQL, que permite ao front-end solicitar dados complexos em uma única chamada de API, evitando múltiplos round-trips desnecessários e o sobrecarregamento de dados

Fachada (Facade)

A Fachada (Facade) serve como uma interface unificada entre o front-end e o back-end, introduzindo uma camada de abstração que simplifica a comunicação entre a interface do usuário e a lógica de negócios do servidor. Esta camada é fundamental para a arquitetura de três camadas, uma vez que pode consolidar várias operações do back-end em uma única chamada de front-end, melhorando o desempenho e a eficiência da rede. Por exemplo, usando GraphQL como parte da Fachada, a camada de apresentação pode fazer uma requisição para buscar todos os dados necessários em uma única query

Back-end

O back-end atuará como uma camada lógica essencial, processando as operações definidas nas consultas e mutações GraphQL enviadas pelo front-end. Ele será responsável por executar a lógica de negócios, realizar a interface com o banco de dados para buscar ou armazenar dados e aplicar algoritmos de inteligência artificial para análise e extração de informações de currículos. Utilizando Django e Python, o back-end proporcionará uma implementação robusta do GraphQL, permitindo a definição de esquemas e resolvers que mapeiam as operações GraphQL para a lógica de negócios necessária. Na camada de back-end, um modelo de processamento de linguagem natural (NLP) será integrado para analisar currículos e extrair dados estruturados de textos não estruturados, contribuindo para uma categorização automática de habilidades e experiências

Banco de Dados

Armazenar e gerenciar os dados essenciais para a aplicação, como informações de usuário, dados de autenticação e qualquer outro dado necessário para a operação do TalentSpot AI. O MySQL será usado por sua confiabilidade e suporte robusto a transações, ideal para aplicações que requerem consistência e integridade dos dados. O design será orientado para a eficiência em consultas, utilizando práticas como normalização para eliminar redundâncias e índices para acelerar as buscas.

Padrões de projeto

Facade

O GraphQL atua naturalmente como uma fachada, fornecendo uma interface unificada para diversas fontes de dados back-end. Isso simplifica a interação do cliente com o back-end, permitindo que ele faça solicitações em uma única consulta que pode abranger múltiplas fontes de dados.

Observer

Com o uso da biblioteca Tanstack, na camada front-end, haverá a subscrição e notificação de mudanças no estado dos dados, permitindo que componentes reajam automaticamente às atualizações de dados.

Diagrama de Implantação

image

A comunicação entre a aplicação web e o servidor será realizada por meio de requisições GraphQL. Este servidor de aplicação, funcionando como um servidor GraphQL, está hospedado em um serviço de cloud e configura um único endpoint para todas as solicitações de dados e mutações do cliente. A utilização do GraphQL permite uma interação eficiente e flexível, onde o cliente pode especificar exatamente quais dados necessita em cada requisição, minimizando o sobre-carregamento e as requisições adicionais. O servidor GraphQL, por sua vez, se comunicará com um banco de dados SQL separado utilizando o protocolo TCP/IP. Com essa abordagem, mudanças na interface do usuário, na lógica de servidor ou na estrutura do banco de dados podem ser realizadas de forma independente, desde que os contratos definidos pelo esquema GraphQL sejam mantidos, assegurando assim a integridade das interações entre as camadas.

Definição Tecnológica

O projeto irá utilizar as seguintes tecnologias para implementação:

Tecnologia Linguagem
Front-end React Typescript
Fachada (Facade) Graphene Python
Back-end Django Python
Banco de Dados MySQL SQL

Podemos definir também outras tecnologias e serviços que iremos utilizar para desenvolver e implantar:

Desenvolvimento

Descrição
Visual Studio Code Editor de texto
Next.js Framework para desenvolvimento front-end React
TanStack Query v5 Biblioteca que fornece ferramentas poderosas para o gerenciamento de estados de dados remotos em aplicações React
ESLint Ferramenta de análise de código estática para identificar padrões problemáticos encontrados no código JavaScript
Prettier Formatador de código opinativo
Figma Editor gráfico Web de vetor e prototipagem de projetos de design

Deploy

Serviço
Front-end Render
Back-end/API Render
Banco de dados Render

Resumo

Podemos resumir os principais pontos da arquitetura do TalentSpot AI:

  • Camadas distintas para Apresentação (Cliente), Fachada (GraphQL), Negócios (Lógica), e Dados;
  • A fachada do GraphQL simplifica a interação do Cliente com a lógica de negócio complexa;
  • Adoção de padrões de projeto como Facade, Observer, e a estrutura de projeto sugerida pelo Django que assemelha-se ao MVC;
  • Emprego de tecnologias atuais como React, Django, e MySQL para desenvolvimento robusto e eficiente;
  • Uso de GraphQL para uma API eficiente e flexível, e de tecnologias auxiliares como TanStack para gerenciamento de estado no React;
  • Implantação e execução da aplicação na plataforma Render, otimizando tanto a entrega contínua quanto a escalabilidade da infraestrutura.

Clone this wiki locally