home / projects / infra-pulse

Infra-Pulse

Active DevOps SRE Portfolio

Production-Grade Infrastructure Health Microservice

Java 21 microservice simulating an infrastructure health monitoring system — exposes real-time node status, active alerts, and SRE-specific metrics. The goal is not just the Java app: it demonstrates the entire DevOps lifecycle from dual CI pipelines to Kubernetes orchestration, Terraform IaC, and a full Prometheus + Grafana observability stack.

Java 21Spring Boot 3.2.5Virtual ThreadsMicrometerPrometheusGrafanaKubernetes (k3d)HelmTerraformJenkinsGitHub ActionsDocker (multi-stage)GHCRJaCoCoSonarQubeLogstash Logback

// key_capabilities

Modern Java 21 Engineering

USP

Virtual Threads for high concurrency, Records as DTOs, clean Entity/DTO separation. H2 in-memory DB with self-seeding DataInitializer — demo-ready on any machine instantly.

Dual CI Pipeline

Jenkins enterprise pipeline: Checkout → Build → Test → Package → Docker Build → Push to GHCR → Deploy to K8s. GitHub Actions for PR checks, JaCoCo (min 70%), and SonarQube quality gate.

Kubernetes Orchestration

k3d local cluster with 2-replica Helm deployment. NGINX Ingress at infra-pulse.local, ClusterIP service, configmap-driven app config. Production-like resource requests and limits.

Full Observability Stack

USP

Prometheus scrapes /actuator/prometheus every 15s. Pre-built Grafana dashboard (active alerts, node health, API RPS, JVM heap, HTTP p50/p95/p99). Structured JSON logging via Logstash Logback.

Infrastructure as Code

Terraform manages the full lifecycle: K8s namespace, Infra-Pulse Helm release, Prometheus stack, and Grafana — consistent IaC approach across all layers.

Custom SRE Metrics

Business-level Micrometer gauges and counters: infrapulse.alerts.active, nodes.total, nodes.healthy, nodes.warning, api.requests.total — not just JVM defaults.

// pipeline_architecture

1.
Source Layer
Java 21 · Spring Boot · Maven
2.
CI Pipelines
Jenkins + GitHub Actions
3.
Kubernetes (k3d)
Helm · 2 replicas · Ingress
4.
Observability
Prometheus · Grafana · Loki
5.
IaC (Terraform)
Namespace · Helm releases

git push → Jenkins builds → Docker image pushed to GHCR → helm upgrade deploys to k3d → Prometheus scrapes every 15s

// custom_sre_metrics

infrapulse.alerts.active Gauge Unresolved active alerts
infrapulse.nodes.total Gauge Total nodes monitored
infrapulse.nodes.healthy Gauge Nodes with HEALTHY status
infrapulse.nodes.warning Gauge Nodes with WARNING status
infrapulse.api.requests.total Counter Total API requests served

// api_endpoints

GET /api/health Overall system health summary
GET /api/nodes All node statuses (CPU, memory, uptime)
GET /api/alerts All active infrastructure alerts
GET /actuator/prometheus Prometheus metrics endpoint
GET /swagger-ui.html Interactive API documentation

// quick_start

Local (Maven)

$ mvn spring-boot:run

Full K8s (Terraform + Helm)

$ terraform -chdir=terraform/ apply
$ helm upgrade --install infra-pulse ./helm -n infra-pulse
API → localhost:8080/api Swagger → localhost:8080/swagger-ui.html Metrics → localhost:8080/actuator/prometheus
← Back to Projects