{"id":20037546,"url":"https://github.com/nktks/dev-span-pu-scaler","last_synced_at":"2025-08-26T03:10:36.534Z","repository":{"id":130019914,"uuid":"442449179","full_name":"nktks/dev-span-pu-scaler","owner":"nktks","description":"AutoScalar of Cloud Spanner Processing Unit for develop environment","archived":false,"fork":false,"pushed_at":"2022-07-06T14:21:04.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-12T18:52:11.710Z","etag":null,"topics":["google-cloud-spanner","spanner"],"latest_commit_sha":null,"homepage":"","language":"Go","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/nktks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2021-12-28T11:58:27.000Z","updated_at":"2021-12-28T12:54:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"0b87b51f-822d-4311-a381-c7006c43301d","html_url":"https://github.com/nktks/dev-span-pu-scaler","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nktks%2Fdev-span-pu-scaler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nktks%2Fdev-span-pu-scaler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nktks%2Fdev-span-pu-scaler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nktks%2Fdev-span-pu-scaler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nktks","download_url":"https://codeload.github.com/nktks/dev-span-pu-scaler/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241467625,"owners_count":19967696,"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":["google-cloud-spanner","spanner"],"created_at":"2024-11-13T10:20:03.372Z","updated_at":"2025-03-02T06:23:46.907Z","avatar_url":"https://github.com/nktks.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dev-span-pu-scaler [![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)][license]\n\n[license]: https://github.com/nktks/dev-span-pu-scaler/blob/master/LICENSE\n\n`dev-span-pu-scaler` is an autoscaler of Cloud Spanner Processing Unit for develop environment usecase.\n\nWhen your project uses Cloud Spanner in a develop environment,\nthe required number of Spanner nodes(processing unit) depends on the number of dbs.\n(Unless your develop environment workload needs high cpu)\nCloud Spanner node cost is not low cost,\nyou need to keep minimum processing unit by the number of using dbs.\n\n`dev-span-pu-scaler` counts current db number of target instances, calculate required processing unit number, and apply it to spanner instances automaticaly.\n\n# CommandLine Usage\n```\ndev-span-pu-scaler -h\nUsage of dev-span-pu-scaler:\n  -buffer int\n    \tbuffer db count to scale pu (default 3)\n  -instances value\n    \tcomma separated instances\n  -project string\n    \tgcp project\n  -server\n    \trun server(for Cloud Run)\n```\nYou need `roles/spanner.admin` on your gcloud client.\n\n# Run as sceduled job with Cloud Schadular + Cloud Run\n\nIf you want to run dev-span-pu-scaler as scheduled job,\nyou can deploy to Cloud Run and run as Cloud Sceduler job.\n\n- add Service Account\n```\nresource \"google_service_account\" \"dev-span-pu-scalar\" {\n  account_id   = \"dev-span-pu-scalar\"\n  display_name = \"dev-span-pu-scalar\"\n  description  = \"sa for dev-span-pu-scalar\"\n}\n\nvariable \"dev-span-pu-scalar-roles\" {\n  default = [\n    \"roles/errorreporting.writer\",\n    \"roles/cloudtrace.agent\",\n    \"roles/iam.serviceAccountUser\",\n    \"roles/run.invoker\",\n    \"roles/spanner.admin\",\n  ]\n}\n\nresource \"google_project_iam_member\" \"dev-span-pu-scalar\" {\n  count  = length(var.dev-span-pu-scalar-roles)\n  role   = element(var.dev-span-pu-scalar-roles, count.index)\n  member = \"serviceAccount:${google_service_account.dev-span-pu-scalar.email}\"\n}\n```\n- Deploy dev-span-pu-scalar to Cloud Run\nyou need [ko](https://github.com/google/ko) to build container image\n```\n# install ko\nmake build-tools\n# see Makefile for detail\nGOOGLE_CLOUD_PROJECT=\u003cproject\u003e INSTANCES=\u003ccommma separated target instances\u003e make deploy\n```\n- Add Cloud Scaduler job\n```\ndata \"google_cloud_run_service\" \"dev-span-pu-scaler\" {\n  name     = \"dev-span-pu-scaler\"\n  location = var.location\n}\n\nresource \"google_cloud_scheduler_job\" \"dev-span-pu-scaler\" {\n  name      = \"dev-span-pu-scaler\"\n  schedule  = \"0 * * * *\"\n  time_zone = var.time_zone\n\n  http_target {\n    http_method = \"GET\"\n    uri         = \"${data.google_cloud_run_service.dev-span-pu-scaler.status[0].url}/\"\n\n    oidc_token {\n      service_account_email = google_service_account.dev-span-pu-scaler.email\n      audience              = data.google_cloud_run_service.dev-span-pu-scaler.status[0].url\n    }\n  }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnktks%2Fdev-span-pu-scaler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnktks%2Fdev-span-pu-scaler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnktks%2Fdev-span-pu-scaler/lists"}