{"id":19536955,"url":"https://github.com/alexgalhardo/learning-load-stress-tests","last_synced_at":"2026-04-09T06:44:19.338Z","repository":{"id":230741640,"uuid":"779831937","full_name":"AlexGalhardo/learning-load-stress-tests","owner":"AlexGalhardo","description":"A side project I created to learn and improve my skills in k6, concurrency, parallelism, A.C.I.D \u0026 Transactions CRUD operations, load balancer and performance benchmarkings using different technologies and databases :bomb:","archived":false,"fork":false,"pushed_at":"2024-07-19T13:46:31.000Z","size":57042,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-24T06:51:56.225Z","etag":null,"topics":["api","aws","bun","docker","graphql","json-rpc2","k6","load-balancer","load-testing","mongodb","nginx","nodejs","postgresql","redis","redis-database","serverless","stress-testing","typescript"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/AlexGalhardo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2024-03-30T22:43:06.000Z","updated_at":"2024-07-19T13:46:36.000Z","dependencies_parsed_at":"2024-03-31T16:29:55.412Z","dependency_job_id":"45126a3d-02c8-4433-aaff-3cb0414a240e","html_url":"https://github.com/AlexGalhardo/learning-load-stress-tests","commit_stats":null,"previous_names":["alexgalhardo/learning-load-stress-tests"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexGalhardo%2Flearning-load-stress-tests","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexGalhardo%2Flearning-load-stress-tests/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexGalhardo%2Flearning-load-stress-tests/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexGalhardo%2Flearning-load-stress-tests/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexGalhardo","download_url":"https://codeload.github.com/AlexGalhardo/learning-load-stress-tests/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240790478,"owners_count":19858046,"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":["api","aws","bun","docker","graphql","json-rpc2","k6","load-balancer","load-testing","mongodb","nginx","nodejs","postgresql","redis","redis-database","serverless","stress-testing","typescript"],"created_at":"2024-11-11T02:25:03.886Z","updated_at":"2025-12-30T19:05:11.410Z","avatar_url":"https://github.com/AlexGalhardo.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003e:bomb: Learning Load \u0026 Stress Tests :bomb:\u003c/a\u003e\n\u003c/div\u003e\n\n## Introduction\n\n- A side project I created to learn and improve my skills in:\n  - [k6](https://k6.io/)\n  - Load Tests \u0026 Stress Tests\n  - Load Balancer\n  - Concurrency \u0026 Parallelism\n  - A.C.I.D and Transactions CRUD operations\n  - Performance Benchmarks using diferent technologies and databases\n\n- Technologies:\n  - [NodeJS](https://nodejs.org/en)\n  - [Bun](https://bun.sh/)\n  - [ElysiaJS](https://elysiajs.com/)\n  - [Fastify](https://fastify.dev/)\n  - [PM2 Process Manager](https://pm2.keymetrics.io/)\n  - [VineJS Data Validator](https://vinejs.dev/docs/introduction)\n  - [TypeScript](https://www.typescriptlang.org/)\n  - [MongoDB](https://www.mongodb.com/)\n  - [Mongoose ODM](https://mongoosejs.com/)\n  - [PostgreSQL](https://www.postgresql.org/)\n  - [Prisma ORM](https://www.prisma.io/)\n  - [Redis](https://redis.io/)\n  - [Docker](https://www.docker.com/)\n  - [JSON-RPC](https://www.jsonrpc.org/)\n  - [NGINX](https://www.nginx.com/)\n  - [GraphQL](https://graphql.org/)\n  - [Serverless Framework](https://www.serverless.com/)\n  - [AWS](https://aws.amazon.com/)\n     - [Lambda](https://aws.amazon.com/lambda/)\n     - [DynamoDB](https://aws.amazon.com/dynamodb/)\n     - [API Gateway](https://aws.amazon.com/api-gateway/)\n\n## ToDo\n- [x] API using MongoDB\n- [x] API using PostgreSQL\n- [x] API using Serverless Framework and DynamoDB\n- [x] API using Load Balancer\n- [x] API using RPC\n- [x] API using GraphQL\n- [x] API using REST\n- [x] API using Redis\n\n## Videos Demo\n\n### Testing REST Postgres API\n\nhttps://github.com/AlexGalhardo/learning-load-stress-tests/assets/19540357/b1e1bf42-a661-4983-abee-994f9f2689d6\n\n### Testing GraphQL Redis API\n\nhttps://github.com/AlexGalhardo/learning-load-stress-tests/assets/19540357/f0382aad-c85d-4137-a958-449ead1cf491\n\n## Prerequisites\n- Install k6: https://k6.io/docs/get-started/installation/\n- Install Bun: https://bun.sh/docs/installation\n- Install NodeJS \u003e= v20: https://nodejs.org/en/download/package-manager\n- Install Docker \u0026 Docker Compose: https://docs.docker.com/engine/install/\n- Have an AWS Account: https://aws.amazon.com/free/\n\n## Up API Servers\n- Enter the API folder you wanna test and follow README.md instructions\n\n## Tips\n- K6 Reports:\n   - To see k6 tests reports, up a server in the root of this project\n   - And go for example: http://localhost:3000/k6-tests/reports/rest-postgres-api-load-test-signup.html\n- POST /signup:\n   - Tests are made using fake data, to not repeat the same signup\n- POST /checkout:\n   - Check to increase ou add more stock units as you want in database while you are testing.\n\n## :warning: Doing :warning:\n- [x] Finish REST Postgres API Tests\n- [x] Finish GraphQL Redis API Tests\n- [x] Finish JSON-RPC MongoDB API Tests\n- [ ] Finish Serverless API Tests\n- [ ] Finish NGINX Load Balancer API Tests\n\n## Load Tests\n- ### POST /signup\n   - Enter folder [./k6-tests](./k6-tests/)\n   - Testing GraphQL Redis API:\n      ```bash\n      k6 run graphql-redis-api-load-test-signup.js\n      ```\n      - See report: [./k6-tests/reports/graphql-redis-api-load-test-signup.html](./k6-tests/reports/graphqL-redis-api-load-test-signup.html)\n   - Testing REST Postgres API:\n      ```bash\n      k6 run rest-postgres-api-load-test-signup.js\n      ```\n      - See report: [./k6-tests/reports/rest-postgres-api-load-test-signup.html](./k6-tests/reports/rest-postgres-api-load-test-signup.html)\n   - Testing JSON-RPC MongoDB API:\n      ```bash\n      k6 run json-rpc-mongodb-api-load-test-signup.js\n      ```\n      - See report: [./k6-tests/reports/json-rpc-mongodb-api-load-test-signup.html](./k6-tests/reports/json-rpc-mongodb-api-load-test-signup.html)\n\n- ### POST /checkout (Last Stock Units - simulating a black friday):\n   - Enter folder [./k6-tests](./k6-tests/)\n   - Testing GraphQL Redis API:\n      ```bash\n      k6 run graphql-redis-api-load-test-checkout.js\n      ```\n      - See report: [./k6-tests/reports/graphql-redis-api-load-test-checkout.html](./k6-tests/reports/graphql-redis-api-load-test-checkout.html)\n   - Testing REST Postgres API:\n      ```bash\n      k6 run rest-postgres-api-load-test-checkout.js\n      ```\n      - See report: [./k6-tests/reports/rest-postgres-api-load-test-checkout.html](./k6-tests/reports/rest-postgres-api-load-test-checkout.html)\n   - Testing JSON-RPC MongoDB API:\n      ```bash\n      k6 run json-rpc-mongodb-api-load-test-checkout.js\n      ```\n      - See report: [./k6-tests/reports/json-rpc-mongodb-api-load-test-checkout.html](./k6-tests/reports/json-rpc-mongodb-api-load-test-checkout.html)\n\n\n## Stress Tests\n- ### POST /signup\n   - Enter folder [./k6-tests](./k6-tests/)\n   - Testing GraphQL Redis API:\n      ```bash\n      k6 run graphql-redis-api-stress-test-signup.js\n      ```\n      - See report: [./k6-tests/reports/graphql-redis-api-stress-test-signup.html](./k6-tests/reports/graphql-redis-api-stress-test-signup.html)\n   - Testing REST Postgres API:\n      ```bash\n      k6 run rest-postgres-api-stress-test-signup.js\n      ```\n      - See report: [./k6-tests/reports/rest-postgres-api-stress-test-signup.html](./k6-tests/reports/rest-postgres-api-stress-test-signup.html)\n   - Testing JSON-RPC MongoDB API:\n      ```bash\n      k6 run json-rpc-mongodb-api-stress-test-signup.js\n      ```\n      - See report: [./k6-tests/reports/json-rpc-mongodb-api-stress-test-signup.html](./k6-tests/reports/json-rpc-mongodb-api-stress-test-signup.html)\n\n- ### POST /checkout (Last Stock Units - simulating a black friday):\n   - Enter folder [./k6-tests](./k6-tests/)\n   - Testing GraphQL Redis API:\n      ```bash\n      k6 run graphql-redis-api-stress-test-checkout.js\n      ```\n      - See report: [./k6-tests/reports/graphql-redis-api-stress-test-checkout.html](./k6-tests/reports/graphql-redis-api-stress-test-checkout.html)\n   - Testing REST Postgres API:\n      ```bash\n      k6 run rest-postgres-api-stress-test-checkout.js\n      ```\n      - See report: [./k6-tests/reports/rest-postgres-api-stress-test-checkout.html](./k6-tests/reports/rest-postgres-api-stress-test-checkout.html)\n   - Testing JSON-RPC MongoDB API:\n      ```bash\n      k6 run json-rpc-mongodb-api-stress-test-checkout.js\n      ```\n      - See report: [./k6-tests/reports/json-rpc-mongodb-api-stress-test-checkout.html](./k6-tests/reports/json-rpc-mongodb-api-stress-test-checkout.html)\n\n## K6 Reports Examples\n\n### [./k6-tests/reports/rest-postgres-api-stress-test-signup.html](./k6-tests/reports/rest-postgres-api-stress-test-signup.html)\n\u003cimg width=\"1438\" alt=\"Screenshot 2024-05-19 at 10 51 47\" src=\"https://github.com/AlexGalhardo/api.nerdapi.com/assets/19540357/c5c5c8be-c203-475d-a08a-8607416061e3\"\u003e\n\n### [./k6-tests/reports/rest-postgres-api-stress-test-checkout.html](./k6-tests/reports/rest-postgres-api-stress-test-checkout.html)\n\u003cimg width=\"1436\" alt=\"Screenshot 2024-05-19 at 11 08 08\" src=\"https://github.com/AlexGalhardo/api.nerdapi.com/assets/19540357/3454cfd9-7713-4393-ad18-8af07577e1bb\"\u003e\n\u003cimg width=\"1436\" alt=\"Screenshot 2024-05-19 at 11 07 57\" src=\"https://github.com/AlexGalhardo/api.nerdapi.com/assets/19540357/162cd9bd-1ec9-4bae-a170-72934c9c8fd2\"\u003e\n\n### [./k6-tests/reports/graphql-redis-api-stress-test-checkout.html](./k6-tests/reports/graphql-redis-api-stress-test-checkout.html)\n![Screenshot 2024-05-19 at 15 00 09](https://github.com/AlexGalhardo/learning-load-stress-tests/assets/19540357/ed5cc142-5552-42ec-9d17-d34139fd70b6)\n![Screenshot 2024-05-19 at 14 57 50](https://github.com/AlexGalhardo/learning-load-stress-tests/assets/19540357/1a2dfb5c-2bc1-453a-8564-d9aab392c6e2)\n\n### [./k6-tests/reports/json-rpc-mongodb-api-stress-test-checkout.html](./k6-tests/reports/json-rpc-mongodb-api-stress-test-checkout.html)\n![Screenshot 2024-05-25 at 11 39 00](https://github.com/AlexGalhardo/learning-load-stress-tests/assets/19540357/d21e0afb-5ec8-41e5-b1f0-3fb3f128cfcf)\n![Screenshot 2024-05-25 at 11 38 50](https://github.com/AlexGalhardo/learning-load-stress-tests/assets/19540357/3767120e-7ab2-4b25-80d6-52fe15757408)\n![Screenshot 2024-05-25 at 11 38 36](https://github.com/AlexGalhardo/learning-load-stress-tests/assets/19540357/f351d7c7-03e8-47c7-bf5c-a2c479cafa7f)\n\n## License\n\n[MIT](http://opensource.org/licenses/MIT)\n\nCopyright (c) March 2024-present, [Alex Galhardo](https://github.com/AlexGalhardo)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexgalhardo%2Flearning-load-stress-tests","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexgalhardo%2Flearning-load-stress-tests","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexgalhardo%2Flearning-load-stress-tests/lists"}