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.