Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

wesleyosantos91/poc-multi-module-arch-hexagonal-springboot

Repository files navigation

POC Multi Modulos- Ports & Adapters Architecture ou Arquitetura Hexagonal

Java CI with Maven Sonar Build GitHub

Arquitetura

Arquitetura

Arquitetura

Fundamentos teóricos

Ports & Adapters Architecture ou Arquitetura Hexagonal: A arquitetura hexagonal, ou arquitetura de portas e adaptadores, é um padrão 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 análise de dados
  • Logstash Pipeline de dados
  • Kibana Visualização de dados
  • Filebeat Log shipper
  • Prometheus Monitoramento e alertas
  • Grafana Análise e Monitoramento
  • Alertmanager Envio de alertas
  • Jaeger Tracing Distribuído

Portas

Aplicação 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

  • Variáveis de ambiente

Variável de Ambiente Descrição
MYSQL_HOST Especifique o host do banco de dados MySQL a ser usado (padrão localhost )
MYSQL_PORT Especifique a porta do banco de dados MySQL a ser usada (padrão 3306 )
JAEGER_HOST Especifique o host do Jaeger a ser usado (padrão localhost )
JAEGER_PORT Especifique a porta do Jaeger a ser usada (padrão 6831 )

Start da aplicação via script

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

Executando a aplicação 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 aplicação 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 opção Manually
  • Crie os Project display name/project key: poc-multi-module-arch-hexagonal-springboot
  • Clique na opção 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 página principal, clique no ícone do menu "hambúrguer" e, em seguida, clique em Discover
  • Clique no botão Create index pattern
  • No campo Name, defina filebeat-*
  • No campo Timestamp field selecione @timestamp
  • Clique no botão Create index pattern
  • Clique no ícone do menu "hambúrguer"Discover novamente e depois clique para iniciar as pesquisas

Prometheus

  • Na Página Principal, é possivel consultar metricas disponível 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 opção Status -> Targets para vizualizar o status do serviço configurado

Grafana

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

Alertmanager

  • Na Página Principal, clicando na aba alerts conseguimos ver os acionados e que o alertmanager vai enviar a comunicação 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

  • Qualidade de código
    • Sonarqube
    • Teste Mutantes (Pitest)
    • Teste com docker (Testcontainers)
  • Observabilidade
    • Logs ELK (Elasticsearch, Logstash, Kibana) e Filebeat
    • Prometheus e Grafana
    • Jaeger distributed tracing
  • Kafka
    • Producer
    • Consumer
      • Retries e Dead Letter Queues

Releases

No releases published

Packages

No packages published

Contributors 3

Languages

AltStyle によって変換されたページ (->オリジナル) /