Skip to content

Este projeto demonstra uma arquitetura Full Stack completa, que engloba desde a criação da API Rest até o desenvolvimento de front-ends mobile e web.

Notifications You must be signed in to change notification settings

gontijol/algoritmoGenetico

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto: Algoritmo Genético

Neste trabalho, iremos explorar a arquitetura e implementação de um sistema, que consiste em uma API Rest hospedada em um servidor EC2 na AWS. O sistema utiliza o Firebase para autenticação e comunicação entre diferentes front-ends (Web e Mobile). As tarefas são armazenadas no Firestore, um banco de dados NoSQL fornecido pelo Firebase. O front-end mobile é desenvolvido com Flutter e GetX, enquanto o front-end web é desenvolvido com Vue.js.

Arquitetura Escolhida A arquitetura escolhida para este projeto é baseada em uma abordagem de desenvolvimento Full Stack, onde as diferentes partes do sistema são divididas em componentes independentes que se comunicam por meio de APIs e serviços em nuvem. A seguir, descrevemos os principais componentes do sistema e como eles interagem:

Arquitetura DFS

API Rest hospedada em servidor EC2 na AWS:

A API Rest é a camada principal que gerencia a lógica de negócios e a comunicação com os clientes (front-ends). Ela é hospedada em um servidor EC2 na AWS para garantir escalabilidade e disponibilidade. A API é responsável por autenticar os usuários por meio do Firebase Authentication, gerenciar as tarefas e se comunicar com o Firestore.

Firebase Authentication e Token Handling:

O sistema utiliza o Firebase Authentication para autenticar os usuários. Um sistema de token handling é implementado na API para gerenciar as sessões dos usuários autenticados. Isso permite que diferentes front-ends se autentiquem e se comuniquem com a API de maneira segura.

Firestore (Banco de Dados):

O Firestore é utilizado para armazenar e gerenciar os dados das tarefas. As tarefas são organizadas em coleções e documentos, permitindo uma estrutura flexível para armazenar informações relacionadas às tarefas.

Front-end Mobile (Flutter com GetX):

O front-end mobile é desenvolvido usando o framework Flutter, que permite criar interfaces nativas para iOS e Android a partir de um único código-base. O pacote GetX é utilizado para gerenciar o estado da aplicação, navegação e injeção de dependência. A autenticação é realizada por meio do Firebase Authentication, e os dados das tarefas são obtidos da API por meio de chamadas HTTP.

Front-end Web (Vue.js):

O front-end web é desenvolvido usando o framework Vue.js, que permite construir interfaces interativas e responsivas.

O sistema de autenticação é semelhante ao do front-end mobile, usando Firebase Authentication.

As chamadas à API são feitas por meio de requisições HTTP, permitindo a exibição e manipulação das tarefas.

Implementação e Fluxo de Funcionamento O usuário acessa o front-end mobile ou web e inicia o processo de autenticação. A autenticação é realizada por meio do Firebase Authentication, gerando um token de autenticação válido. O token é enviado nas chamadas da API para autenticação e autorização. A API verifica o token e, se válido, permite o acesso às funcionalidades do sistema. Os dados das tarefas são armazenados e obtidos do Firestore por meio da API. No front-end, as tarefas são exibidas e o usuário pode realizar operações como adicionar, editar e excluir tarefas. Qualquer modificação nas tarefas é refletida no Firestore por meio da API.

Migração de Banco

A migração de bancos de dados foi uma decisão importante e pode ser motivada por uma variedade de fatores, incluindo desempenho, escalabilidade, custos e requisitos específicos da linguagem de programação que você está utilizando.

O Firestore, um banco de dados NoSQL oferecido pela Google, é amplamente utilizado por sua integração com o Firebase e por sua facilidade de uso. No entanto, ao optar por migrar para o Amazon DynamoDB e aproveitar o Dart como linguagem de programação, você está considerando uma mudança por algumas razões específicas:

Desempenho Otimizado para Dart: O Dart é a linguagem de programação principal para o desenvolvimento de aplicativos Flutter. Ao escolher o DynamoDB, que é um serviço de banco de dados da Amazon, você pode aproveitar as bibliotecas e recursos que a Amazon disponibiliza para Dart, otimizando assim o desempenho da sua aplicação.

Integração com Ecossistema AWS: A Amazon Web Services (AWS) oferece um ecossistema abrangente de serviços em nuvem, e o DynamoDB é um dos serviços mais escaláveis e confiáveis para armazenamento de dados. A integração do DynamoDB com outros serviços AWS pode permitir uma arquitetura de aplicativo mais robusta e escalável.

Flexibilidade de Esquema: O DynamoDB é um banco de dados NoSQL altamente escalável e flexível. Ele permite que você defina o esquema dos dados conforme a necessidade do seu aplicativo, o que pode ser especialmente útil em projetos que evoluem ao longo do tempo.

Controle de Custos: A Amazon oferece diferentes níveis de planos de pagamento para o DynamoDB, permitindo que você escolha uma opção que se alinhe melhor ao orçamento do seu projeto. Isso pode ser especialmente relevante para startups e projetos com restrições financeiras.

Escalabilidade e Disponibilidade: O DynamoDB é conhecido por sua capacidade de escalabilidade automática e alta disponibilidade. Se sua aplicação prevê um crescimento significativo no número de usuários e, consequentemente, no volume de dados, o DynamoDB pode ser uma escolha sólida.

Segurança e Conformidade: A AWS oferece várias camadas de segurança para proteger os dados armazenados no DynamoDB, atendendo a regulamentações de conformidade e padrões de segurança.

Migração Gradual: Dependendo do tamanho e complexidade do seu banco de dados atual no Firestore, você pode planejar uma migração gradual para minimizar impactos na aplicação em produção.

Conclusão

Este projeto demonstra uma arquitetura Full Stack completa, que engloba desde a criação da API Rest até o desenvolvimento de front-ends mobile e web. A integração com serviços em nuvem, como o Firebase e o Firestore, proporciona uma base sólida para autenticação segura e armazenamento de dados. A combinação de Flutter com GetX e Vue.js oferece interfaces eficientes e interativas para os usuários. A escolha de hospedar a API em um servidor EC2 na AWS garante escalabilidade e disponibilidade do sistema. Em resumo, o projeto apresenta uma solução completa para o gerenciamento de tarefas, demonstrando uma abordagem moderna de desenvolvimento Full Stack.

About

Este projeto demonstra uma arquitetura Full Stack completa, que engloba desde a criação da API Rest até o desenvolvimento de front-ends mobile e web.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages