Project

General

Profile

Wiki » History » Version 17

Shuvam Misra, 18/03/2024 04:13 PM

1 1 Shuvam Misra
# The Remiges product family
2
3 14 Shuvam Misra
We currently have six products on the anvil. This list will not grow till end of 2024. We give a short overview about each here.
4 1 Shuvam Misra
5 2 Shuvam Misra
Some common points about all the products:
6
* All of them are server-side frameworks or systems which help the application developer develop some key functions very fast, securely, reliably and at scale.
7
* All the products are scalable -- they can work with any application, irrespective of how fast the application processes transactions or how many transactions per second it handles
8 17 Shuvam Misra
* They will integrate with application code written in any programming language. Wherever client libraries are required, they will be provided initially in Go (the mother language of all the products other than IDshield), then on Java, then on PHP, dotNet, NodeJS, *etc*. Remiges Alya is a web development framework, so there are no client libraries -- the entire framework is linked with the application code. This will be Go initially, then in Java.
9 8 Shuvam Misra
* All of them are available as open source products from their respective GitHub repositories, and may be downloaded, modified, and re-used without restrictions. They are fully maintained and supported by dedicated teams within Remiges.
10 17 Shuvam Misra
* All of them are for application designers and developers. Some of them have UI which may be used by non-technical users after they have been integrated into business applications, but they are not usable standalone from a UI till they are integrated into an application.
11 1 Shuvam Misra
12 2 Shuvam Misra
## Remiges ServerSage: an observability framework
13 1 Shuvam Misra
14 2 Shuvam Misra
This product will allow an application to log performance metrics and health metrics about all aspects of its operation into an observability framework. This framework will include screens to see the data in historical time-series format, correlate different events on a common time axis, and generate automatic alerts wherever readings fall outside acceptable watermarks.
15 1 Shuvam Misra
16 17 Shuvam Misra
The framework is being built by extending **[Prometheus](https://prometheus.io)**, which is a gold standard in observability solutions today. Prometheus provides infrastructure monitoring agents out of the box, so that you can track CPU load, RAM utilisation, etc, at the server level. ServerSage will extend this to track application health. The duration of each web service call, duration of each database command, durations of key parameters at the business operation level, will all be exported *via* custom-built agents to a central Prometheus data store. The data visualisation front-end for ServerSage is being built by extending **[Grafana](https://grafana.com)**, the industry-standard open observability platform.
17 1 Shuvam Misra
18 15 Shuvam Misra
Source code for agents will be made available in Go and Java to allow embedding inside the business logic of your application, so that developers can decide what to log in what manner, and then just plug in the right agents inside their code to push out that data to Prometheus.
19 3 Shuvam Misra
20 15 Shuvam Misra
A two-tiered Prometheus setup will be available to allow data to be gathered first in Tier 2 Prometheus servers, and then operate Tier 1 servers to pull in data from them and hold the aggregate data in a cluster-wide data store for consolidated reports and alerts.
21 3 Shuvam Misra
22 12 Shuvam Misra
*The name ServerSage points to an entity which has wisdom and is aware about the servers and other components in its care.*
23 11 Shuvam Misra
24 2 Shuvam Misra
## Remiges LogHarbour: a logging framework
25 1 Shuvam Misra
26 4 Shuvam Misra
This product will allow application developers to log three types of data in a unified cluster-wide data store from all types of applications:
27
* application change log audit trail, giving the "before" and "after" values of all data items which are changing or getting deleted
28
* activity and event logging, for information and forensics
29
* debug logging, for developers to trace problems in the flow of code
30
31 15 Shuvam Misra
The data thus logged will be sent into Kafka streams and will finally reach Kafka consumers which will store the data in an ElasticSearch database. The product is built by utilising and integrating **[Apache Kafka](https://kafka.apache.org)**, the gold standard in open source distributed event steaming platforms, and **ElasticSearch**, the top full-text searchable document database. The proven performance and reliability of these systems will be available in LogHarbour.
32 4 Shuvam Misra
33
LogHarbour will also have connectors which can parse log files generated from legacy systems and ingest them into the central data store. ElasticSearch will operate in cluster mode with cross-replication, to allow large data stores of several billion entries and still serve queries at speed and scale.
34
35
Every application development team re-invents the wheel when it decides on a logging module, and most of the time, this logging is done into the main transaction database, thus impacting overall scalability and throughput of the system. Integrating LogHarbour will allow applications to scale at will without worrying about whether the logging system can keep up or where the logs need to be stored.
36
37 11 Shuvam Misra
*The name LogHarbour points to the vision of logs of all types and for all applications protected in a safe store.*
38
39 17 Shuvam Misra
## Remiges IDshield: an IAM (identity and access management) product
40 2 Shuvam Misra
41 17 Shuvam Misra
Every business application needs to build, or plug in, some module to handle the user table and implement authentication and authorization. Remiges IDshield provides application developers with a ready-made service to implement these features. It provides a login authentication interface which can be used by browser based applications and mobile apps, and will support stateless JWT tokens for session management. JWT or **[JSON Web tokens](https://jwt.io)** allow session tracking without any reference to a central session table in a database; this table invariably becomes a hotspot when the application usage scales. IDshield will also provide the framework for defining authorization rules, so that the application can check at each point whether the current user has the right to perform each operation.
42 7 Shuvam Misra
43 17 Shuvam Misra
Remiges IDshield is built on top of the very well-known open source identity and authentication management system, **[Keycloak](https://www.keycloak.org)**. Clients will also have the freedom to opt for **[RedHat SSO](https://access.redhat.com/products/red-hat-single-sign-on)**, which is a derivative product of Keycloak with commercial support from RedHat. IDshield extends Keycloak to add features which do not exist in the default distribution, like 2FA using SMS, geo-IP based access restrictions, *etc* It also provides a client library which allows application developers to make web service calls to IDshield to manage users, change access rights, *etc* The user table is stored in the relational database private to IDshield. Horizontal scalability is easily achieved by running multiple instances of the IDshield service connecting to a single data store. Accesses to this data store are infrequent, because IDshield uses a caching layer to optimise performance.
44 7 Shuvam Misra
45 17 Shuvam Misra
With Remiges IDshield, application developers can focus more resources on actually building the business logic and less on developing the surrounding framework. In addition, IDshield offers a full-featured identity and authentication management framework which is standards-compliant (see [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519) and has been reviewed by public scrutiny of the source code and security testing. IDshield also adds industry-leading features for authorisation, where each user or group is given capabilities with scope and value constraints, and IDshield can inform the business application about which constraints apply when a user attempts an operation. This is not available in Keycloak or other leading IAM systems.
46 7 Shuvam Misra
47 11 Shuvam Misra
*The name IDshield builds upon the idea of "ID" referring to identity, and "shield" referring to security.*
48
49 2 Shuvam Misra
## Remiges Rigel: a global configuration management system
50 8 Shuvam Misra
51
All well-designed applications need configuration parameters. At the simplest end, a configuration management module is a thin wrapper over a JSON or YAML file; the file holds the configuration values in the form of key-value pairs. Modern configuration management requirements demand much more. The configuration must not get accidentally deleted due to a file system corruption. The configuration must be available at each point of a distributed cluster of servers. The data must be version controlled for forensic purposes, and there must be access rules controlling who can make changes to the parameters.
52
53 9 Shuvam Misra
Remiges Rigel is a cluster-aware configuration management system which replicates configuration information and offers an access-controlled GUI to allow administrators to make changes to individual entries. Application code may query individual entries in the configuration database by calling functions in a client library. Changes need to be made only once, and replicate automatically to all nodes in the cluster, where they are cached. The system maintains a version number to detect updates to the data. Rigel logs into files or optionally into Remiges LogHarbour to keep an audit trail of changes. Access control for the configuration management interface may optionally be integrated with Remiges IDshield.
54 8 Shuvam Misra
55
Rigel is a simple system which has all the necessary features needed for a robust distributed configuration management system. Designers of large business applications must not rely on simple local config files for the most critical of system parameters, and Rigel offers a simple and easy alternative.
56 2 Shuvam Misra
57 11 Shuvam Misra
*Rigel is a very bright super-giant star in the constellation Orion, and this imagery aligns well with the idea of global configuration being a bright component which other components refer to and are guided by.*
58
59 2 Shuvam Misra
## Remiges Alya: a framework for writing web service calls in Go
60
61 10 Shuvam Misra
The Go programming language has already established itself as the worldwide and worthy successor to C for most systems programming projects, and a lot of the learning from forty years of C have been ploughed back into its design. For web service calls, Go has the [Gin](https://gin-gonic.com) framework which offers a lot of flexibility, but is not easy to use for large volume web service calls development and testing. A lot of common actions need to be implemented in template form to enhance programmer productivity and reduce errors.
62
63
The Remiges Alya framework provides these reusable pieces.
64
* a validation framework and template to validate each parameter in the call request, so that basic syntactic checking is always done consistently
65
* an error response management package, which allows every web service call author to return an array of errors as per a prescribed structure. Each error gets an error code and an i18n-indexed error message in the language of choice as per the caller's preferences
66
* a framework for managing SQL statements, so that all the boilerplate code and error checking best practices are incorporated automatically through code generated by [sqlc](https://sqlc.dev). This dramatically reduces errors and increases programmer productivity, and as a side-effect, results in the developer team maintaining a global list of SQL statements, which can be maintained independent of the business logic.
67
* integration with Remiges LogHarbour for complete logging of audit trails, activity logs, and debug logs, with the feature to turn on or off debug logging for just one module of one application without restarting any services
68
* integration with Remiges IDshield for authentication, authorization and user management
69
* integration with Remiges Rigel for global configuration
70
* various other utility functions
71
72
When all these packages are aggregated, the designer can worry less about peripheral challenges and decisions and focus on the core business logic. The developer gets a trusted framework which takes care of all the housekeeping tasks unrelated to the business logic and can focus on adding functional features.
73 1 Shuvam Misra
74
*The name Alya means sky, loftiness and heaven in Arabic. It is also one star in a triple-star system in the constellation of Serpens.*
75
76
## Remiges Crux: a business rules engine (BRE) and workflow engine
77 15 Shuvam Misra
78
Complex business applications have built-in rules to take decisions, *e.g.* decisions about how to ship an item, how to validate a new applicant, how to calculate interest payable. These rules are never constant and universal -- different rules apply in different situations. What is worse is that rules need to change over time. If code for the application needs to change to reflect each change in rules or each special case, then application maintenance becomes error-prone and expensive. It is better to have a repository of all such rules, treat the rules as data not code, and let the rest of the application query the rules engine with the full context of each case to get, in response, to rules to apply.
79
80
Such a business rules engine (BRE) must have an interface which users may use to define rules, and an application programming interface (API) to allow the business logic code to query the rules engine by submitting the full context of each "case" or "entity" being processed. Remiges Crux is such a rules engine. It has its own data store, is entirely managed by web service calls, runs as a separate service, can serve a cluster of applications, is independent of programming language, and is amenable to horizontal scale-out.
81
82
Remiges Crux will also act as a workflow engine, where the business logic will pass on the full context of an entity which is being processed through a workflow path, and the workflow engine will respond by saying what is the next processing step to apply to that entity.
83
84
With Remiges Crux, application designers can tackle frequent changes in business rules, or define exceptions to business rules, without having to go through an expensive code change process, testing and release cycle. Application owners can respond to business context changes by changing rules without waiting for the development team to go through their elaborate song-and-dance routine to implement the change. Complex business applications simply become better, more intelligent, with Crux.
85 11 Shuvam Misra
86
*The name Crux refers to a constellation in the southern sky which is centred around four bright stars in a cross-shaped asterism often referred to as The Southern Cross.*