7.1 Introdução
- O objetivo deste documento é fornecer uma visão geral do planejamento da arquitetura e do projeto detalhado no desenvolvimento do projeto Easywork, realizado durante os semestre 2019/01 na Agência Experimental de Engenharia de Software (AGES) do curso de Engenharia de Software (ES-360) da Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS). Este documento abrange o propósito, escopo, definição, acrônimos, abreviações, referências e a visão geral da Arquitetura de Software e do Projeto Detalhado utilizados.
7.2 Diagrama de Deployment
- O projeto foi dividido em camadas que executam em dispositivos diferentes, e podem ser visualizadas na figura a seguir, juntamente das principais tecnologias envolvidas. Cada componente, incluindo possíveis sub-componentes, é instanciado em um contêiner Docker conforme será explicado no item 7.4.
- O dispostivo Client faz parte da camada de Front-End. Este dispositivo possui um componente React.js Application que é uma abstração de uma aplicação desenvolvida na linguagem Javascript utilizando a biblioteca React.js para comunicação com o usuário.
- O dispositivo Server faz parte da camada de Back-end. Este dispositivo possui um componente REST API (Representational State Transfer - Application Programming Interface) que é uma abstração de uma aplicação desenvolvida na linguagem Java utilizando o framework Spring para implementar o conceito de microsserviços. Serve para validar regras de negócio e comunicar a camada do usuário com o servidor de banco de dados através de protocolo HTTP.
- O dispositivo Persistence faz parte da camada de persistência de dados. Este dispositivo possui um componente Relational Database que é uma abstração de um banco de dados relacional PostegreSQL, que é responsável por armazenar e gerenciar todos os dados do sistema.
7.3 Visão de sub-componentes da aplicação REST
- Cada rota disponibilizada para uso compõe um sub-componente do componente REST API descrito acima. Estas rotas e sua breve explicação podem ser encontradas na wiki 9. rotas api.
- Outro modo de visualização e entendimento de comportamento das rotas é através da ferramenta Postman, cujas coleções de rotas por microsserviço podem ser obtidas no repositório 9. rotas api.
7.4 Conteinerização e Diagrama de Microsserviços
- Para a implantação do sistema (deploy) utiliza-se Docker, uma tecnologia de software que permite que a utilização contêineres (virtualizações em nível de sistema operacional) que empacotam uma aplicação e suas dependências em um recipiente virtual.
- Mais precisamente, utiliza-se Docker Compose, uma ferramenta que define e implementa um ambiente contendo múltiplos contêiners Docker.
- Abaixo encontra-se o diagrama de microsserviços onde:
- a caixa em branco representa o usuário do sistema, tipicamente um browse web.
- as caixas em azul representam as aplicações dockerizadas e implementadas no projeto.
- as caixas em cinza representam as aplicações não implementadas no projeto, podendo fazer parte de um futuro MVP.
7.5 Arquitetura Não Funcional
TODO
7.6 Análise dos princípios SOLID
TODO
7.7 Segurança
TODO