Git Breakdown

Git Breakdown

  • Docs
  • Release Notes

›Iniciação

Iniciação

  • Backlog do Produto
  • Orçamento Inicial
  • Termo de Abertura
  • Métricas
  • Documento de Visão
  • Documento de Arquitetura
  • Estrutura Analítica do Projeto
  • Como Contribuir

Planos

  • Gerenciamento de riscos
  • Plano de Comunicação
  • Gerenciamento de Projeto

Políticas

  • Política de Commits
  • Políticas de Branches
  • Políticas de Issues

Sprints Planning

  • Sprint 0
  • Sprint 1
  • Sprint 2
  • Sprint 3
  • Sprint 4
  • Sprint 5
  • Sprint 6
  • Sprint 7
  • Sprint 8
  • Sprint 9
  • Sprint 10
  • Sprint 11
  • Sprint 12

Sprints Review

  • Sprint 0
  • Sprint 1
  • Sprint 2
  • Sprint 3
  • Sprint 4
  • Sprint 5
  • Sprint 6
  • Sprint 7
  • Sprint 8
  • Sprint 9
  • Sprint 10
  • Sprint 11
  • Sprint 12

Documento de Arquitetura

Histórico de versões

DataVersãoDescriçãoAutor
29/08/20190.1Estrutura inicialPedro Daniel
06/09/20190.2Criando introdução e representação da arquiteturaPedro Daniel
07/09/20190.3Restrições de arquitetura e visão de implementaçãoPedro Daia, João V.
07/09/20190.4Implementação do diagrama de classesVictor H.
07/09/20191.0Criação da tabela de tecnologias e diagrama de pacotesPaulo, Pedro Daniel
10/09/20191.1Revisão e adaptação para markdownPedro Daniel, João V.
25/09/20191.2Adicionando API Gateway e microsserviçosPedro Daniel
26/09/20191.3Revisando introdução e representação da arquiteturaPedro Daniel
28/09/20191.4Finalizando a revisão do documentoJoão V., Paulo H., Pedro Daia, Pedro Daniel, Victor H.

1. Introdução

1.1. Finalidade

Este documento tem como objetivo descrever a arquitetura do plugin Git Breakdown. Ele apresenta as decisões arquiteturais para o projeto de forma objetiva e contém informações que serão utilizadas para os desenvolvedores e gestores compreenderem a arquitetura utilizada no desenvolvimento, o fluxo de informações e as tecnologias envolvidas no projeto.

1.2. Escopo

Este documento esclarece as decisões arquiteturais do plugin Git Breakdown, os seguintes tópicos serão descritos no documento: a representação da arquitetura, as metas e restrições da arquitetura e a visão lógica.

1.3. Definições, Acrônimos e Abreviações

  • API - Application Programming Interface: conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por demais aplicativos que desejam utilizar seu serviço
  • API Gateway - É uma interface que recebe as chamadas para seus sistemas internos, sendo uma grande porta de entrada.
  • Microsserviços - Refere-se aos serviços individuais em uma arquitetura de microsserviços. Por sua vez, uma arquitetura de microsserviço é um estilo moderno de arquitetura para web services.
  • Arquitetura Serverless - Refere-se a aplicativos que dependem significativamente de serviços de terceiros (conhecido como Backend como Serviço ou “BaaS”) ou no código personalizado que é executado em contêineres efêmeros (Função como Serviço ou “FaaS”).

1.4. Visão Geral

O documento detalha a arquitetura utilizada para o desenvolvimento do projeto. Para isso, é explicada a arquitetura individual dentro de cada tecnologia escolhida e como estas se encaixam no contexto. Depois da introdução de cada tecnologia, são descritas: as metas e as restrições dessa arquitetura, uma visão dos casos de uso do projeto e uma visão lógica de como os dados serão armazenados.

2. Representação de Arquitetura

2.1. Node.js

O Node.js pode ser definido como um ambiente de execução Javascript server-side, ou seja, com o Node.js é possível criar aplicações Javascript para rodar como uma aplicação standalone em uma máquina, não dependendo de um browser para a execução. Os principais motivos de sua adoção são a sua alta escalabilidade e seu notável suporte à assincronicidade. Além disso, sua arquitetura, flexibilidade e baixo custo, o tornam uma boa escolha para implementação de microsserviços e componentes da arquitetura serverless.

2.2. Express

O Express é um framework para aplicações web do Node.js, minimalista e flexível que fornece um conjunto robusto de recursos. Com uma infinidade de métodos utilitários HTTP e middleware disponíveis, com o Express é possível criar uma API robusta de forma rápida e com facilidade. O Express fornece uma camada fina de recursos fundamentais para aplicações, sem obscurecer os recursos do Node.js.

2.3. Plugin Google Chrome

