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.
- 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
 
| 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 | 
- Sonar Cloud
 - Kibana
 - Prometheus
 - Grafana
 - Alertmanager
 - Jaeger
 - OpenAPI
 
| 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 ) | 
- Entre no diretorio dos scripts 
cd scripts - Execute o seguinte comando:
/bin/bash start-app.sh 
- Execute o seguinte comando:
./mvnw clean spring-boot:run --projects ms-launcherNota: 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" 
- 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 
- 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 
wose clique em Generate - Subtitua o project key e token do arquivo 
scripts/sonar.shpelos criado agora - Entre no diretorio dos scripts 
cd scripts - Execute o seguinte comando:
/bin/bash sonar.sh 
- 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.
 
- 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, definafilebeat-* - No campo 
Timestamp fieldselecione@timestamp - Clique no botão 
Create index pattern - Clique no ícone do menu "hambúrguer"Discover novamente e depois clique para iniciar as pesquisas
 
- Na Página Principal, é possivel consultar metricas disponível no recurso 
http://localhost:8080/actuator/prometheus - Exemplo: pesquise por 
http_server_requests_seconds_sumvai 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
 
- Realize o Login com user: admin password: admin, gerar para uma nova
 - Na Página Princial, clique em 
dashboard -> browsedepois clique emJVM (Micrometer)ele vai abrir um dashboard - Criar dashboard de monitoramento custom:
- Na Página Princial, clique em 
dashboard -> browsedepois clique emmetrics-ms-launcher-apiele vai abrir um dashboard 
 - Na Página Princial, clique em 
 
- Na Página Principal, clicando na aba 
alertsconseguimos ver os acionados e que o alertmanager vai enviar a comunicação via feramenta configurada 
- Entre no diretorio dos scripts 
cd scripts - Execute o seguinte comando:
/bin/bash remove-docker-images.sh 
-  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
 
 
 

