Projeto para aplicação de conhecimentos da Fase 5 da Pós-Graduação em SOFTWARE ARCHITECTURE da FIAP
É 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.
É 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.
É 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.
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.
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.
É 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.
É 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.
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.
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
Name | Version |
---|---|
terraform | >= 1.0 |
aws | >= 5.33 |
mongodbatlas | 1.16.0 |
Name | Version |
---|---|
aws | 5.39.0 |
mongodbatlas | 1.16.0 |
Name | Source | Version |
---|---|---|
vpc | terraform-aws-modules/vpc/aws | n/a |
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 |
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 |
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 |