{"id":15062655,"url":"https://github.com/sloppycoder/ngms","last_synced_at":"2026-01-02T09:15:42.909Z","repository":{"id":90083739,"uuid":"208582249","full_name":"sloppycoder/ngms","owner":"sloppycoder","description":null,"archived":false,"fork":false,"pushed_at":"2019-10-16T05:34:48.000Z","size":105,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-22T04:33:16.884Z","etag":null,"topics":["cloud-native","golang","grafana","grpc","kubernetes","locust","microservice","minikube","mongodb","rest-api"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sloppycoder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-09-15T11:14:18.000Z","updated_at":"2019-10-16T05:34:50.000Z","dependencies_parsed_at":"2023-03-09T08:30:52.715Z","dependency_job_id":null,"html_url":"https://github.com/sloppycoder/ngms","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/sloppycoder%2Fngms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloppycoder%2Fngms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloppycoder%2Fngms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloppycoder%2Fngms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sloppycoder","download_url":"https://codeload.github.com/sloppycoder/ngms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243741225,"owners_count":20340426,"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":["cloud-native","golang","grafana","grpc","kubernetes","locust","microservice","minikube","mongodb","rest-api"],"created_at":"2024-09-24T23:44:14.570Z","updated_at":"2026-01-02T09:15:42.866Z","avatar_url":"https://github.com/sloppycoder.png","language":"Go","readme":"# next generation micro service project (ngms)\n\n![badge](https://github.com/sloppycoder/ngms/workflows/publish%20docker%20images/badge.svg)\n\nPOC for next generation cloud native micro service using [gRPC](https://grpc.io). [grpc-gateway](https://grpc-ecosystem.github.io/grpc-gateway/) is used to translate between REST to gRPC when needed.\n\nThe benefits of the architecture:\n\n* standardized interface spec\n* more express and powerful than REST\n* better performance with binary based protocol\n* cloud native, integrates seamlessly into K8S\n\n## Components\n* [account service](./accounts) that supports both gRPC and REST, written in Go. Scaffolding by [grapi](https://github.com/izumin5210/grapi)\n* gRPC [client](./clients/README.md) for account service\n* [test data](./testdata/README.md) generator using Python library [mimesis](https://github.com/lk-geimfari/mimesis) \n* [benchmark](./benchmark/README.md) program using [Locust](http://locust.io) and [Boomer](https://github.com/myzhan/boomer) slave written in Go\n\n\n## Tools used in this repo\n1. [Go 1.13](https://golang.org/dl/)\n2. [MongoDB server 4.2](https://www.mongodb.com/download-center/community)\ntest data. Any [Python](https://www.python.org/downloads/) 3.7 installation will do\n3. [minikube](https://kubernetes.io/docs/setup/learning-environment/minikube/), your local Kubernetes cluster for testing\n4. [skaffold](https://skaffold.dev/), think of ```npm serve``` for K8S development\n5. [GitHuab actions](https://github.com/features/actions) workflow is used to build and publish docker images on [Github Package Registry](https://github.com/features/package-registry).\n\n## Create dev database and populate with seed data\nInstall [MongoDB server 4.2](https://www.mongodb.com/download-center/community) then \n\n```\n# populate test data \n# this will import 1 json document into dev db, accounts collection\ncd benchmark\nmongoimport -u dev -p dev --db=dev --collection=accounts \u003c benchmark/seed.json\n```\n\n## Quick Start\nTo quickly try the setup including Prometheus and Grafana but without installing Go and compile and etc,\n\n1. [minikube](https://kubernetes.io/docs/setup/learning-environment/minikube/)\n2. make sure your /etc/hosts contain an entry called vmhost.localm which is used by db.yaml\n3. Run ```cd k8s; ./all```\n4. Open browser to grafana and Locust by getting url with\n```\nminikube service grafana --url\n\nminikube service locust --url\n\n``` \n\n## Run this with Docker without Kubernetes\nThe docker public images below should work for this purpose.\n\n* [ngms/account-svc](https://github.com/sloppycoder/ngms/packages/account-svc/26706) \n* [ngms/benchmark](https://github.com/sloppycoder/ngms/packages/benchmark/26707) \n\nTo be written. contributors welcome\n\n```\n# these steps are not yet tesed\n# populate test data.. \nmongoimport -u dev -p dev --db=dev --collection=accounts \u003c benchmark/seed.json\n\ndocker run -n account-svc docker.pkg.github.com/sloppycoder/ngms/account-svc:latest\ndocker run -n locust docker.pkg.github.com/sloppycoder/ngms/benchmark:latest\n\n\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsloppycoder%2Fngms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsloppycoder%2Fngms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsloppycoder%2Fngms/lists"}