Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
ArthurRAmaral committed May 28, 2021
2 parents 0fcc415 + cd77a49 commit 107d9f6
Show file tree
Hide file tree
Showing 11 changed files with 134 additions and 49 deletions.
68 changes: 62 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ Ao final da execução, terá criado os containers expostos nas seguintes portas

Para acessar a aplicação basta navegar até `localhost:3000` e acessar utilizando as credenciais:

```
```txt
e-mail: [email protected]
senha: password
```
Expand All @@ -130,9 +130,65 @@ Para acessar a documentação da api-node é possivél navegar até `localhost:3

## Histórico de versões

- 0.1.1
- CHANGE: Atualização das documentacoes. Código permaneceu inalterado.
- 0.1.0
- Implementação da funcionalidade X pertencente ao processo P.
- 0.0.1
- Trabalhando na modelagem do processo de negócios.
- Definição do Tema e Tecnologias
- 0.0.2
- Criação de PoC's
- 0.0.3
- Definição de identidade
- 0.0.4
- Montar apresentação de slides
- 0.1.0
- Montar apresentação de slides
- 0.1.1
- Termo de Abertura de Projeto
- 0.1.2
- Estrutura analítica do projeto (EAP)
- 0.2.0
- Tela de Login
- 0.2.1
- Autenticação
- 0.2.2
- Tabela de usuários
- 0.2.3
- Tela de Integração com GitHub/GitLab
- 0.2.4
- Webhook com GitHub/GitLab
- 0.2.5
- Cadastro de usuários por arquivo
- 0.2.6
- Protótipos de interfaces
- 0.2.7
- Diagrama de Classes
- 0.2.8
- Diagrama de Componentes
- 0.2.9
- Diagrama de Visão Geral e Documento de arquitetura
- 0.3.0
- Tela de Aplicações
- 0.3.1
- Tela de Plugins
- 0.3.2
- Build com Pack
- 0.3.3
- Build com Docker Build
- 0.4.0
- Deploy por Webhook
- 0.4.1
- Configurar Implantação
- 0.4.2
- Listagem de Rollbacks
- 0.4.3
- Iniciar Projeto Mobile
- 0.4.4
- Tela de Aplicações
- 0.5.0
- Avaliação da Arquitetura
- 0.5.1
- Tela de Aplicações
- 0.5.2
- Visualização de informações mobile
- 0.5.3
- Monitoramento Prometheus + Grafana
- 1.0.0
- Deploy da versão inicial
32 changes: 16 additions & 16 deletions artefatos/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,22 @@ Liste os artefatos produzidos, com suas localizaçãoes e descrição do conteú

* `/atas`

