Skip to content

Case for LNP Node and other LNP/BP microservices #42

@dr-orlovsky

Description

@dr-orlovsky

Just would like to check that I am using this lib efficiently with cases we have in different LNP/BP nodes (LNP Node, BP Node, RGB Node).

Each node is represented by

  • a set of microservices, each of which can be loaded either in form of separate process (daemon) or as a thread withing a single process, depending on the configuration and environment (mobile app or server + docker).
  • a main service (it can also be just a thread withing mobile app) which launches and manages the rest.

The main service should be configured with either:

  • config file + command-line args matching config file + env variables (in case it is a process), or
  • with rust structure passed to it's entry point (in case it is started as a thread).

The rest of services are never intended to be launched by human from command-line (they are started as threads or processes by the main service, or automatically by something like Kubernetes), but they also should be configured with

  • some service-specific command line options/env vars, which should not map to the configuration file (their value is unique per service instance) +
  • read parts of the shared config from the main service - or get it's configuration structure for multi-threaded case.

What I plan is:

  • to have a single configure_me-based configuration for the main service, generating command-line args for it + support for env variables and man pages
  • to re-use that config file by the rest of services, but using direct TOML reads, not configure_me-based routines
  • to add other per-service command-line configuration options (which do not map to the config file and do not need man page) using Clap

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions