Este repositório é utilizado para compartilhar as entregas para a disciplina de Laboratório de Projeto de Bando de Dados V, ministrada pelo professor Eduardo Sakaue. O objetivo do projeto é implementar um conjunto de melhores práticas de desenvolvimento de software (Dev) e operações de TI (Ops), DevOps para disponibilizar a aplicação web Antenas.
- Projeto Antenas (Devops)
Projeto desenvolvido pelos alunos da FATEC - Professor Jessen Vidal, para a matéria Padrões de Projeto, ministrada pelo Professor Giuliano. O software é uma iniciativa para aproximar os alunos das necessidades do mercado de trabalho. Consiste em uma aplicação web onde empresas da área de tecnologia propõem desafios, o conteúdo é avaliado pelos professores da Fatec e então enviado para que os alunos proponham soluções.
- Bruno Akira Ota
- Carlos Henrique Monteiro Neto
- Leticia Macedo Prudente de Carvalho
- Matheus Rocha da Silva
- Thaís Bitencourt de Meneses
- Vanessa Bessa Diogenes Castellano
- Yan Rodrigues de Azevedo
Front-end: https://github.com/mrocha98/antenas-front
Back-end: https://github.com/mrocha98/antenas-back
Teste Automatizado: https://github.com/Baota2/Antenas_Robot
Guia do Usuário: https://github.com/mrocha98/antenas-devops/wiki
Servidor de Desenvolvimento: http://antenas-front.herokuapp.com/
Servidor de QA: http://ec2-3-138-134-237.us-east-2.compute.amazonaws.com/
Servidor de Produção: http://ec2-54-226-210-129.compute-1.amazonaws.com
- Back-end: https://github.com/mrocha98/antenas-back#%EF%B8%8F-como-executar-a-aplica%C3%A7%C3%A3o
- Front-end: https://github.com/mrocha98/antenas-front#%EF%B8%8F-como-executar-a-aplica%C3%A7%C3%A3o
Utilizado para hospedar e disponibilizar o software online para o cliente. Escolhemos a plataforma pela popularidade, por conta da escalabilidade de servidores e pela fácil integração com os demais serviços que a empresa oferece.
Aplicação web utilizada para o versionamento e centralização do projeto.
Utilizado para criar imagem do mongobd para que a infraestrutura não precise ser configurada. Foi utilizado para que os participantes do projeto não tivessem problemas de compatibilidade de ambiente.
Estrutura de teste de JavaScript, utilizada para fazer testes unitários e garantir que a aplicação está funcionando de acordo com os requisitos do negócio. Foi escolhido por ser open source, não necessitar configuração manual, possuir relatório de código de fácil acesso e pela velocidade, pois roda testes em paralelo.
O Robot Framework é uma estrutura genérica de automação de teste para testes de aceitação e desenvolvimento orientado a testes de aceitação. É uma estrutura de teste orientada por palavras-chave que usa a sintaxe tabular dos dados de teste.
Banco de dados em nuvem para MongoDB. A ferramenta foi escolhida por estar disponível via web e porque a infraestrutura, manutenção das máquinas e segurança não precisam de configuração manual.
Uma ferramenta de software de monitoramento de código aberto para diversos componentes de TI, incluindo redes, servidores, máquinas virtuais e serviços em nuvem. O Zabbix fornece métricas de monitoramento, entre outras, utilização da rede, carga da CPU e consumo de espaço em disco.
- Deploy do Frontend e Backend: disponibilizar aplicação em ambiente remoto na AWS EC2.
- Configuração do arquivo Docker-compose : integrar MongoDB e NodeJs para utilizar em ambiente de desenvolvimento; e para utilizarmos em desenvolvimento.
- Criação do banco em nuvem: disponibilizar a base de dados em ambiente remoto, no MongoDB Atlas.
- Testes unitários: utilizado para verificar a menor parte testável da aplicação, garantindo que o software esteja de acordo com as regras de negócio, minimizando o retrabalho e tornando as correções mais ágeis.
- Integração contínua: fará com que cada alteração passe pelos testes antes de efetivar o commit, trazendo mais segurança e agilidade ao processo de desenvolvimento já que os testes são executados automaticamente.
- Divisão de Ambientes: Criação de ambientes isolados para desenvolvimento, testes e produção. Necessário para não impactar o cliente final durante o período de desenvolvimento (de correções e/ou novas funcionalidades) e período de testes. A separação garante à equipe de desenvolvimento liberdade para implementar e explorar sem riscos de impacto no cliente final, à equipe de testes a integridade do ambiente durante a execução dos testes, e ao cliente final uma base de produção limpa e segura, e sem interrupção durante o processo de entrega das funcionalidades.
- Deploy Automático: Processo que controla as alterações enviadas para as branchs alteradas. A aplicação possui 3 ambientes atualmente, desenvolvimento, testes e produção, o deploy automático se encarrega de executar uma bateria de testes pré definida sobre cada commit enviado para a branch antes de permitir que esse seja efetivamente enviado para o respectivo servidor.
- Integração da ferramenta de monitoramento Zabbix para gerar logs: A geração de logs é importante para que possamos avaliar o sistema e fazer o monitoramento para que no caso de o sistema lançar algum erro, seja possível identificar de forma rápida e precisa e assim tratar o problema com uma correção mais acertiva.
- Load Balancer: Distribui o tráfego de entrada do aplicativo por várias instâncias EC2 em diversas Zonas de disponibilidade. Isso aumenta a tolerância a falhas dos aplicativos. O load balancer serve como ponto único de contato para os clientes, isso aumenta a disponibilidade da aplicação. É possível adicionar e remover instâncias do load balancer conforme mudarem as necessidades, sem perturbar o fluxo geral de solicitações para sua aplicação.
Link para Download do video de apresentação da sprint: https://drive.google.com/file/d/1JPKvS2Xj7bek64HRX7QRtdmJ5I_6jQeS/view?usp=sharing
- Testes E2E (end-to-end) automatizado: Testes utilizando Selenium WebDriver e Robot Framework. Esse tipo de teste visa o fluxo completo da aplicação de forma automatizada reduzindo o tempo de execução.
- Documentação de funcionalidades para usuários.
- Vídeo de apresentação para a feira de soluções.