- [ATA-2021-02-06.md](atas/ATA-2021-02-06.md) - Ata de definição Inicial do Trabalho, apresentação de ideias.
- [ATA-2021-02-09.md](atas/ATA-2021-02-09.md) - Ata de especificação do tema, planejamento do projeto e sprint I.
- [ATA-2021-02-13.md](atas/ATA-2021-02-13.md) - Ata de definições de escopo, tecnologias, identidade do projeto, apresentação
- [ATA-2021-02-20.md](atas/ATA-2021-02-20.md) - Ata de alinhamento de objetivos e alocação nas tarefas - SPRINT II
- [ATA-2021-02-27.md](atas/ATA-2021-02-27.md) - Ata de checagem o andamento da documentação do projeto
- [ATA-2021-03-09.md](atas/ATA-2021-03-09.md) - Ata de alinhamento do desenvolvimento e tarefas de documentação
- [ATA-2021-03-13.md](atas/ATA-2021-03-13.md) - Ata de alinhamento do desenvolvimento e tarefas de documentação
- [ATA-2021-03-20.md](atas/ATA-2021-03-20.md) - Ata de alinhamento do desenvolvimento e tarefas de documentação para apresentação
- [ATA-2021-04-03.md](atas/ATA-2021-04-03.md) - Ata de alinhamento do desenvolvimento e novas funcionalidades para a Sprint III
- [ATA-2021-04-10.md](atas/ATA-2021-04-10.md) - Ata de alinhamento do desenvolvimento da Sprint III
- [ATA-2021-04-17.md](atas/ATA-2021-04-17.md) - Ata de planejamento da Sprint IV
- [ATA-2021-04-22.md](atas/ATA-2021-04-22.md) - Ata de acompanhamento da Sprint IV
- [ATA-2021-05-01.md](atas/ATA-2021-05-01.md) - Ata de planejamento da Sprint V
- [ATA-2021-05-06.md](atas/ATA-2021-05-06.md) - Ata de alinhamento para a apresentação e primeira entrega da Sprint V
- [ATA-2021-05-13.md](atas/ATA-2021-05-13.md) - Ata de alinhamento final Sprint V - parte 01
- [ATA-2021-05-20.md](atas/ATA-2021-05-20.md) - Ata de alinhamento final Sprint V - parte 02
* [ATA-2021-02-06.md](atas/ATA-2021-02-06.md) - Ata de definição Inicial do Trabalho, apresentação de ideias.
* [ATA-2021-02-09.md](atas/ATA-2021-02-09.md) - Ata de especificação do tema, planejamento do projeto e sprint I.
* [ATA-2021-02-13.md](atas/ATA-2021-02-13.md) - Ata de definições de escopo, tecnologias, identidade do projeto, apresentação
* [ATA-2021-02-20.md](atas/ATA-2021-02-20.md) - Ata de alinhamento de objetivos e alocação nas tarefas - SPRINT II
* [ATA-2021-02-27.md](atas/ATA-2021-02-27.md) - Ata de checagem o andamento da documentação do projeto
* [ATA-2021-03-09.md](atas/ATA-2021-03-09.md) - Ata de alinhamento do desenvolvimento e tarefas de documentação
* [ATA-2021-03-13.md](atas/ATA-2021-03-13.md) - Ata de alinhamento do desenvolvimento e tarefas de documentação
* [ATA-2021-03-20.md](atas/ATA-2021-03-20.md) - Ata de alinhamento do desenvolvimento e tarefas de documentação para apresentação
* [ATA-2021-04-03.md](atas/ATA-2021-04-03.md) - Ata de alinhamento do desenvolvimento e novas funcionalidades para a Sprint III
* [ATA-2021-04-10.md](atas/ATA-2021-04-10.md) - Ata de alinhamento do desenvolvimento da Sprint III
* [ATA-2021-04-17.md](atas/ATA-2021-04-17.md) - Ata de planejamento da Sprint IV
* [ATA-2021-04-22.md](atas/ATA-2021-04-22.md) - Ata de acompanhamento da Sprint IV
* [ATA-2021-05-01.md](atas/ATA-2021-05-01.md) - Ata de planejamento da Sprint V
* [ATA-2021-05-06.md](atas/ATA-2021-05-06.md) - Ata de alinhamento para a apresentação e primeira entrega da Sprint V
* [ATA-2021-05-13.md](atas/ATA-2021-05-13.md) - Ata de alinhamento final Sprint V - parte 01
* [ATA-2021-05-20.md](atas/ATA-2021-05-20.md) - Ata de alinhamento final Sprint V - parte 02

