• Stars
    star
    141
  • Rank 258,567 (Top 6 %)
  • Language
    Java
  • License
    MIT License
  • Created over 2 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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 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

More Repositories

1

docker-localstack

Shell
30
star
2

poc-springboot-kafka

Prova de conceito - Springboot, Java, Schema Registry, Apache Avro e Apache Kafka .
Java
14
star
3

poc-micronaut-kotlin-grpc

Prova de conceito - Micronaut, Kotlin e GRPC
Kotlin
13
star
4

poc-arch-hexagonal-springboot

Java
12
star
5

poc-springboot-observability-old

Java
12
star
6

poc-api-first-quarkus

Prova de conceito - API FIRST QUARKUS
Java
5
star
7

poc-multi-module-clean-architecture-springboot

Java
5
star
8

poc-micronaut-kotlin-kafka

Prova de conceito - Micronaut, Kotlin, Schema Registry, Apache Avro e Apache Kafka .
Kotlin
5
star
9

messaging-fanout-pattern

POC Messaging Fanout Pattern
HCL
5
star
10

JVM

Repositório de Estudo da Máquina Virtual Java (JVM)
5
star
11

poc-micronaut-kotlin-jwt

Prova de conceito - Micronaut, Kotlin e JWT
Kotlin
4
star
12

poc-dynamodb-springboot

Java
4
star
13

poc-crud-springboot-generics

Java
3
star
14

poc-crud-ktor-exposed

poc-crud-ktor-exposed
Kotlin
3
star
15

poc-api-first-spring

Prova de conceito - API FIRST SPRING
Java
3
star
16

poc-pagination-with-filters-using-criteria

Java
2
star
17

poc-springboot-aws-sqs

Java
2
star
18

poc-retry-pattern-exponential-backoff-jitter-springboot-3

Estratégias de Retry Pattern com Backoff Exponencial e Jitter: Prevenindo Sobrecarga em Sistemas com Resilience4j e Spring Boot 3
Java
2
star
19

poc-nestjs-kafkajs

POC NestJS com Apache Kafka
TypeScript
2
star
20

poc-crud-spring-boot-kotlin

Kotlin
1
star
21

wesleyosantos91.github.io

CV/Resumo - http://wesleyosantos91.github.io
CSS
1
star
22

cronograma-aws-certified

Cronograma de estudo para prova
1
star
23

poc-demo-java21

Java
1
star
24

aspectj-teste

Java
1
star
25

poc-crud-asp-net-5

C#
1
star
26

springboot3-wiremock-mock-test-integration

Java
1
star
27

poc-logs-trace-id-springboot

Java
1
star
28

sandbox-springboot-observabiliy

Java
1
star
29

algafood-api

Curso Especialista Spring REST - Algaworks
Java
1
star