GithubHelp home page GithubHelp logo

ismaelgcosta / is-my-burguer-terraform-rds Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 224 KB

Projeto para aplicação de conhecimentos da Fase 5 da Pós-Graduação em SOFTWARE ARCHITECTURE da FIAP

HCL 100.00%

is-my-burguer-terraform-rds's Introduction

Is My Burguer

Projeto para aplicação de conhecimentos da Fase 5 da Pós-Graduação em SOFTWARE ARCHITECTURE da FIAP

Modelo Entidade Relacionamento

Postgres

Tabela Pedido

É a tabela principal do sistema. A partir dela saem todos os outros relacionamentos e é o principal controle que o sistema precisa fazer segundo a solicitação do cliente. Ela controla o status do pedido na fila, guarda a identificação do Cliente vinculado e serve de ligação entre as outras tabelas. Nela também está o valor total do pedido, que é gravado em banco para evitar ir em outras tabelas ou buscar essa informação favorecendo a performance. Sabe-se que isso fere a terceira forma normal na modelagem de dados porém a experiência prévia em sistemas de ERP me mostrou que por vezes essa é a melhor forma de trabalhar com os dados.

Tabela Item Pedido

É a tabela que guarda as informações do itens solicitados pelo cliente, guardando o preço, a quantidade, a identificação do produto pedido e o valor total. Nela também está o valor total do item do pedido, que é gravado em banco para evitar ir em outras tabelas ou buscar essa informação favorecendo a performance. Sabe-se que isso fere a terceira forma normal na modelagem de dados porém a experiência prévia em sistemas de ERP me mostrou que por vezes essa é a melhor forma de trabalhar com os dados.

Tabela Produto

É a tabela de controle de preços e de ofertas do cardápio. Nela são armazenadas as informações dos Lanches, Sobremesas e Bebidas do cardápido e é mapeada como chave estrangeira na tabela Item Pedido para definição do item escolhido pelo cliente. Permite exclusão lógica por meio da coluna ativo.

MongoDB

Collection Cliente

Foi criada na Fase 4 no lugar da tabela no Postgres. Ela armazena todos os dados referentes ao cliente além do seu login no sistema de autenticação. Todas as informações nela serão réplicas das informações guardadas no AWS Cognito, sendo ele (Cognito), a fonte principal das informações do Cliente logado.

Collection Solicitacao Exclusao

Foi criada na Fase 5 para registrar os pedidos de solicitação de exclusão e anonimização de dados seguindo as regras da LGDP.

Collection Controle Pedido

É a collection utilizada para exibição dos pedidos em fila e também para guardar o histórico de atendimento da lanchonete. Também foi passada para o MongoDB na Fase 4. Pode ser utilizada para extração de relatórios e verificação da produtividade e velocidade das entregas no estabelecimento. Tem vínculo com o Pedido e também serve para controlar o status da fila da lanchonete.

Collection Pagamento

É a collection que garante que os pedidos foram pagos antes de serem enviados para a fila, evitando assim fraudes ou retirada de pedidos não pagos e também fornece uma estrutura para levantamento do faturamento da loja, já que um pedido pode não ser concluído. Tem vínculo com o Pedido e armazendo também a forma de pagamento que foi utilizada, favorecendo o desenvolvimento de campanhas de promoção e desconto ao fornecer a informação de qual meio de pagamento mais utilizado no estabelecimento.

Por que Postgres?

O PostgreSQL pode lidar eficientemente com as demandas de uma aplicação monolítica, processando grandes volumes de dados de forma confiável.

Quando se trata de escalabilidade, embora o PostgreSQL não tenha as mesmas capacidades de escalabilidade horizontal imediatamente disponíveis como alguns sistemas NoSQL, como o MongoDB ou Cassandra, ele ainda oferece opções de escalabilidade vertical e horizontal através de técnicas como replicação, particionamento de tabelas e uso eficiente de índices.

Em uma aplicação, a integração com outras partes do sistema é essencial. Nesse quesito os bancos relacionais tem uma vantagem extra por terem como requisito principal garantir a integridade entre os relacionamentos.

Por que MongoDB?

MongoDB é ideal para aplicações de alta concorrência devido à sua escalabilidade horizontal, permitindo adicionar servidores conforme a carga aumenta.

Oferece alta performance em operações de leitura e escrita e um modelo de dados flexível que facilita mudanças rápidas. Suporta índices complexos e sharding, distribuindo dados eficientemente.

Replica Sets garantem alta disponibilidade e resiliência, enquanto transações multi-documento (a partir da versão 4.0) asseguram consistência. Além disso, possui uma grande comunidade e um ecossistema rico de ferramentas, tornando-o uma escolha robusta e confiável para ambientes exigentes.

Para utilização em dados que serão acessados de forma constante ele é a melhor escolha

Modelo Entidade Relacionamento 2

Terraform

Requirements

Name Version
terraform >= 1.0
aws >= 5.33
mongodbatlas 1.16.0

Providers

Name Version
aws 5.39.0
mongodbatlas 1.16.0

Modules

Name Source Version
vpc terraform-aws-modules/vpc/aws n/a

Resources

Name Type
aws_db_instance.is-my-burguer resource
aws_security_group.postgres resource
mongodbatlas_cluster.mongodb resource
mongodbatlas_database_user.auth resource
mongodbatlas_database_user.controle-pedido resource
mongodbatlas_database_user.mongodb resource
mongodbatlas_database_user.pagamento resource

Inputs

Name Description Type Default Required
TF_VAR_MONGODB_ATLAS_API_PRI_KEY precisa começar com TF_VAR_ string "my-private-key" no
TF_VAR_MONGODB_ATLAS_API_PUB_KEY precisa começar com TF_VAR_ string "my-public-key" no
TF_VAR_MONGODB_ATLAS_PROJECT_ID precisa começar com TF_VAR_ string "my-private-project" no
TF_VAR_MONGODB_AUTH_PASSWORD The password for the mongodb database. string n/a yes
TF_VAR_MONGODB_AUTH_USERNAME The username for the mongodb database. string n/a yes
TF_VAR_MONGODB_CONTROLE_PEDIDO_PASSWORD The password for the mongodb database. string n/a yes
TF_VAR_MONGODB_CONTROLE_PEDIDO_USERNAME The username for the mongodb database. string n/a yes
TF_VAR_MONGODB_PAGAMENTO_PASSWORD The password for the mongodb database. string n/a yes
TF_VAR_MONGODB_PAGAMENTO_USERNAME The username for the mongodb database. string n/a yes
TF_VAR_MONGODB_PASSWORD The password for the mongodb database. string n/a yes
TF_VAR_MONGODB_USERNAME The username for the mongodb database. string n/a yes
TF_VAR_POSTGRES_PASSWORD The master password for the database. string n/a yes
TF_VAR_POSTGRES_USER The master username for the database. string n/a yes

Outputs

Name Description
database_endpoint The endpoint for the RDS cluster
database_endpoint_host The address for the RDS cluster
database_endpoint_port The port for the RDS cluster
database_instance The name for the RDS cluster
mongodb_endpoint_host The address for the MongoDB cluster

is-my-burguer-terraform-rds's People

Contributors

ismaelgcosta avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.