* `/gerencia`
* [declaracao_de_escopo.md](declaracao_de_escopo.md) - Definição de escopo do projeto;
Expand Down
8 changes: 8 additions & 0 deletions artefatos/atas/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,11 @@
* [ATA-2021-03-09.md](ATA-2021-03-09.md) - Ata de alinhamento do desenvolvimento e tarefas de documentação
* [ATA-2021-03-13.md](ATA-2021-03-13.md) - Ata de alinhamento do desenvolvimento e tarefas de documentação
* [ATA-2021-03-20.md](ATA-2021-03-20.md) - Ata de alinhamento do desenvolvimento e tarefas de documentação para apresentação
* [ATA-2021-04-03.md](ATA-2021-04-03.md) - Ata de alinhamento do desenvolvimento e novas funcionalidades para a Sprint III
* [ATA-2021-04-10.md](ATA-2021-04-10.md) - Ata de alinhamento do desenvolvimento da Sprint III
* [ATA-2021-04-17.md](ATA-2021-04-17.md) - Ata de planejamento da Sprint IV
* [ATA-2021-04-22.md](ATA-2021-04-22.md) - Ata de acompanhamento da Sprint IV
* [ATA-2021-05-01.md](ATA-2021-05-01.md) - Ata de planejamento da Sprint V
* [ATA-2021-05-06.md](ATA-2021-05-06.md) - Ata de alinhamento para a apresentação e primeira entrega da Sprint V
* [ATA-2021-05-13.md](ATA-2021-05-13.md) - Ata de alinhamento final Sprint V - parte 01
* [ATA-2021-05-20.md](ATA-2021-05-20.md) - Ata de alinhamento final Sprint V - parte 02
1 change: 0 additions & 1 deletion artefatos/gerencia/declaracao_de_escopo.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ Construir um sistema simples e prático para implantação de aplicações escal
- O software back-end de comunicação com serviços de containers deve ser desenvolvido em GoLang;
- A comunicação sem necessidade de ser em tempo real entre front-end e back-end deve seguir o padrão RESTful;
- A comunicação com necessidade de ser em tempo real entre front-end e back-end deve utilizar o WebSocket;
- A comunicação síncrona entre os back-ends devem utilizar o framework gRPC;
- A comunicação assíncrona entre os back-ends devem utilizar o sistema de mensageria RabbitMQ;
- Para a persistência de dados deve ser utilizado o PostgreSQL;
- Para o cache de consultas à API deve ser utilizado o Redis;
Expand Down
2 changes: 1 addition & 1 deletion artefatos/gerencia/relatorio_de_encerramento_do_projeto.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Sim, todas os requisitos que foram levantados no início do projeto foram entreg
# 4. Liçoes aprendidas

Durante o processo de desenvolvimento do Climb, muitas lições foram apreendidas pelos integrantes do grupo, como a utilização de diversas tecnologias e protocolos
de comunicação para compor um software complexo, sendo algumas delas: Next.js, Flutter, Nest.js, Kubernetes, HTTP, Websocket, RabbitMQ, gRPC, Grafana,
de comunicação para compor um software complexo, sendo algumas delas: Next.js, Flutter, Nest.js, Kubernetes, HTTP, Websocket, RabbitMQ, Grafana,
Prometheus. Além disso, foram apreendidas muitas técnicas para gerenciar o projeto, como a utilização de algumas ferramentas usando a metodologia SCRUM.

# 5. Questões em Aberto
Expand Down
36 changes: 30 additions & 6 deletions documentacao/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,33 @@

Liste os documentos diponibilizados nesta pasta com uma breve descrição do conteúdo de cada um dele.

- apresentacao_inicial_do_projeto.pdf - Slides da apresentacao inicial do projeto.
- documento_de_arquitetura.md - Contem os detalhes arquiteturais do projeto.
- diagrama_de_classe.png- Contem a estrutura de classes utilizada no projeto.
- diagrama_de_arquitetura.png - Contem o diagrama arquitetural do projeto.
- diagrama_de_componentes.png - Contem a visão em nível de componentes do projeto.
- diagrama_de_visão_geral.png - Contem a visão geral entre as partes do projeto.
* apresentacao_inicial_do_projeto.pdf - Slides da apresentacao inicial do projeto.
* documento_de_arquitetura.md - Contem os detalhes arquiteturais do projeto.

