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
- Sonar Cloud
- Kibana
- Prometheus
- Grafana
- Alertmanager
- Jaeger
- OpenAPI
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
, definafilebeat-*
- 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 emJVM (Micrometer)
ele vai abrir um dashboard - Criar dashboard de monitoramento custom:
- Na PƔgina Princial, clique em
dashboard -> browse
depois clique emmetrics-ms-launcher-api
ele vai abrir um dashboard
- Na PƔgina Princial, clique em
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