|
|
### 1. **Desenvolvimento e Integração Contínua (CI/CD)**:
|
|
|
- **GitLab Source Repository**: O código-fonte do projeto é gerenciado no GitLab, onde os desenvolvedores fazem versionamento e colaboram no desenvolvimento.
|
|
|
- **GitLab Runner com Docker**: Na AWS, uma instância EC2 hospeda um GitLab Runner dentro de um container Docker. Esse Runner é responsável por executar pipelines de CI/CD, que automatizam os processos de build, testes e deploy do aplicativo. Isso garante que novas funcionalidades ou correções de bugs sejam entregues de forma ágil e contínua.
|
|
|
## Desenvolvimento e Integração Contínua (CI/CD)
|
|
|
|
|
|
### 2. **Autenticação**:
|
|
|
- **Firebase Authentication**: O Firebase é utilizado para autenticar os usuários tanto no aplicativo mobile quanto na versão web. Isso garante que apenas usuários autorizados possam acessar a aplicação e seus dados. A escolha do Firebase simplifica o processo de autenticação, eliminando a necessidade de construir uma solução personalizada de gerenciamento de usuários.
|
|
|
**GitLab Source Repository:** O código-fonte do projeto é gerenciado no GitLab, onde os desenvolvedores fazem versionamento e colaboram no desenvolvimento.
|
|
|
|
|
|
### 3. **Backend (Node.js)**:
|
|
|
- **Node.js em Docker**: O backend da aplicação é executado em um container Docker com Node.js, o que traz flexibilidade e portabilidade para o ambiente. O Node.js é responsável por processar as requisições enviadas pelos clientes (mobile e web), realizar a lógica de negócios e se comunicar com os serviços externos, como o Amazon S3. Esse backend atua como um ponto central para gerenciar as interações entre o frontend e os serviços externos.
|
|
|
**GitLab Runner com Docker:** Na AWS, uma instância EC2 hospeda um GitLab Runner dentro de um container Docker. Esse Runner é responsável por executar pipelines de CI/CD, que automatizam os processos de build, testes e deploy do aplicativo. Isso garante que novas funcionalidades ou correções de bugs sejam entregues de forma ágil e contínua.
|
|
|
|
|
|
### 4. **Frontend**:
|
|
|
- **Flutter Mobile**: O aplicativo é desenvolvido com Flutter para rodar nativamente em dispositivos Android e iOS, aproveitando uma única base de código para ambas as plataformas. O Flutter facilita o desenvolvimento multiplataforma, o que reduz o tempo de desenvolvimento e a complexidade de manutenção.
|
|
|
- **Flutter Web**: O frontend web também é desenvolvido com Flutter e pode ser acessado através de navegadores como Chrome, Firefox, Edge e Safari. A aplicação web interage com o backend Node.js, enviando e recebendo requisições para a mesma lógica de negócios que o aplicativo mobile.
|
|
|
## Autenticação
|
|
|
|
|
|
### 5. **Armazenamento de Dados**:
|
|
|
- **Amazon S3 (Simple Storage Service)**: O S3 é utilizado para armazenar arquivos e dados estáticos, como imagens e documentos. Ele fornece escalabilidade automática, alta durabilidade e segurança para os dados armazenados, e é acessado diretamente pelo backend Node.js para armazenar ou recuperar dados conforme necessário.
|
|
|
**Firebase Authentication:** O Firebase é utilizado para autenticar os usuários tanto no aplicativo mobile quanto na versão web. Isso garante que apenas usuários autorizados possam acessar a aplicação e seus dados. A escolha do Firebase simplifica o processo de autenticação, eliminando a necessidade de construir uma solução personalizada de gerenciamento de usuários.
|
|
|
|
|
|
### 6. **Fluxo de Comunicação**:
|
|
|
- **Flutter (Mobile/Web) -> Node.js**: O fluxo de dados começa com o aplicativo Flutter (mobile ou web) enviando requisições HTTP ao backend Node.js rodando no Docker. Essas requisições podem incluir operações como autenticação, envio de dados ou solicitações de arquivos.
|
|
|
- **Node.js -> Firebase & Amazon S3**: O backend Node.js lida com as requisições, utilizando o Firebase para autenticação e o Amazon S3 para armazenamento de arquivos. Uma vez processadas, as respostas são enviadas de volta ao frontend Flutter.
|
|
|
- **Firebase para Autenticação Direta**: O Flutter também interage diretamente com o Firebase para autenticação, validando os tokens antes de enviar requisições mais complexas ao backend.
|
|
|
## Backend
|
|
|
|
|
|
### Resumo Final:
|
|
|
Essa arquitetura combina flexibilidade, escalabilidade e simplicidade. O **GitLab Runner** com Docker oferece automação de CI/CD eficiente na AWS, enquanto o **Node.js** continua como a camada de backend para processar lógica de negócios e comunicação entre o frontend e serviços externos. O **Flutter** proporciona uma solução multiplataforma para o desenvolvimento do frontend, reduzindo custos e tempo de desenvolvimento. O **Firebase Authentication** simplifica o controle de acesso dos usuários e o **Amazon S3** cuida do armazenamento de dados e arquivos.
|
|
|
**Backend no Flutter:** O backend da aplicação é gerenciado diretamente pelo Flutter, com chamadas diretas aos serviços do Firebase. A integração com o Firebase permite que o Flutter manipule autenticação, consultas de dados e operações diretamente sem a necessidade de um backend separado. Isso simplifica a arquitetura e reduz a complexidade, mantendo a comunicação eficiente entre o frontend e os serviços do Firebase.
|
|
|
|
|
|
## Frontend
|
|
|
|
|
|
**Flutter Mobile:** O aplicativo é desenvolvido com Flutter para rodar nativamente em dispositivos Android e iOS, aproveitando uma única base de código para ambas as plataformas. O Flutter facilita o desenvolvimento multiplataforma, reduzindo o tempo de desenvolvimento e a complexidade de manutenção.
|
|
|
|
|
|
**Flutter Web:** O frontend web também é desenvolvido com Flutter e pode ser acessado através de navegadores como Chrome, Firefox, Edge e Safari. A aplicação web interage diretamente com o Firebase para realizar operações semelhantes às do aplicativo mobile.
|
|
|
|
|
|
## Armazenamento de Dados
|
|
|
|
|
|
**Amazon S3 (Simple Storage Service):** O S3 é utilizado para armazenar arquivos e dados estáticos, como imagens e documentos. Ele fornece escalabilidade automática, alta durabilidade e segurança para os dados armazenados, e é acessado diretamente pelo backend Flutter para armazenar ou recuperar dados conforme necessário.
|
|
|
|
|
|
## Fluxo de Comunicação
|
|
|
|
|
|
**Flutter (Mobile/Web) -> Firebase:** O fluxo de dados começa com o aplicativo Flutter (mobile ou web) enviando requisições diretas ao Firebase. Essas requisições podem incluir operações como autenticação, envio de dados ou solicitações de arquivos.
|
|
|
|
|
|
**Firebase para Autenticação e Armazenamento:** O Firebase lida com as requisições, incluindo autenticação e armazenamento de arquivos no Amazon S3. Uma vez processadas, as respostas são enviadas de volta ao frontend Flutter.
|
|
|
|
|
|
Essa abordagem modular facilita a escalabilidade e manutenção da aplicação, ao mesmo tempo que promove uma infraestrutura robusta e ágil.
|
|
|
|
|
|
![Tecnologias e arquitetura projeto Clarity](uploads/49b206249bd398fd240b51cd64d8b7b4/Cloud_Architecture__1_.png) |
|
|
\ No newline at end of file |