* `\imagens`
* diagrama_de_classe.png - Contem a estrutura de classes utilizada no projeto.
* diagrama_de_arquitetura.png - Contem o diagrama arquitetural do projeto.
* diagrama_de_componentes.png - Contem a visão em nível de componentes do projeto.
* diagrama_de_visão_geral.png - Contem a visão geral entre as partes do projeto.
* diagrama_de_classe.png - Contem a versão inicial do diagrama de classes do projeto
* diagrama_de_classe_final.svg - Contem a versão inicial do diagrama de classes do projeto
* entrada_dado_invalido.png - Figura de demonstração de Resistência a falhas - entrada de dados inválidas
* mensagem_falha.png - Figura de demonstração de Resistência a falhas - exemplo de falha de comunicação entre sistemas
* new-cookie-setted.png - Figura de demonstração de Segurança - acessando rota pública de sign in com credenciais de administrador para gerar token JWT no navegador
* signin_network.png - Figura de demonstração de Segurança - resposta via navegador após sucesso _HTTP Status_ 201 na autenticação
* signin network response.png - Figura de demonstração de Segurança - resposta via navegador após sucesso _HTTP Status_ 200 na autenticação exibido o token JWT
* swagger-admin-login-success.png - Figura de demonstração de Segurança - resposta via Swagger após sucesso _HTTP Status_ 200 na autenticação de administrador
* swagger-get-users-with-admin.png - Figura de demonstração de Segurança - resposta via Swagger após sucesso _HTTP Status_ 200 após obter os usuários com o perfil de administrador
* swagger-get-users-with-user.png - Figura de demonstração de Segurança - resposta via Swagger após falha _HTTP Status_ 403 após obter os usuários com o perfil de usuário não administrador
* swagger-me-401.png - Figura de demonstração de Segurança - resposta via Swagger após falha na requisição _HTTP Status_ 401 indicando que o acesso foi negado por estar na situação não autenticado
* swagger-me-with-admin-200.png - Figura de demonstração de Segurança - resposta via Swagger após sucesso _HTTP Status_ 200 na autenticação de administrador
* swagger-me-with-user-200.png - Figura de demonstração de Segurança - resposta via Swagger após sucesso _HTTP Status_ 200 na autenticação de usuário
* swagger-signin.png - Figura de demonstração de Documentação da Api na rota _signin_ via Swagger
* swagger-user-login-success.png - Figura de demonstração de Segurança - resposta via Swagger após sucesso na autenticação
* swagger-usuarios.png - Figura de demonstração de Documentação da Api na rota _user_ via Swagger
* swagger-webhooks.png - Figura de demonstração de Documentação da Api na rota _webhook_ via Swagger
* swagger-without-cookie.png - Figura de demonstração de Segurança - resposta via Swagger no acesso sem cookies
* swagger_example.git - Figura de demonstração de Documentação da Api via Swagger
* swagger_ui.png - Figura de demonstração de Documentação da Api via Swagger
* tempo_de_resposta.png - Figura de demonstração de Desempenho - tempo de resposta adequado
* usuarios_simultaneos.png - Figura de demonstração de Desempenho - demonstração de acesso com a quantidade de usuários simultâneos
Binary file added documentacao/apresentacao_final.pdf
Binary file not shown.
36 changes: 17 additions & 19 deletions documentacao/documento_de_arquitetura.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,12 +127,12 @@ Os objetivos específicos são:
| RF005 | Implantação da aplicação do usuário por meio de Webhook | Essencial |
| RF006 | Lista de atividades com Rollback | Essencial |
| RF007 | Diferenciar níveis de acesso de administrador e usuário | Essencial |
| RF009 | Visualização de informações (Mobile) | Essencial |
| RF010 | Monitoramento (Prometheus + Grafana) | Desejável |
| RF011 | Construção da imagem de container com o Buildpacks Pack | Desejável |
| RF012 | Integração com GitLab | Opcional |
| RF013 | Disponibilizar aplicativos pré configurado por meio de template | Opcional |
| RF014 | Cadastro por meio de carga arquivo ou por meio do acesso a organização | Opcional |
| RF008 | Visualização de informações (Mobile) | Essencial |
| RF009 | Monitoramento (Prometheus + Grafana) | Desejável |
| RF010 | Construção da imagem de container com o Buildpacks Pack | Desejável |
| RF011 | Integração com GitLab | Opcional |
| RF012 | Disponibilizar aplicativos pré configurado por meio de template | Opcional |
| RF013 | Cadastro por meio de carga arquivo ou por meio do acesso a organização | Opcional |

