Home - nosinovacao/name-sdk GitHub Wiki

What is NAME?

With hundreds of services, each of them having tens of dependencies, managing and maintaining the tree of dependencies for an application is a cumbersome but necessary task. NAME is a library that helps you manage, expose and take decisions based on the state/version of your dependencies, by adding logic to fetch the state of yours and third-party dependencies. NAME does this by adding an endpoint to your application that exposes the service version and corresponding service dependencies state.

What is NAME for?

  • Assisting in dependencies management.
  • Help avoiding cascading dependencies problems.
  • Expose useful service information.
  • Expose dependencies state.
  • Encourage developer participation in infrastructure definition.

What problem does NAME solve?

In a micro-services environment the main source of problems are your dependencies, even if you have control over each of them you will sooner of later have issues with versions inconsistency.

With hundreds of services, each of them having tens of dependencies, managing and maintaining the tree of dependencies for a service may become a really long but important and necessary task, a mistake may result in a service connecting to a dependency with an unsupported version.

Problems like these usually manifest long after the deployment of services, diagnosing this kind of problems is not an easy task and may have an impact on your end-users.

That's were NAME comes in, by having NAME installed since day one you will have an endpoint for debugging dependencies issues, logs for when dependencies do not meet the requirements and, optionally, you can register all your services in a central location, all this with minimal impact on your existent ecosystem.

How does NAME accomplish its goals?

Providing a developer friendly dependencies definition

Specify your dependencies in a developer friendly JSON format. Keep you existing connection settings, using built-in locators.

Performing deep dependencies checks

Realtime recursive dependencies health check, including minimum/maximum version checks.

Optionally abort the application startup if any dependency reports an unhealthy state.

Exposing the dependencies status

Expose the current status of the dependencies through a manifest, provided via endpoints in machine readable JSON format and human friendly table layout.

Registering your services in a central location

Optionally register all your services against a central registration service, with regular health checks and manifest snapshots using the established registration interface. Read more about it here.

Support for third-party dependencies

Support for state checks of third-party services without the need for specific drivers/software. Currently we support version and state resolution for the following third-party dependencies:

  • SQL Server 7 and above.
  • MongoDB.
  • RabbitMQ.
  • Windows.
  • Linux.