Plugins para o google chrome são pequenos programas utilizados para customizar a experiência de um usuário ao utilizar o browser. São extensões que permitem a utilização de novas funcionalidades. Os plugins são feitos em tecnologias web, como HTML, CSS e JavaScript. No Git Breakdown, o plugin será responsável por trocar informações com o backend e mostrá-las na página do GitHub acessada pelo usuário. Para isso, deve-se editar o conteúdo HTML presente na página, acrescentando as informações recebidas pelo backend. A arquitetura do plugin é composta por 4 componentes: popup.html, popup.js, background.js e contentscript.js.

  • Popup.html - janela feita em HTML que sobrepõe o conteúdo da página
  • Popup.js - controla as funcionalidades da popup.html
  • Background.js - script responsável pelos eventos que ocorrem na página e precisam ser observados pelo plugin. O módulo background deve ficar desabilitado quando não é utilizado, e carregado apenas quando necessário.
  • Contentscript.js - responsável pela leitura e escrita em uma página web. Ele lê e modifica o DOM de páginas web acessadas pelo browser.

A imagem a seguir mostra a representação dessa arquitetura:

alt text

2.4. GitHub API v3

A API do GitHub é consumida pelo backend da extensão, os dados provenientes da API são processados de acordo com os critérios adotados, gerando as métricas desejadas que retornarão ao plugin do Google Chrome.

2.5. API Gateway e Microsserviços

A API Gateway ficará responsável por fazer a mediação entre o frontend e os microsserviços, redirecionando as requisições para o microsserviço correspondente e retornando a respectiva resposta para a origem da requisição.

Será desenvolvido um microsserviço para cada métrica, são elas:

  • commits;
  • issues;
  • pullrequests;
  • branches.

2.6. Visão Geral da Arquitetura

3. Metas e Restrições da Arquitetura

3.1. Tecnologias utilizadas para o desenvolvimento

TecnologiasDescrição
NodeJSUtilizado no desenvolvimento do backend da aplicação
ExpressAtua no desenvolvimento da API
JavaScriptLinguagem de desenvolvimento frontend
HTML/CSSAlia-se ao desenvolvimento frontend junto com JavaScript
Web ExtensionBiblioteca NodeJS que converte a estrutura node para arquitetura chrome
Google ChromeNavegador padrão da aplicação
DockerUtilizado para configurar o ambiente de desenvolvimento

3.2. Restrições de arquitetura

  • Depende de conexão com internet
  • A extensão é restrita ao navegador Google Chrome
  • Número de requisições feitas para a API do GitHub limitam-se a 50 por hora quando não autenticado, e a 5000 quando autenticado
  • Extensão do chrome realiza requisições apenas do tipo HTTPS

4. Visão Lógica

4.1. Diagrama de Pacotes

5. Visão de implementação

5.1. Plugin Google Chrome

A extensão será desenvolvida utilizando Node.js, essa ferramenta facilita o processo de assincronicidade de execução, evitando conflitos ao utilizar a mesma tecnologia tanto para o frontend quanto para o backend.

Será utilizada a biblioteca Web Extension, que adapta a estrutura do Node.js para ser aplicável à estrutura do Chrome.

5.2. Express Framework

Será utilizado o framework Express para a criação e desenvolvimento da API.

6. Referências Bibliográficas

  1. Hubcare (acessado em 07/09/2019)

https://cjjcastro.gitlab.io/2019-1-hubcare-docs/project/architecture-document

  1. Google Chrome Developer (acessado em 07/09/2019)

https://developer.chrome.com/extensions

  1. Express Framework (acessado em 07/09/2019)

https://expressjs.com/pt-br/

← Documento de VisãoEstrutura Analítica do Projeto →
  • Histórico de versões
  • 1. Introdução
    • 1.1. Finalidade
    • 1.2. Escopo
    • 1.3. Definições, Acrônimos e Abreviações
    • 1.4. Visão Geral
  • 2. Representação de Arquitetura
    • 2.1. Node.js
    • 2.2. Express
    • 2.3. Plugin Google Chrome
    • 2.4. GitHub API v3
    • 2.5. API Gateway e Microsserviços
    • 2.6. Visão Geral da Arquitetura
  • 3. Metas e Restrições da Arquitetura
    • 3.1. Tecnologias utilizadas para o desenvolvimento
    • 3.2. Restrições de arquitetura
  • 4. Visão Lógica
    • 4.1. Diagrama de Pacotes
  • 5. Visão de implementação
    • 5.1. Plugin Google Chrome
    • 5.2. Express Framework
  • 6. Referências Bibliográficas
Git Breakdown
Docs
Getting Started (or other categories)Guides (or other categories)API Reference (or other categories)
Community
User ShowcaseStack OverflowProject ChatTwitter
More
BlogGitHubStar
Facebook Open Source
Copyright © 2019 Your Name or Your Company Name