|
Segue abaixo a arquitetura de deploy da aplicação:
|
|
| [**Home**](home) | [Escopo e Cronograma](escopo) | [Processo](processo) | [Design/Mockups](design_mockups) | [Configuração](configuracao) | [Arquitetura](arquitetura) | [Código](codigo) | [BD](banco_dados) | [Qualidade](qualidade) | [Utilização](utilizacao) |
|
|
|
|
| :--------------: | :---------------------------: | :------------------: | :--------------: | :--------------------------: | :------------------------: | :--------------: | :---------------: | :--------------------: | :----------------------: |
|
|
|
|
|
|
|
|
# Arquitetura da Aplicação
|
|
|
|
|
|
|
|
## Descrição
|
|
|
|
|
|
|
|
Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend, além dos dados relativos ao deploy.
|
|
|
|
|
|
|
|
# Sumário
|
|
|
|
[Descrição](#descrição)
|
|
|
|
- [Tecnologias](#Tecnologias)
|
|
|
|
- [.Net C#](#.Net C#)
|
|
|
|
- [ReactJs](#React.js-frontend)
|
|
|
|
- [GitLab](#gitlab-integração-contínua)
|
|
|
|
- [Docker](#docker-conteinerização)
|
|
|
|
- [Nginx](#nginx)
|
|
|
|
- [Comunicação entre as tecnologias utilizadas](#comunicação-entre-as-tecnologias-utilizadas)
|
|
|
|
- [Modelo Arquitetural](#modelo-arquitetural-rest)
|
|
|
|
- [Definições do modelo](#definições-do-modelo-arquitetural-rest)
|
|
|
|
- [Fluxograma](#em-alto-nível-de-chamadas-de-uma-api-rest)
|
|
|
|
- [Estrutura de Arquivos do Backend](#estrutura-de-arquivos-do-backend)
|
|
|
|
- [Estrutura de Arquivos do Frontend](#estrutura-de-arquivos-do-frontend)
|
|
|
|
- [Diagrama comunicação entre pacotes](#diagrama-comunicação-pacotes)
|
|
|
|
- [Hospedagem Eficiente](#Hospedagem-Eficiente)
|
|
|
|
- [Diagrama de deploy](#diagrama-de-deploy)
|
|
|
|
|
|
|
|
# Tecnologias
|
|
|
|
|
|
|
|
<div align="center">
|
|
|
|
<img src="uploads/72018f3669a53a91c5401ea50787ddad/Icones_tecnologias.png" width="1500">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
### .Net C#
|
|
|
|
|
|
|
|
O .NET C# é uma plataforma de desenvolvimento de código aberto mantida pela Microsoft. Ele oferece aos desenvolvedores uma estrutura poderosa para criar aplicações de nível de produção de maneira eficiente e configurável. Com o .NET C#, os desenvolvedores podem iniciar rapidamente seus projetos sem perder tempo com a configuração e preparação inicial. No contexto do nosso projeto, foi escolhido como a tecnologia para o desenvolvimento do backend.
|
|
|
|
|
|
|
|
### React.js (Frontend)
|
|
|
|
|
|
|
|
O React (também denominado React.js ou ReactJS) é uma biblioteca front-end JavaScript de código aberto com foco em criar interfaces de usuário em páginas web. Em nosso projeto, essa foi a tecnologia escolhida a ser utilizada para o desenvolvimento do frontend.
|
|
|
|
|
|
|
|
### PostgreSQL (Banco de Dados)
|
|
|
|
|
|
|
|
O PostgreSQL é um sistema de banco de dados relacional orientado a objetos, poderoso e de código aberto, com mais de 30 anos de desenvolvimento ativo. Ele se destaca por sua alta confiabilidade, robustez de recursos e excelente desempenho. Em nosso projeto, o PostgreSQL foi selecionado como a tecnologia para o banco de dados da aplicação.
|
|
|
|
|
|
|
|
### Docker (Conteinerização)
|
|
|
|
|
|
|
|
O Docker é um conjunto de produtos de plataforma como serviço (PaaS) que utiliza virtualização em nível de sistema operacional para fornecer software em pacotes chamados contêineres. No contexto do nosso projeto, o Docker foi escolhido como a ferramenta de conteinerização para os artefatos que serão executados em máquinas EC2 na AWS.
|
|
|
|
|
|
|
|
### GitLab
|
|
|
|
O GitLab é um gerenciador de repositório de software baseado em Git que oferece suporte a Wiki, gerenciamento de tarefas e CI/CD. Similar ao GitHub, o GitLab permite que os desenvolvedores armazenem seu código em servidores próprios, em vez de depender de servidores de terceiros.
|
|
|
|
|
|
|
|
### Ngnix
|
|
|
|
O NGINX é um software de servidor altamente flexível e de alto desempenho, amplamente popular na gestão de tráfego web. Abaixo, destacamos algumas de suas principais capacidades:
|
|
|
|
|
|
|
|
O NGINX funciona como um proxy reverso, direcionando solicitações dos clientes para servidores backend. Esse recurso é particularmente valioso para otimizar o desempenho e a segurança de um servidor web. Além disso, permite a distribuição equilibrada da carga entre os servidores, assegurando uma gestão eficaz do tráfego.
|
|
|
|
|
|
|
|
|
|
|
|
## Comunicação entre as tecnologias utilizadas
|
|
|
|
|
|
|
|
<div align="center">
|
|
|
|
<img src="" width="1500">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
# Modelo Arquitetural REST
|
|
|
|
|
|
|
|
TBD
|
|
|
|
|
|
|
|
## Definições do Modelo Arquitetural REST
|
|
|
|
|
|
|
|
TBD
|
|
|
|
|
|
|
|
# Estrutura de Arquivos do Backend
|
|
|
|
|
|
|
|
TBD
|
|
|
|
|
|
|
|
### Explicativo dos diretórios do backend
|
|
|
|
|
|
|
|
TBD
|
|
|
|
|
|
|
|
|
|
|
|
## Frontend
|
|
|
|
|
|
|
|
<h3 id="front-end-def-tec">Definições de Tecnologias</h3>
|
|
|
|
|
|
|
|
TBD
|
|
|
|
|
|
|
|
<h3 id="front-end-mods-sis">Módulos do Sistema</h3>
|
|
|
|
|
|
|
|
TBD
|
|
|
|
|
|
|
|
### Diagramas de Componentes
|
|
|
|
|
|
|
|
TBD
|
|
|
|
|
|
|
|
### Diagrama do Sistema
|
|
|
|
|
|
|
|
TBD
|
|
|
|
# Hospedagem: Amazon AWS EC2 e S3
|
|
|
|
|
|
|
|
Para oferecer uma solução de hospedagem altamente escalável e eficiente para nossos aplicativos web, adotamos uma abordagem estratégica. Nossa arquitetura de hospedagem aproveita dois serviços robustos da Amazon Web Services (AWS): Elastic Compute Cloud (EC2) e Amazon Simple Storage Service (S3).
|
|
|
|
|
|
|
|
# Backend na Instância do EC2:
|
|
|
|
|
|
|
|
Nossa lógica de servidor, também conhecida como backend, será executada em uma instância do EC2. O EC2 é uma máquina virtual escalável e flexível, permitindo-nos configurar e gerenciar servidores conforme nossas necessidades. Essa abordagem nos proporciona controle total sobre o ambiente do servidor, possibilitando a personalização de recursos como poder de processamento, memória e sistema operacional. Além disso, o EC2 é altamente seguro e pode ser configurado para atender aos requisitos específicos de segurança da nossa aplicação.
|
|
|
|
|
|
|
|
Hospedando nosso backend no EC2, garantimos a capacidade de gerenciar a lógica de negócios e o processamento de dados de maneira eficaz e escalável.
|
|
|
|
|
|
|
|
# Frontend no Amazon S3 Bucket:
|
|
|
|
|
|
|
|
Nossa interface do usuário, ou frontend, será armazenada em um bucket do Amazon S3. O Amazon S3 é um serviço de armazenamento de objetos altamente durável e escalável, ideal para armazenar arquivos estáticos como HTML, CSS, JavaScript e imagens. Utilizando um bucket do S3 para hospedar o frontend, asseguramos alta disponibilidade, distribuição global e baixos custos de armazenamento.
|
|
|
|
|
|
|
|
Essa abordagem nos permite separar claramente o conteúdo estático do dinâmico. Além disso, ao utilizar a rede de entrega de conteúdo (CDN) integrada do S3, garantimos que nosso frontend seja entregue de maneira rápida e eficiente aos usuários finais em todo o mundo.
|
|
|
|
|
|
|
|
A combinação do EC2 e do Amazon S3 cria uma infraestrutura sólida e escalável para nossos aplicativos web. O backend no EC2 fornece a funcionalidade e a lógica de negócios, enquanto o frontend no S3 oferece uma experiência de usuário otimizada e rápida. Essa arquitetura nos permite crescer de maneira eficaz e oferecer aos nossos usuários uma experiência de alta qualidade em nossos aplicativos web.
|
|
|
|
|
|
|
|
# Diagrama de Deploy
|
|
|
|
<div align="center">
|
|
|
|
<img src="uploads/ee0860ba1b20f86f47dd4573f12300c9/arq-deploy.png" width="1500">
|
|
|
|
</div>
|
|
|
|
|
|
![arq-deploy](uploads/ee0860ba1b20f86f47dd4573f12300c9/arq-deploy.png) |
|
![arq-deploy](uploads/ee0860ba1b20f86f47dd4573f12300c9/arq-deploy.png) |
|
|
|
\ No newline at end of file |