Documento de reutilização
Propósito
Este documento tem como propósito evidenciar os pontos de reutilização que já estão disponíveis e poderão estar no desenvolvimento do gXchange
Implantação
No contexto de implantação, e seguindo o conceito de infraestrutura como código, em ambos os repositórios, tanto de back-end quanto de front-end contém uma estrutura padrão que podem ser utilizadas para conteinerizar aplicações React e Django + Postgresql.
Front-end
Para a criação do segundo front-end a estrutura base do conteiner React dockerizado (Docker + docker-compose) pode ser encontrado nos seguintes arquivos:
De modo semelhante, é possível utilizar as funcionalidades do Git para clonar a estrutura base do Front-end para ser utilizado no Front-end de Moderador, e também serve até para outros Front-end baseados em React. É possível criar um boilerplate seguindo a mesma lógica.
Back-end
Para a criação de um conteiner Django com banco de dados Postgresql os arquivos de configuração do Docker podem ser utilizados:
Componentes da folha de estilo
No contexto de padronização e reutilização de componentes nos front-end é interessante empacotar todos os componentes reusáveis do sistema, dessa forma o código de ambos ficaria mais coesos e implementariam o padrão definido. Isso também aumenta a manutenibilidade do sistema, visto que a mudança no pacote já seria refletida nos sistemas que o utilizam.
Do modo que foi proposto, o estado interno dos componentes e toda a sua lógica interna e parte da lógica de estilização são considerados FrozenSpots.
Services e Utils (Front-End)
Quase todas as funcionalidades presentes no pacote de utils podem ser reutilizadas, visto que fornecem funcionalidades genéricas e também utilidades no contexto do sistema, que podem ser necessárias em outros módulos.
API Adapter
A porção de código referente a classe API Adapter pode ser utilizada em qualquer projeto que utilize Typescript e autenticação baseada em JWT (com algumas alterações é possível utilizar outros meios de autenticação). Com algumas alterações em relação ao ambiente, URL da API e TIMEOUT.
O código pode ser encontrado aqui.
Token e Local Storage
O pacote auth contém funções que são úteis para controlar os Tokens de autenticação no Front-end. Pode ser exportado como um pacote e compartilhado com outros Front-ends.
O pacote pode ser encontrado aqui.
Base64 Codificação e Decodificação
Foi tomada a decisão de utilizar e armazenar as imagens no formato binário, então a interface de comunicação de binários do Cliente e Servidor tornou-se o Base64. O pacote images em utils, possui métodos que conseguem Codificar e Decodificar imagens para o padrão base64.
O pacote pode ser encontrado aqui.
Compressão de imagens
O módulo de compressão e descompressão de imagens também é passível de reutilização visto que qualquer tipo de imagem já irá ser convertida, por padrão, para o modelo do sistema (que pode ser alterado facilmente se necessário).
Pode ser considerado um HotSpot pois os paramêtros de compressão podem ser trocados de maneira simples.
O pacote pode ser encontrado aqui.
Django Apps
Tomando a arquitetura monolítica do gXchange - API, o Framework Django permite que sejam criados outros apps dentro de uma mesma API, o conceito de app do Django segue a ideia de um mini projeto com sua própria estrutura MVT.
Neste mesmo contexto, caso seja necessário criar um app com outro próposito mantendo assim a coesão, é possível utilizar as classes do modelo de domínio, sem a necessidade de duplicar ou reimplementar as models que serão necessárias.
Deste modo é possível amenizar os efeitos negativos de uma arquitetura monolítica.
Django JWT Logged user
No pacote de utils da gXchange API há duas funcionalidades que podem ser reutilizáveis que são a de obter usuário logado e obter o email do usuário logado. Estas funcionalidades decodificam o token JWT do usuário para obter suas informações, essas podem ser utilizadas pelas views e serializers para realizarem tarefas relacionadas ao usuário logado.
WebSocket
A modelagem arquitetural proposta no DAS para criar um serviço de notificações pode ser utilizada em outras relações cliente-servidor que queiram utilizar WebSocket. Até pode ser agregado em outras arquiteturas. A modelagem em si é um frozenSpot, mas como cabe ao utilizador definir como implementar, reside um HotSpot.
Referências
MIRANDA JUNIOR, Pasteur. Frameworks. Disponível em: https://www.tesestec.com.br/pasteurjr/Frameworks.pdf. Acesso em: 30 abr, 2021.
VERGILIO, Silvia. Padrões Arquiteturais. Disponível em: https://www.inf.ufpr.br/andrey/ci163/PadroesFrameworksAl.pdf. Acesso em: 30 abr, 2021.
MARKIEWICZ, Marcus E; LUCENA, Carlos. Understanding Object-Oriented Framework Engineering. PUC-Rio. Disponível em: http://www.dbd.puc-rio.br/depto_informatica/00_38_markiewicz.pdf. Acesso em: 30 abr, 2021.
Versionamento
Versão | Data | Modificação | Motivo | Autor |
---|---|---|---|---|
1.0 | 30/04/2021 | Criação do documento | Listar as partes orientadas ao reúso | Todos os integrantes |
1.0.1 | 01/05/2021 | Correções de ortografia | Permitir a melhor compreensão do documento | Todos os integrantes |