npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

service-basic-pipservices

v1.1.0

Published

This basic microservice executes simple requests.

Downloads

1

Readme

Basic Microservice in Node.js

This basic microservice executes simple requests.

Supported functionality:

  • Deployment platforms: Standalone Process, Docker
  • External APIs: Commandable HTTP, REST/HTTP, gRPC, Commandable gRPC
  • Health checks: Heartbeat, Status
  • Swagger: http://localhost:8080/swagger/index.html

Dependencies on infrastructure services:

  • (optional) ElasticSearch for logging
  • (optional) Prometheus Push Gateway for performance metrics
  • (optional) DataDog for logging and performance metrics

There are no dependencies on other microservices.

Quick links:

Contract

export class RequestV1 {
    public value: string;
}

export class ResponseV1 {
    public value: string;
}

interface IBasicController {
    doSomething(context: IContext, request: RequestV1): Promise<ResponseV1>;
}

Get

Get the microservice source from GitLab:

git clone [email protected]:entinco/eic-templates-services-node.git

Get docker image for the microservice:

docker pull entinco/service-basic-pipservices:latest

Run

The microservice can be configured using the environment variables:

  • AZURE_ENABLED - turn on Azure container
  • DATADOG_ENABLED - turn on DataDog loggers and metrics
  • DATADOG_PROTOCOL - (optional) connection protocol: http or https (default: https)
  • DATADOG_URI - (optional) resource URI or connection string with all parameters in it
  • DATADOG_HOST - (optional) host name or IP address (default: api.datadoghq.com)
  • DATADOG_PORT - (optional) port number (default: 443)
  • DATADOG_ACCESS_KEY - DataDog client api key
  • ELASTICSEARCH_LOGGING_ENABLED - turn on Elasticsearch logs and metrics
  • ELASTICSEARCH_PROTOCOL - connection protocol: http or https
  • ELASTICSEARCH_SERVICE_URI - resource URI or connection string with all parameters in it
  • ELASTICSEARCH_SERVICE_HOST - host name or IP address
  • ELASTICSEARCH_SERVICE_PORT - port number
  • DEFAULT_RESPONSE - default response from service if empty request
  • LAMBDA_ENABLED - turn on AWS lambda container
  • GCP_ENABLED - turn on Google Cloud Function container
  • GRPC_ENABLED - turn on GRPC endpoint
  • GRPC_PORT - GRPC port number (default: 8090)
  • HTTP_ENABLED - turn on HTTP endpoint
  • HTTP_PORT - HTTP port number (default: 8080)
  • PUSHGATEWAY_METRICS_ENABLED - turn on pushgetway for prometheus
  • PUSHGATEWAY_PROTOCOL - connection protocol: http or https
  • PUSHGATEWAY_METRICS_SERVICE_URI - resource URI or connection string with all parameters in it
  • PUSHGATEWAY_METRICS_SERVICE_HOST - host name or IP address
  • PUSHGATEWAY_METRICS_SERVICE_PORT - port number
  • SWAGGER_ROUTE - the path where the swagger service will be available
  • SWAGGER_NAME - the header name of swagger service
  • SWAGGER_DESCRIPTION - the text description of swagger service

Start the microservice as process:

node ./bin/main

Run the microservice in docker: Then use the following command:

./run.ps1

Launch the microservice with all infrastructure services using docker-compose:

docker-compose -f ./docker/docker-compose.yml

Use

Install the client NPM package as

npm install client-basic-node --save

Inside your code get the reference to the client library

 import { BasicCommandableHttpClientV1 } from 'client-basic-pipservices';

Instantiate the client

// Create the client instance
let client = new BasicCommandableHttpClientV1();

Define client configuration parameters.

// Client configuration
let httpConfig = ConfigParams.fromTuples(
    "connection.protocol", "http",
    "connection.host", "localhost",
    "connection.port", 3000
);
client.configure(httpConfig);

Connect to the microservice

// Connect to the microservice
await client.open(Context.fromTraceId("123"));

Create a new entity

let req: RequestV1 = {
    value: 'Bla bla bla'
};

res = await client.doSomething(Context.fromTraceId("123"), req);
console.log("Response: " + res.value);

Develop

For development you shall install the following prerequisites:

  • Node.js 14+
  • Visual Studio Code or another IDE of your choice
  • Docker

Install dependencies:

npm install

Compile the microservice:

tsc

Compile proto files:

npm run protogen

Before running tests launch infrastructure services and required microservices:

docker-compose -f ./docker-compose.dev.yml

Run automated tests:

npm test

Run automated benchmarks:

npm run benchmark

Run linter

npm run lint

Generate API documentation:

./docgen.ps1

Before committing changes run dockerized build and test as:

./protogen.ps1
./build.ps1
./test.ps1
./package.ps1
./run.ps1
./clean.ps1

Contacts

This microservice was created by and is currently maintained by Person Name.