⚠️ PROOF OF CONCEPT⚠️ This project is a proof-of-concept demonstration only and is NOT intended for production use.
- No security hardening has been applied
- No performance optimizations for production workloads
- Configuration may contain insecure defaults
- Limited error handling and monitoring
- Not tested at scale
Use this code for learning, experimentation, and as a starting point only.
This project contains various spikes for infrastructure testing. See each of the Spikes in go-spikes/README.md
for details.
- Run the setup script to create the Kind cluster:
./setup.sh- (Optional) Test your setup:
./test.sh- Start the development environment:
tilt up-
Access Grafana at http://localhost:3000 (admin/admin)
-
When finished, clean up resources:
./teardown.shThe environment includes:
- Kind cluster
- Grafana LGTM stack (Loki, Grafana, Tempo, Mimir, Pyroscope)
- Grafana Alloy for scraping pprof endpoints
- Sample Go application with pprof and otel-profiling-go integration
- Go Spikes: Go application that contains spike code, along with with pprof endpoints for trace correlation
- Grafana Alloy: Scrapes pprof endpoints and forwards to Pyroscope
- Grafana LGTM: Stores and visualizes profiles, logs, metrics, and traces
- Pyroscope: Integrated in LGTM for continuous profiling
Included are various infrastructure options against which spikes are run. The management of the infrastructure and the running of tests is mostly handled through tilt. Descriptions of the options are listed below:
- Spikes describes each spike and all maybe be executed through the Tilt UI.
- Mysql - MySQL database operations
- Kafka - Kafka message broker operations
- Continuous profiling with pprof (CPU, heap, goroutines)
- Trace-to-profile correlation using otel-profiling-go
- Grafana dashboards for profile visualization
- OpenTelemetry integration for distributed tracing