Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • garbus-wiki garbus-wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 35
    • Issues 35
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GarbUs
  • garbus-wikigarbus-wiki
  • Wiki
  • arquitetura

arquitetura · Changes

Page history
Update arquitetura authored Jun 24, 2021 by Angelo Calebe Araujo da Rocha's avatar Angelo Calebe Araujo da Rocha
Hide whitespace changes
Inline Side-by-side
arquitetura.md
View page @ b58bbb79
...@@ -27,14 +27,15 @@ Devem ser apresentados das seguintes formas: ...@@ -27,14 +27,15 @@ Devem ser apresentados das seguintes formas:
# Arquitetura # Arquitetura
O projeto está dividido em 2 partes: O projeto está dividido em 2 partes:
- **Frontend**: É uma Progressive Web Application, ou seja, uma aplicação web que pode ser instalada, utilizando a tecnologia *Service Worker*, presente nos principais navegadores web do mercado. Desenvolvido em React.js com linguagem Typescript. - **Frontend**: É uma [Progressive Web Application](https://web.dev/progressive-web-apps/), ou seja, uma aplicação web que pode ser instalada, utilizando a tecnologia *[Service Worker](https://developers.google.com/web/fundamentals/primers/service-workers?hl=pt)*, presente nos principais navegadores web do mercado. Desenvolvido em React.js com linguagem Typescript.
- **Backend**: É uma RESTful API construída utilizando Spring, que é um dos frameworks Java mais populares do mercado. - **Backend**: É uma RESTful API construída utilizando Spring, que é um dos frameworks Java mais populares do mercado.
Também estão sendo utilizadas as seguintes tecnologias como partes integrantes do projeto: Também estão sendo utilizadas as seguintes tecnologias como partes integrantes do projeto:
- **PostgreSQL**: Banco de dados relacional *open source* com mais de 30 anos de desenvolvimento. Um dos mais utilizados no mundo. Utilizado no projeto como persistência de dados. - **PostgreSQL** (https://www.postgresql.org/): Banco de dados relacional *open source* com mais de 30 anos de desenvolvimento. Um dos mais utilizados no mundo. Utilizado no projeto como persistência de dados.
- **Hashicorp Vault**: Uma ferramenta para armazenar senhas e outros segredos de forma segura, com forte criptografia e controle de acesso, e acessível de várias formas (REST API, linha de comando, bibliotecas para várias linguagens de programação). Utilizado no projeto para armazenar senhas e configurações. - **Hashicorp Vault** (https://www.vaultproject.io/): Uma ferramenta para armazenar senhas e outros segredos de forma segura, com forte criptografia e controle de acesso, e acessível de várias formas (REST API, linha de comando, bibliotecas para várias linguagens de programação). Utilizado no projeto para armazenar senhas e configurações.
- ** API Google Maps**: API de acesso ao Google Maps. - **Nginx** (https://nginx.org/en/): Um servidor web e proxy reverso. Utilizado para intermediar a comunicação entre os clientes e as aplicações do projeto, sendo o único meio de acesso.
- **Firebase**: Uma plataforma do Google utilizada para desenvolvimento de aplicativos móveis e web. Possui vários recursos prontos para integração, como banco de dados, autenticação, *analytics* e notificações push. Utilizado no projeto para enviar e exibir notificações push. - **Plataforma Google Maps** (https://developers.google.com/maps): API de acesso ao Google Maps.
- **Firebase** (https://firebase.google.com/): Uma plataforma do Google utilizada para desenvolvimento de aplicativos móveis e web. Possui vários recursos prontos para integração, como banco de dados, autenticação, *analytics* e notificações push. Utilizado no projeto para enviar e exibir notificações push.
## Diagrama de componentes ## Diagrama de componentes
A visão geral dos componentes do projeto pode ser visualizada na imagem abaixo. A visão geral dos componentes do projeto pode ser visualizada na imagem abaixo.
...@@ -42,7 +43,7 @@ A visão geral dos componentes do projeto pode ser visualizada na imagem abaixo. ...@@ -42,7 +43,7 @@ A visão geral dos componentes do projeto pode ser visualizada na imagem abaixo.
![](https://tools.ages.pucrs.br/garbus/garbus-wiki/raw/master/Images/component_diagram.png) ![](https://tools.ages.pucrs.br/garbus/garbus-wiki/raw/master/Images/component_diagram.png)
## Diagrama de implantação ## Diagrama de implantação
A implantação do projeto é realizada utilizando containers Docker. O repositório [garbus-orchestration](https://tools.ages.pucrs.br/garbus/garbus-orchestration) contém a configuração do *docker-compose*, responsável pela implantação, que hoje é feita em uma única máquina. Para distribuir em vários hosts, algumas alterações seriam necessárias (provavelmente mudar para o *Docker Swarm* ou mesmo *K8s*). A implantação do projeto é realizada utilizando containers Docker. O repositório [garbus-orchestration](https://tools.ages.pucrs.br/garbus/garbus-orchestration) contém a configuração do *docker-compose*, responsável pela implantação, que hoje é feita em uma única máquina. Para distribuir em vários hosts, algumas alterações seriam necessárias (provavelmente mudar para o *[Docker Swarm](https://docs.docker.com/engine/swarm/)* ou mesmo *[K8s](https://kubernetes.io/pt-br/)*).
Os componentes Frontend, Backend e Vault são acessíveis apenas pelo Nginx. Endereços: Os componentes Frontend, Backend e Vault são acessíveis apenas pelo Nginx. Endereços:
- Frontend: https://ages-garbus.duckdns.org - Frontend: https://ages-garbus.duckdns.org
...@@ -84,5 +85,5 @@ Ao criar uma instância do Vault, um [*root token*](https://www.vaultproject.io/ ...@@ -84,5 +85,5 @@ Ao criar uma instância do Vault, um [*root token*](https://www.vaultproject.io/
## Acesso Web ## Acesso Web
A maior parte dos componentes do projeto é acessível apenas através do Nginx. Desta forma, há logs de acesso centralizados. A maior parte dos componentes do projeto é acessível apenas através do Nginx. Desta forma, há logs de acesso centralizados.
O acesso pelo Nginx é realizado por HTTPS, utilizando certificados do Let's Encrypt. Este é um requisito para utilizar o Service Worker, que habilita as funções de PWA (aplicativo instalável e notificações). O acesso pelo Nginx é realizado por HTTPS, utilizando certificados do [Let's Encrypt](https://letsencrypt.org/pt-br/). Este é um requisito para utilizar o Service Worker, que habilita as funções de PWA (aplicativo instalável e notificações).
Clone repository
  • Backend
  • Gerenciamento do Projeto
  • Solução de Problemas: Prettier e quebras de linha
  • Utilizando a wiki
    • adicionando imagens
    • escrevendo em markdown
    • wiki no editor de texto
  • Workshops
  • arquitetura
  • banco_dados
  • configuracao
  • Home
  • horarios
  • instalacao
  • mockups
  • requisitos
View All Pages