Skip to content

A standalone registry for micro-services architecture

License

Notifications You must be signed in to change notification settings

julien-sarazin/yemma

Repository files navigation

Yemma

Build Status Test Coverage

In a Micro-Service Architecture, you have to handle the proxying, the load, and at least failures. One of the mandatory component is a Registry.

The main goal of a Registry is to keep track of all services (servers with accessible endpoints) for a specific domain.

With Yemma those domains are called Realms meaning each services who wants to register itself to the registry has to submit his address (either a hostname or an ip, a port and generally an access_token to ensure only the registry is able to contact the service).

Setup

  • In a classic nodeJS project, install the dependency.
npm i --save yemma
  • In your main nodeJS file application (typically index.js) use it like so :
const registry = require('yemma');

registry
    .on(started, core => console.log(`Registry listening on port ${core.settings.port}`))
    .start();
  • Setup your environment:
export YEMMA_DB_URI=mongodb://localhost:27017/yemma
export YEMMA_PORT=6473

Behavior

Yemma waits for instances registering themselves to be able to forward requests to the proper realm. To contact an instance you can query the registry :

registry
    .next({ realm: 'user-service' })
    .request({
        method: 'GET',
        uri: '/users'
    })
    .then(response => { .... })

Helpers

If you want to use separate hosts for your Gateway and your Registry, you can use Yemma-Discover a small tool helping your gateway to find instances through HTTP requests, or your micro-services to register themeselves.

Reference

Yemma is a Demi-God with unsettling existential implications in the Dragon Ball Series. All gods in Dragon Ball Z are too busy and not actually caring about anything to keep track of in the registry of the dead which is actually Yemma's job.

About

A standalone registry for micro-services architecture

Resources

License

Stars

Watchers

Forks

Packages

No packages published