## 2.2. Requisitos Não-Funcionais

Expand All @@ -152,18 +152,17 @@ Os objetivos específicos são:
4. O software back-end de comunicação com serviços de containers deve ser desenvolvido em GoLang;
5. A comunicação sem necessidade de ser em tempo real entre front-end e back-end deve seguir o padrão RESTful;
6. A comunicação com necessidade de ser em tempo real entre front-end e back-end deve utilizar o WebSocket;
7. A comunicação síncrona entre os back-ends devem utilizar o framework gRPC;
8. A comunicação assíncrona entre os back-ends devem utilizar o sistema de mensageria RabbitMQ;
9. Para a persistência de dados deve ser utilizado o PostgreSQL;
10. Para o cache de consultas à API deve ser utilizado o Redis;
11. Para a autorização de acesso aos repositórios de aplicativos externos deve ser utilizado o OAuth;
12. Para a escuta de envios de commits nos repositórios deve ser utilizado Webhooks;
13. Para a orquestração de containers deve ser utilizado um implementação do Kubernetes;
14. Para o controle de ingresso dos serviços do orquestrador deve ser utilizado o Traefik;
15. Para o fornecimento de certificados de criptografia TLS deve ser utilizado o Let's Encrypt;
16. Para a coleta de métricas do orquestrador e do controlador de ingresso deve ser utilizado o Prometheus;
17. Para a visualização de métricas coletadas deve ser utilizado Prometheus Datasources como o Grafana;
18. Para a resolução de nomes dos endereços IPs para o exterior deve ser utilizado o Cloudflare.
7. A comunicação assíncrona entre os back-ends devem utilizar o sistema de mensageria RabbitMQ;
8. Para a persistência de dados deve ser utilizado o PostgreSQL;
9. Para o cache de consultas à API deve ser utilizado o Redis;
10. Para a autorização de acesso aos repositórios de aplicativos externos deve ser utilizado o OAuth;
11. Para a escuta de envios de commits nos repositórios deve ser utilizado Webhooks;
12. Para a orquestração de containers deve ser utilizado um implementação do Kubernetes;
13. Para o controle de ingresso dos serviços do orquestrador deve ser utilizado o Traefik;
14. Para o fornecimento de certificados de criptografia TLS deve ser utilizado o Let's Encrypt;
15. Para a coleta de métricas do orquestrador e do controlador de ingresso deve ser utilizado o Prometheus;
16. Para a visualização de métricas coletadas deve ser utilizado Prometheus Datasources como o Grafana;
17. Para a resolução de nomes dos endereços IPs para o exterior deve ser utilizado o Cloudflare.

## 2.4. Mecanismos Arquiteturais

Expand All @@ -175,7 +174,6 @@ Os objetivos específicos são:
| Negócio | Back-end web | GoLang |
| Comunicação | Front-Back non-real-time | Restful |
| Comunicação | Front-Back real-time | WebSocket |
| Comunicação | Back-Back point-to-point | gRPC |
| Comunicação | Back-Back broker-based | RabbitMQ |
| Persistência | Relational SGBD | PostgreSQL |
| Cache | In-memory | Redis |
Expand Down
Binary file modified documentacao/imagens/diagrama_de_arquitetura.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentacao/imagens/diagrama_de_visao_geral.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added documentacao/pitch.mp4
Binary file not shown.

0 comments on commit 107d9f6

Please sign in to comment.