Awesome Open Source
Awesome Open Source

POC Multi Modulos- Ports & Adapters Architecture ou Arquitetura Hexagonal

Java CI with Maven Sonar Build GitHub

Arquitetura

Arquitetura

Arquitetura

Sonar

Quality gate

Lines of Code Coverage Duplicated Lines (%)

Maintainability Rating Security Rating Reliability Rating

Vulnerabilities Bugs Code Smells Technical Debt

Fundamentos tericos

Ports & Adapters Architecture ou Arquitetura Hexagonal: A arquitetura hexagonal, ou arquitetura de portas e adaptadores, um padro arquitetural usado no design de software. O objetivo criar componentes de aplicativos fracamente acoplados que possam ser facilmente conectados ao ambiente de software por meio de portas e adaptadores.

Pr -requisitos

Stack

  • Sonar Analise de qualidade e cobertura de testes
  • Elasticsearch Busca e anlise de dados
  • Logstash Pipeline de dados
  • Kibana Visualizao de dados
  • Filebeat Log shipper
  • Prometheus Monitoramento e alertas
  • Grafana Anlise e Monitoramento
  • Alertmanager Envio de alertas
  • Jaeger Tracing Distribudo

Portas

Aplicao Porta
Ms-Launcher 8080
Sonarqube 9000
Postgres Sonarqube 5432
MySQL 3600
Elasticsearch 9200
Logstash 5044
Kibana 5601
Prometheus 9090
Grafana 3000
Alertmanager 9093
Jaeger 16686

Links

Setup

  • Variveis de ambiente

Varivel de Ambiente Descrio
MYSQL_HOST Especifique o host do banco de dados MySQL a ser usado (padro localhost )
MYSQL_PORT Especifique a porta do banco de dados MySQL a ser usada (padro 3306 )
JAEGER_HOST Especifique o host do Jaeger a ser usado (padro localhost )
JAEGER_PORT Especifique a porta do Jaeger a ser usada (padro 6831 )

Start da aplicao via script

  • Entre no diretorio dos scripts cd scripts
  • Execute o seguinte comando:
    /bin/bash start-app.sh
    

Executando a aplicao com maven

  • Execute o seguinte comando:
    ./mvnw clean spring-boot:run --projects ms-launcher
    

    Nota: Se voc quiser mudar para "non-json-logs" (talvez durante o desenvolvimento seja til), execute

    ./mvnw clean spring-boot:run --projects ms-launcher -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=non-json-logs"
    

Executar docker-compose para subir aplicao com container docker

  • Execute o seguinte comando para subir os containers:
    docker-compose up
    
  • Execute o seguinte comando para verificar os status do containers docker:
    docker-compose ps
    

Sonarqube

  • Realize o Login com user: admin password: admin, gerar para uma nova senha
  • Clique na opo Manually
  • Crie os Project display name/project key: poc-multi-module-arch-hexagonal-springboot
  • Clique na opo Locally
  • Preencha com wos e clique em Generate
  • Subtitua o project key e token do arquivo scripts/sonar.sh pelos criado agora
  • Entre no diretorio dos scripts cd scripts
  • Execute o seguinte comando:
    /bin/bash sonar.sh
    

Pitests

  • Execute o comando na raiz do projeto
     mvn clean test-compile org.pitest:pitest-maven:mutationCoverage 
    
  • Dentro da pasta target vai ser gerada um pasta pit-report onde se contra o HTML com o relatorio dos testes mutantes.

Kibana

  • Na pgina principal, clique no cone do menu "hambrguer" e, em seguida, clique em Discover
  • Clique no boto Create index pattern
  • No campo Name, defina filebeat-*
  • No campo Timestamp field selecione @timestamp
  • Clique no boto Create index pattern
  • Clique no cone do menu "hambrguer"Discover novamente e depois clique para iniciar as pesquisas

Prometheus

  • Na Pgina Principal, possivel consultar metricas disponvel no recurso http://localhost:8080/actuator/prometheus
  • Exemplo: pesquise por http_server_requests_seconds_sum vai retorna as metricas/grafico (clicando na aba graph)
  • No Menu superior selecione a opo Status -> Targets para vizualizar o status do servio configurado

Grafana

  • Realize o Login com user: admin password: admin, gerar para uma nova
  • Na Pgina Princial, clique em dashboard -> browse depois clique em JVM (Micrometer) ele vai abrir um dashboard
  • Criar dashboard de monitoramento custom:
    • Na Pgina Princial, clique em dashboard -> browse depois clique em metrics-ms-launcher-api ele vai abrir um dashboard

Alertmanager

  • Na Pgina Principal, clicando na aba alerts conseguimos ver os acionados e que o alertmanager vai enviar a comunicao via feramenta configurada

Deletar todos containers Docker

  • Entre no diretorio dos scripts cd scripts
  • Execute o seguinte comando:
    /bin/bash remove-docker-images.sh
    

TODO List

  • [x] Qualidade de cdigo
    • [x] Sonarqube
    • [x] Teste Mutantes (Pitest)
  • [x] Observabilidade
    • [x] Logs ELK (Elasticsearch, Logstash, Kibana) e Filebeat
    • [x] Prometheus e Grafana
    • [x] Jaeger distributed tracing
  • [ ] Kafka
    • [ ] Producer
    • [ ] Consumer
      • [ ] Retries e Dead Letter Queues
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Java (388,359
Docker (97,272
Spring Boot (15,546
Elasticsearch (11,368
Prometheus (5,978
Grafana (4,409
Kibana (3,056
Logstash (2,851
Elk Stack (1,787
Observability (683
Alertmanager (490
Hexagonal Architecture (281
Sonarcloud (87
Multimodule (71