Home - remiges-tech/rigel GitHub Wiki

Remiges Rigel

Remiges Rigel is a product which helps application administrators to manage configuration parameters and their values for one or more live applications.

Where Rigel is needed

Most applications have configuration parameters like limits, addresses, watermarks, size limits, which are not hard-coded as part of the code. These configuration parameters are sometimes stored in relational databases together with transaction data. This is perhaps a good approach for large monolithic applications which have one database and all parts of the code connect to the same database anyway. Modern heterogeneous applications, using a mix of database types and instances, a mix of programming languages, and distributed in a container cluster in small containers, cannot all assume to access the same database. Preparing a separate global database just to store configuration information is a very heavyweight solution.

The other popular approach is to use langauge-specific configuration files, like property files for Java code and INI files on Windows. This suffers from being language-specific and the files are also hard to distribute across a cluster.

Rigel solves these problems. It uses a proven open source distributed database which stores key-value pairs and maintains strong consistency across the cluster and attempts to mitigate the challenge of network partitioning. Rigel is very fast and is inherently distributed and fault resilient. Rigel builds on the underlying etcd system available on Linux and elsewhere.

If an application is built to fetch configuration information from a Rigel store, then an application administrator can use the Rigel GUI to change values of parameters at run-time, while working with strict type-checking. Audit trails of updates are maintained. Client libraries are available in Java and Go. Applications can pick up changes to values at their next lookup. Client libraries allow application code to set watchers to be triggered when a specific parameter's value changes.

If there are multiple instances of a single application running on different servers in a cluster or in different containers, then a rolling update can be rolled out for the application through the cluster. During the rolling update, some instances will be running an older version of the code with a need to work with an older schema of configuration information, while other instances will be restarted post-update and will look for the new schema for the config data. Rigel allows version management of configuration information, and supports multiple simultaneous versions of the same schema of data, with different version numbers.

Rigel thus becomes a comprehensive, language-independent solution to configuration management challenges in a distributed modern application.

The Rigel system

A Rigel instance can run in a container and be accessed from other applications. Rigel instances may run on multiple containers for fault tolerance, and share a common distributed data store. A Rigel system includes

  • a distributed key-value data store, with configuration information tied to its schema, implemented on the proven etcd system
  • client libraries in Go and Java to access configuration data
  • a browser-based administrative interface which allows editing of configuration parameters while applications are active
  • support for watchers which will be triggered in the application code if specific values change

Open source

Remiges Rigel is the intellectual property of Remiges Technologies Pvt Ltd. It is being made available to you under the terms of the Apache Licence 2.0.

We build products which we use as part of the solutions we build for our clients. We are committed to maintaining them because these are our critical assets which form our technical edge. We will be happy to offer consultancy and professional services around our products, and will be thrilled to see the larger community use our products with or without our direct participation. We welcome your queries, bug reports and pull requests.

Remiges Technologies

Remiges Technologies Pvt Ltd ("Remiges") is a private limited company incorporated in India and controlled under the Companies Act 2013 (MCA), India. Remiges is a technology-driven software projects company whose vision is to build the world's best business applications for enterprise clients, using talent, thought and technology. Remiges views themselves as a technology leader who execute projects with a product engineering mindset, and has a strong commitment to the open source community. Our clients include India's three trading exchanges (who are among the largest trading exchanges in the world in terms of transaction volumes), some of the top ten broking houses in India, both of India's securities depositories, Fortune 500 MNC manufacturing organisations, cloud-first technology startups, and others.