{"id":29439945,"url":"https://github.com/nobuddyorg/thrashbuddy","last_synced_at":"2026-04-10T00:05:30.712Z","repository":{"id":302791159,"uuid":"951196014","full_name":"nobuddyorg/ThrashBuddy","owner":"nobuddyorg","description":"Distributed Performance Testing with Kubernetes, Prometheus, Grafana and K6 🌩️🤯⏱️","archived":false,"fork":false,"pushed_at":"2025-07-04T08:44:21.000Z","size":34514,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-04T09:19:26.237Z","etag":null,"topics":["angular","bruno","docker","eks","grafana","groovy","k6","kubernetes","playwright","prometheus","shell","spring-boot","typescript"],"latest_commit_sha":null,"homepage":"","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nobuddyorg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-19T10:01:08.000Z","updated_at":"2025-07-04T08:44:25.000Z","dependencies_parsed_at":"2025-07-04T09:29:40.462Z","dependency_job_id":null,"html_url":"https://github.com/nobuddyorg/ThrashBuddy","commit_stats":null,"previous_names":["nobuddyorg/thrashbuddy"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nobuddyorg/ThrashBuddy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobuddyorg%2FThrashBuddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobuddyorg%2FThrashBuddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobuddyorg%2FThrashBuddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobuddyorg%2FThrashBuddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nobuddyorg","download_url":"https://codeload.github.com/nobuddyorg/ThrashBuddy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobuddyorg%2FThrashBuddy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265122420,"owners_count":23714547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","bruno","docker","eks","grafana","groovy","k6","kubernetes","playwright","prometheus","shell","spring-boot","typescript"],"created_at":"2025-07-13T10:01:36.661Z","updated_at":"2025-12-30T19:55:51.330Z","avatar_url":"https://github.com/nobuddyorg.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ThrashBuddy\n\n\u003cimg src=\"docs/images/logo.jpg\" alt=\"Logo\" width=\"300\" height=\"300\"\u003e\n\n**_Thrash your Web-App until it hurts._**\n\n---\n\n## Overview\n\nThrashBuddy is a scalable, cloud-native framework for **distributed performance testing** using [k6](https://k6.io), backed by **Prometheus** for metrics storage and **Grafana** for real-time visualization. It’s designed to run in a containerized environment with **Docker** and **Kubernetes**, and leverages **[AWS EKS](https://aws.amazon.com/eks/)** (Elastic Kubernetes Service) to orchestrate distributed test execution across multiple pods. Of course it can easily be used in other kubernetes clusters as well, due to the simple Helm installation and additional installation scripts.\n\nThe infrastructure is provisioned and managed using **[eksctl](https://eksctl.io/)**, embracing an **Infrastructure as Code (IaC)** approach to ensure reproducibility, scalability, and easy deployment.\n\nThis setup provides a robust and automated performance testing platform by:\n\n- 🧪 **Simulating large-scale traffic** with distributed k6 tests on AWS EKS\n- 📊 **Viewing real-time metrics** via Grafana dashboards powered by Prometheus\n- ⚙️ **Automating infrastructure provisioning** using eksctl and Docker\n- ☁️ **Running tests in a cloud-native setup** that mirrors production environments\n\nBy adopting this approach, teams can validate performance early and often in the development lifecycle—reducing the risk of production failures and improving user satisfaction.\n\n\u003cimg src=\"docs/images/animation.gif\" alt=\"start-stop-animation\" width=\"500\" /\u003e\n\u003cimg src=\"docs/images/screenshot.png\" alt=\"Screenshot1\" width=\"500\" /\u003e\n\u003cimg src=\"docs/images/screenshot2.png\" alt=\"Screenshot2\" width=\"500\" /\u003e\n\u003cimg src=\"docs/images/screenshot3.png\" alt=\"Screenshot3\" width=\"500\" /\u003e\n\n### Technology Map\n\nThe image below shows the used tools of this project:\n\n![](docs/images/technology-map.drawio.png)\n\n## Getting Started\n\nTo get started with ThrashBuddy, see the [Getting Started Guide](docs/getting-started.md).\nEntrypoint is anyway `./buddy.sh`, so feel free calling it to get a usage message.\n\n```plaintext\nUsage: ./buddy.sh \u003ccommand-group\u003e \u003ccommand\u003e [options]\n```\n\nMore details at:\n\n- [Getting Started Guide](docs/getting-started.md)\n- [AWS Setup with EKS](docs/aws-eks.md)\n- [GitHub Runner Setup](docs/github-runner.md)\n\n## Performance Testing\n\n**Performance testing** is a type of [non-functional testing](https://en.wikipedia.org/wiki/Non-functional_testing) that evaluates how a system behaves under expected or extreme workloads. It helps identify bottlenecks, ensures reliability, and verifies that your application meets key performance requirements before it reaches end users.\n\n### Key Goals\n\n- ✅ Ensure system **stability** under load\n- ✅ Measure **response times**, **throughput**, and **resource usage**\n- ✅ Detect **scalability issues** before they impact users\n- ✅ Prevent outages and degraded user experiences in production\n\nAs systems grow more complex and distributed, running tests from a single machine no longer suffices. That’s where **distributed performance testing** comes in, offering more accurate, scalable, and production-like simulations.\n\n## Features\n\n- **[k6](https://k6.io)**: High-performance load testing tool with scripting in JavaScript.\n- **[Prometheus](https://prometheus.io/)**: Time-series database.\n- **[Grafana](https://grafana.com/)**: Interactive visualization platform to monitor and analyze test results.\n- **[Docker](https://www.docker.com/)**: Containerized environments for consistent, repeatable deployments.\n- **[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)**: Automates creation of AWS components (e.g., ECR for storing Docker images).\n- **[eksctl](https://eksctl.io/)**: Simplifies Kubernetes cluster management on AWS using IaC powered by CloudFormation.\n\n## Contributing\n\nContributions are welcome! Whether it's a bug fix, new feature, or just improving the docs—open an issue or submit a pull request.\n\nBefore contributing, please check out our [Contributing Guide](CONTRIBUTING.md).\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnobuddyorg%2Fthrashbuddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnobuddyorg%2Fthrashbuddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnobuddyorg%2Fthrashbuddy/lists"}