Skip to content

println/puc-tcc-gsl

Repository files navigation

Prova de conceito: GESTÃO DE SERVIÇOS DE LOGÍSTICA (GSL)

Esta é a prova de conceito para o trabalho de conclusão do curso (TCC) de Arquitetura de Software Distribuído, da PUC Minas. A ideia é, a partir de um problema, apresentar uma solução arquitetural, implementar a prova de conceito e gerar resultados que demonstram a eficácia da solução. O TCC completo pode ser obtido aqui: Download do TCC.

O Problema

A empresa de logística Boa Entrega está passando por mudanças e deseja se manter relevante no mercado, que, atualmente, contém diversos novos concorrentes e desafios. A empresa contém uma stack tecnológica que necessita de atualização e da inclusão de novas ferramentas. Neste trabalho, apresentamos a proposta arquitetural GSL, que é escalável, distribuída, fácil de modificar e evoluir. Ela é baseada em microsserviços, interoperável, via API, com mobile e Web, e conta com ferramentas de BI e Big Data. Os serviços são autônomos e se comunicam via mensagens pelo Kafka. Adicionalmente, são pequenos, tolerantes a falha e simples de manter. A proposta arquitetural GSL busca resolver os problemas do negócio da Boa Entrega, mas deixa uma série de decisões em aberto, para o futuro, com o objetivo comportar a evolução do negócio.

Visão Geral da Solução

Esta é a arquitetura proposta. Ela contém os componentes novos e os legados, em nuvens pública e privada, se comunicando via mensagens.

Arquitetura

Tecnologias

  1. Java / Kotlin
  2. Spring
    1. Spring boot
    2. Spring Cloud Hibernate (HIBERNATE)
    3. Spring Data
    4. Spring Boot Test
    5. Spring Doc
  3. Mensageria
    1. Kafka
    2. Avro
    3. RabbitMQ
  4. API REST
    1. Json
    2. Spring DOC
    3. Swagger-UI
  5. Armazenamento
    1. Spring Data
    2. PostgreSQL
  6. Testes
    1. H2
    2. Junit
    3. Spring Boot Test
    4. Postman (POSTMAN)
    5. Testes de unidade, integração e BDD (Postman)
  7. Ambiente
    1. Docker
    2. Kong
    3. Kafka
    4. PostgreSQL
    5. Kubernetes
  8. Devtools
    1. Docker: Docker Registry e Kubernetes
    2. Docker Compose (DEV): Kong, Kafka, PostgreSQL
    3. Gradle / Maven
    4. Shell Script
    5. GIT
    6. Postman
    7. SonarQube
    8. JMeter
    9. Kafka UI
    10. Konga
  9. Padrões arquiteturais (ref: https://microservices.io/patterns)
    1. Microservice Architecture
    2. Monolithic Architecture
    3. Transactional outbox
    4. Saga
      1. Choreography-based
      2. Orchestration-based
    5. Event sourcing
    6. Anti-corruption layer (ACL)
    7. Database per service
    8. API Composition + Pattern: API Gateway / Backends for Frontends
    9. Padrão de pipes e filtros
  10. Técnicas de desenvolvimento
    1. Event Driven Architecture
    2. EVENT STORMING
    3. Domain-Driven Design
  11. Métricas
    1. SonarQube
    2. JMeter

Execução da prova de conceito

NOTA: Os arquivos do ambiente estão na pasta .dev

Requisitos:

  1. Linux
  2. Docker com kubernetes ativado
  3. Docker Compose
  4. Postman

Subir ambiente

  1. Subir os serviços no docker compose: .dev/environment/run-with-kafka.sh (ele vai pegar o ip automaticamente)

Opcional:

  1. Limpeza de ambiente sujo: .dev/environment/run-clean.sh

Procedimentos

  1. Docker: Gerar imagem de todos os serviços: docker-build-all.sh
  2. Kubernetes: Implantar (deploy) todas as imagens do docker no kubernetes: kubernetes-deploy-all.sh

Opcional:

  1. Docker: Executar todos os serviços via docker: docker-run-all.sh
  2. Docker: Encerrar a execução de todos os serviços no docker: docker-stop-all.sh
  3. Kubernetes: Remover todas imagens implantadas: kubernetes-delete-all.sh

Teste de BDD (POSTMAN)

NOTA: Importar os arquivos do Postman de .dev/postman/

  1. Executar teste de como mostrado no video: Testabilidade
  2. Incluir delay entre os testes de: 2000ms

Resultados

  1. Apresentação cenário 1 - Desempenho:
  2. Apresentação cenário 2 - Manutenibilidade:
  3. Apresentação cenário 3 - Testabilidade:
  4. Apresentação cenário 4 – Tolerância a falhas:
  5. POC monolito implantado: https://boa-entrega.herokuapp.com/

About

Prova de conceito - TCC

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published