Home | Escopo | Processo | Mockups | Configuração | Arquitetura | Gerência | BD | Qualidade | Frontend | Backend |
---|
Página da Arquitetura do Sistema
Frontend
Sistema projetado para acesso via internet por meio de um aplicativo mobile desenvolvido em Flutter/Dart. Dart é a linguagem de programação e Flutter o framework, essa combinação de tecnologias nos permite criar interfaces de usuário para Android e iOS.
Backend
O backend será desenvolvido utilizando Java com o framework Spring Boot para criar uma API REST responsável pela comunicação entre o aplicativo e o banco de dados. O Spring Boot é conhecido por facilitar o desenvolvimento de aplicações robustas e escaláveis no lado do servidor. Para a persistência de dados, utilizaremos o MongoDB, um banco de dados NoSQL.
Arquitetura do Sistema - MVC
O sistema será estruturado com o padrão de arquitetura MVC (Model-View-Controller), separando claramente as responsabilidades da aplicação em três camadas principais para garantir modularidade e facilitar a manutenção e escalabilidade do código.
Model
A camada de Model será responsável por gerenciar os dados da aplicação. Nesta camada, utilizaremos o MongoDB como banco de dados NoSQL para armazenar e recuperar as informações. O Model definirá a estrutura dos dados e interagirá diretamente com o banco por meio de operações de leitura e escrita.
View
A camada de View será o aplicativo móvel desenvolvido em Flutter, responsável pela interface de usuário. Ele será a parte visual do sistema, onde o usuário poderá interagir com os dados e funcionalidades fornecidas pela API. A View receberá dados da camada Controller e exibirá ao usuário, além de enviar requisições com as interações realizadas.
Controller
A camada de Controller será responsável por receber as requisições do aplicativo (View), processá-las, interagir com a camada Model para manipular os dados e devolver as respostas necessárias. O Controller será implementado utilizando Spring Boot para criar os endpoints da API REST. Ele funcionará como intermediário entre a interface do usuário (View) e o banco de dados (Model), garantindo que a lógica de negócio seja aplicada corretamente.
Arquitetura da Infraestrutura - AWS
Frontend Mobile
O frontend mobile, desenvolvido com Flutter, permite a criação de uma aplicação cross-platform, atendendo tanto iOS quanto Android. Para a hospedagem e entrega dos arquivos estáticos deste aplicativo, utilizamos o serviço Amazon S3 (Simple Storage Service). O S3 provê alta durabilidade e disponibilidade, ideal para armazenar conteúdos acessíveis publicamente ou privadamente, dependendo da configuração de acesso.
Frontend Web
Para o frontend web, escolhemos React devido à sua eficiência em renderizar componentes dinâmicos que melhoram a experiência do usuário. Assim como o frontend mobile, os arquivos estáticos do frontend web são hospedados no Amazon S3, garantindo rápida distribuição e baixa latência. Para otimizar ainda mais a entrega de conteúdo estático globalmente, pode-se integrar o Amazon CloudFront como CDN, reduzindo a carga sobre o servidor principal e melhorando o tempo de carregamento para usuários ao redor do mundo.
Backend
O backend é implementado usando Java com o framework Spring Boot, conhecido por sua agilidade e poder em criar aplicações complexas e de alto desempenho. Utilizamos contêineres Docker para encapsular o ambiente do backend, facilitando a escalabilidade e a manutenção. Esses contêineres são gerenciados através do Amazon EC2 (Elastic Compute Cloud), que oferece capacidade computacional redimensionável na nuvem, permitindo ajustar recursos conforme a demanda.
Integração e Gerenciamento de Imagens Docker
Utilizamos o Amazon ECR (Elastic Container Registry) para armazenar as imagens Docker do backend. O ECR é um repositório de imagens Docker que integra-se facilmente com o EC2, automatizando o deploy e garantindo que sempre a versão mais recente esteja disponível para produção sem interrupções no serviço.
Arquitetura de Comunicação
- Amazon EC2: Responsável por executar o backend da aplicação, lidando com a lógica de negócios e processamento de dados.
- Amazon S3: Além de hospedar os assets dos frontends, armazena dados gerados pelos usuários, como uploads de arquivos, garantindo segurança e acesso controlado.
- Amazon ECR: Mantém as imagens Docker, simplificando o processo de atualização e manutenção do ambiente de execução do backend.