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.