{"id":13510310,"url":"https://github.com/hemerajs/aither","last_synced_at":"2026-03-17T00:41:16.111Z","repository":{"id":76944088,"uuid":"78475480","full_name":"hemerajs/aither","owner":"hemerajs","description":"An example microservice system in Node.js using Hemera and best of today.","archived":false,"fork":false,"pushed_at":"2018-04-12T19:05:18.000Z","size":6299,"stargazers_count":119,"open_issues_count":0,"forks_count":26,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-12T02:25:45.423Z","etag":null,"topics":["hapi","hemera","jaegertracing","microservices-architecture","nats","traefik"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hemerajs.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}},"created_at":"2017-01-09T22:34:45.000Z","updated_at":"2024-05-14T14:06:01.000Z","dependencies_parsed_at":"2024-01-23T21:15:56.437Z","dependency_job_id":"52f79e0b-4d38-4325-a748-5e0ce8e6148c","html_url":"https://github.com/hemerajs/aither","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/hemerajs%2Faither","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemerajs%2Faither/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemerajs%2Faither/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemerajs%2Faither/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hemerajs","download_url":"https://codeload.github.com/hemerajs/aither/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248506453,"owners_count":21115429,"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":["hapi","hemera","jaegertracing","microservices-architecture","nats","traefik"],"created_at":"2024-08-01T02:01:33.109Z","updated_at":"2026-03-17T00:41:11.090Z","avatar_url":"https://github.com/hemerajs.png","language":"JavaScript","readme":"![aither](https://github.com/hemerajs/aither/blob/master/logo.png?raw=true)\n# aither\n\nAither shows an approach how to bootstrap a microservice system in Node.js with [Hemera 5](https://hemerajs.github.io/hemera/) and docker.\nYou can scale your worker in seconds and because we use NATS as “nervous system\" for our distributed system we do not have to worry about service-discovery or load-balancing of hemera-services. We use traefik to load-balancing the api-gateway.\n\nThis configuration will setup:\n\n* [Hapi](https://github.com/hapijs/hapi) http server which act as api-gateway to the Hemera services.\n* [Microservice](https://github.com/hemerajs/aither/blob/master/worker/index.js) which is responsible to add two numbers.\n* [NATS](https://github.com/nats-io/gnatsd) server the underlying messaging system for Hemera.\n* [Jaeger](https://github.com/jaegertracing/jaeger) CNCF Jaeger, a Distributed Tracing System.\n* [Natsboard](https://github.com/devfacet/natsboard) dashboard to monitoring your NATS system in realtime.\n* [Traefik](https://traefik.io/) modern HTTP reverse proxy and load balancer made to deploy microservices with ease.\n* [Redis](https://redis.io) in memory cache for Hemera.\n\n## Versions\n * Hapi 17\n * Hemera 5\n\n## Architecture\n\n![aither](https://github.com/hemerajs/aither/blob/master/aither-architecture.png?raw=true)\n\n\n## Getting started\n* Running the system `docker-compose up`\n* Start a request against load balancer [OPEN](http://localhost:8182/api/add?a=1\u0026b=10)\n* Scale the system `docker-compose scale math-service=5 api=2`\n\n## Dashboards\n\n- Traefik [http://localhost:8181/](http://localhost:8181/)\n- NATS Dashboard [http://localhost:3000/](http://localhost:3000/)\n- NATS Endpoint [http://localhost:8222/](http://localhost:8222/)\n- Jaeger [http://localhost:16686/](http://localhost:16686/)\n\n## Run load test\n\n```bash\nnpm install -g artillery\nartillery run loadtest.yml\n```\nPrint the html artillery report with `artillery report \u003creport.json\u003e`\n\n## Previews\n\n### Traefik\n\n![traefik](/traefik.png)\n\n### NATS dashboard\n\n![nats](/nats.png)\n\n### NATS monitoring endpoint\n\n![nats-monitoring](/nats-monitoring.png)\n\n### Jaeger dashboard\n\n![jaeger](/jaeger.png)\n\n## Thank you\nthanks most of all to the community who create these awesome opensource software and thereby making it possible.\n","funding_links":[],"categories":["JavaScript","others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhemerajs%2Faither","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhemerajs%2Faither","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhemerajs%2Faither/lists"}