Skip to content
mail2gauravkumar created page: feature list authored by Gaurav Kumar's avatar Gaurav Kumar
> @apifie/node-microservice version : 1.0.0 [Home](home) -> Feature list
## Detailed feature list (v1.0.0)
### External Integration componnets
node-microservice is a node module (npm) that gives a standard blueprint for creating new micro-services in NodeJS. This blueprint attempts to bring in industry standard [design patterns](https://microservices.io/patterns/index.html) relevant and required for a micro-services based architecture. To implement these patterns, we typically need to integrate with a lot of tools and services from Infrastructure and Platform. This blueprint takes a opinionated view on selection of these tools and offers these integrations out-of-the-box. A list of these tools and services pre-integrated in node-microservice are as below
1. **Redis 4.0+** : It is used as a caching server.
2. **MySQL 5.6+** : It is used as a persistent data store [Database schema per service pattern](https://microservices.io/patterns/data/database-per-service.html).
3. **Rabbit MQ 3.6.12+** : It is used to support [Asynchronous inter-service communication pattern](https://microservices.io/patterns/communication-style/messaging.html).
4. **Winston 2.4+ and winston-logstash 0.4+** : It is used to support upstream [aggregation of application logs](https://microservices.io/patterns/observability/application-logging.html) to Platform level monitoring systems like ELK, Splunk etc.
5. **Zipkin** : Used to support [traceability of requests](https://microservices.io/patterns/observability/distributed-tracing.html) across different services, including async flows
6. **Axios 0.18+** : To manage HTTP requests and responses
7. **Swagger specs** : TO automatically swagger specifications for all HTTP routes published by your service. This is further helpful in upstream integration with [Application gateways](https://microservices.io/patterns/apigateway.html)
### Features and capabilities
In addition to above out-of-the-box integrations, this blueprint also provides in-built solutions for some of the most common and frustrating issues that developers have faced while working on micro-services architecture and its underlying complexities. Some of the key solutions offered out-of-box are listed below.
**Database (ORM)**
* Manage Database schema migrations
* Inject SSL certificates for DB connection (if required)
* Pre-Integrated with Sequelize
* Automated reconnection to MQ server in case of intermittent connection failures
**Message Queue (Async communication)**
* Automated creation / binding to message exchanges and routing keys to service queues
* Scoping Message queues to specific service-name and version (to support multiple versions of services)
* Auto retry of failed messages on MQ (with or without a delay)
* Managing MQ failures by posting all incidents on a dedicated queue (for manual recover options)
* Automated reconnection to MQ server in case of intermittent connection failures
**Caching**
* Scoping of all cache keys to service-name and version
* Support for asynchronous read and write from cache
* Support for expiring keys after a set interval
* Automated reconnection to MQ server in case of intermittent connection failuresoutes
**Traceability and logging**
* Automatic addition of a unique transactionId to all incoming (HTTP) requests
* Chaining of this transactionId to all subsequent internal, inter-service calls (Both Sync and Async, including MQ interfaces)
* Injection of this transactionId in all application log messages
* Injection of a calculated ```responseTime``` header in all API (HTTP and MQ) responses
* Injection of serviceName and serviceVersion information in response headers
* Pushing all application logs to a logstash agent for upstream integration with tools like ELK, Splunk etc.
**HTTP request**
* Enforce standard REST routes
* Inject standard middleware components like ErrorHandlers, BodyParsers, application Routes
* Inject specific middleware components like express and zipkin
* Ensure compliance to specific headers for supporting traceability (See above)
* Automated warning level messages in logs for slow response time
* Automated generation of Swagger specification for all HTTP REST routes exposed by the service
* Automated generation of Postman scripts for all HTTP REST routes exposed by the service
**Testing and Quality Assurance**
* In-built support for Chai, Mocha and Proxyquire
* A fully functional test harness, and helper function to kick start unit and integration test cases
* Generation of standard code coverage report
* Enforce compliance to standard coding practices (using ESLint)
* Generation of standard sonarqube reports
**Health check / Monitoring**
* Out-of-box HTTPS routes to support automated health monitoring ina clustered / cloud setup and upstream integration with an Alert system
* Ability to check health of all downstream components (Database, Cache, MQ etc) without getting in the service box (server / vm)
We maintain a very detailed documentation with a lot of examples and use cases. Please refer to to [node-microservice wiki page](https://gitlab.com/apifie/node-microservice/wikis/home)
\ No newline at end of file