Skip to content
Minimalist 'hydra integration' module, intended for Node.js web frameworks integration.
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
demos
docs
libs
.gitignore
.prettierrc
LICENSE.md
README.md
index.js
package-lock.json
package.json
tests.js

README.md

Hydra Integration Module

Integrating third-party Node.js web frameworks with Hydra, the simplest way.

Hydra is a NodeJS package, which facilitates building distributed applications such as Microservices. (https://www.hydramicroservice.com/)

The magic thing with Hydra is that with a minimum setup, your micro-service get 'superpowers':

  • Distributed Computing
  • Application Clusters + Load Balancer
  • High Availability
  • Centralized Proxy Router
  • Realtime Messaging
  • Service Discovery, Monitoring and Management
  • ... and much more (https://www.hydramicroservice.com/)

By using this module, you will be able to easily integrate your prefered web framework with hydra. Just keep reading...

Integrated frameworks

At the moment, the following frameworks are supported:

  1. Express: Fast, unopinionated, minimalist web framework for Node.js... (http://expressjs.com/)
  2. Hapi: A rich framework for building applications and services, hapi enables developers to focus on writing reusable application logic instead of spending time building infrastructure... (https://hapijs.com/)
  3. Koa: Koa is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs... (http://koajs.com/)
  4. Sails.js: Sails makes it easy to build custom, enterprise-grade Node.js apps... (http://sailsjs.com/)
  5. Restify: Restify is a node.js module built specifically to enable you to build correct REST web services... (http://restify.com/)
  6. Restana: Super fast and minimalist web framework for building REST micro-services... (https://github.com/jkyberneees/ana)
  7. Native Hydra Service: Hydra services are ideal for making distributed API calls through HTTP or real-time events management... (https://www.hydramicroservice.com/)

Getting Started

Next we will explain you how to create and express based micro-service on top of hydra:

IMPORTANT: Hydra depends on Redis database server for storage, cache and messaging. In case you don't have it yet: https://www.hydramicroservice.com/docs/quick-start/step1.html

  1. Install dependencies:
npm i hydra hydra-integration express --save

Express is a dependency here because in the next example we use express, it could be koa or hapi, or any of the supported frameworks.

  1. Create and edit app.js file:
const HydraServiceFactory = require('hydra-integration').HydraServiceFactory;
const express = require('express');
const router = express.Router();

const factory = new HydraServiceFactory({
    hydra: {
        'serviceName': 'express-service-test',
        'serviceDescription': 'Basic express service on top of Hydra',
        'serviceIP': '127.0.0.1',
        'servicePort': 3000,
        'serviceType': 'express',
        'serviceVersion': '1.0.0',
        'redis': {
            'host': '127.0.0.1',
            'port': 6379,
            'db': 15
        }
    }
});

factory.init().then(factory => factory.getService(service => {
    router.get('/welcome', (req, res) => res.send('Hello World!'));
    service.use('/v1', router);
}));

Alternative way of getting the service instance by passing config params to the builder (if supported):

factory.init().then(factory => factory.getService({
  // optional config params here to be passed to the building strategy
  bootstrap: service => {
    router.get('/welcome', (req, res) => res.send('Hello World!'));
    service.use('/v1', router);
  }
}));

To use hydra-integration as a plugin see: The HydraIntegrationPlugin class

  1. Run your service:
  • Single process:
node app.js
  • Optionally you can run multiple processes with PM2:
pm2 start app.js -i 4
  1. Test your service using a Web browser at: http://localhost:3000/v1/welcome
  2. Test the service using the hydra-cli (https://www.hydramicroservice.com/docs/tools/hydra-cli/getting-started.html):
  • List service routes
hydra-cli routes express-service-test
{
  "serviceName": [
    "[GET]/_health",
    "[GET]/v1/welcome"
  ]
}
  • Invoke the [GET]/v1/welcome service endpoint:
hydra-cli rest express-service-test:[GET]/v1/welcome
{
  "headers": {
    "x-powered-by": "Express",
    "content-type": "text/html; charset=utf-8",
    "content-length": "12",
    "etag": "W/\"c-Lve95gjOVATpfV8EL5X4nxwjKHE\"",
    "date": "Wed, 05 Apr 2017 21:22:51 GMT",
    "connection": "close"
  },
  "body": "Hello World!",
  "statusCode": 200
}

Demos

Demos available into demos folder on the git repository: https://github.com/jkyberneees/hydra-integration

Next Topics

Complementary Topics

You can’t perform that action at this time.