A Gestão de Configuração de Software é parte fundamental no curso de GCES, e dominar os conhecimentos de configuração de ambiente, containerização, virtualização, integração e deploy contínuo tem se tornado cada vez mais necessário para ingressar no mercado de trabalho.
Para exercitar estes conhecimentos, você deverá aplicar os conceitos estudados ao longo da disciplina no produto de software contido neste repositório.
O sistema se trata de uma aplicação Web em Typescript, que é composta de:
- Front-end escrito em React (
chat-app
); - Back-end dividido em três microsserviços:
users-service
: express + ORMchat-service
: não implementadoapi-gateway
: graphql
- 2 Bancos de Dados MySQL 5.7.20 para users-service e chat-service (mesmo este não tendo sido implementado ainda)
phpmyadmin
, como interface para gerenciamento dos bancos de dados
Para executar a aplicação em sua máquina, basta seguir o passo-a-passo descrito no arquivos README das pastas.
É uma aplicação extremamente simples, não possui muitas features, então o foco é justamente na containerização (e orquestração) dessa aplicação. Por ora, só é possivel fazer login (alem de interagir com o banco etc)
Aqui um esquema simples de como a aplicação se comunica:
tela de carregamento tela de login tela pós-login tela de gerenciamento do banco tela de queries em graphqlAlguns trabalhos de exemplo do semestre passado:
- Ridersk/gces-trab-individual-lucas-maciel
- lucasfcm9/Trabalho-Individual-2020-2
- lucasqmc/Trabalho-Individual-2020-2
- lucianosz7/Trabalho-Individual-2020-2
- lorryaze/Trabalho-Individual-2020-2
- WelisonR/Trabalho-Individual-2020-2
- lucasgomesgs0/Trabalho-Individual-2020-2
- sammyzord/Trabalho-Individual-2020-2
A aplicação deverá ter seu ambiente completamente containerizado. Desta forma, cada subsistema (Front-end, Back-end e Banco de Dados) deverá ser isolado em um container individual.
Deverá ser utilizado um orquestrador para gerenciar comunicação entre os containers, o uso de credenciais, networks, volumes, entre outras configurações necessárias para a correta execução da aplicação.
Para realizar esta parte do trabalho, recomenda-se a utilização das ferramentas:
- Docker versão 17.04.0+
- Docker Compose com sintaxe na versão 3.2+
A nota de cada aluno será a soma dos itens abaixo que serão avaliados tanto de forma quantitativa (se foi realizado a implementação + documentação), quanto qualitativamente (como foi implementado, entendimento dos conceitos na prática, complexidade da solução). Faça os commits atômicos, bem documentados, completos a fim de facilitar o entendimento e avaliação do seu trabalho. Lembrando que esse trabalho é individual.
Os Itens de avaliação são (cada item tem peso 2.5 na nota final de 0 - 10):
1. Containerização
- Containers do Back-end
- Container do Front-end
- Containers dos Banco de Dados
- Container para o phpmyadmin
- Automação entre os containers (Docker-compose)