Reuni System

Reuni(Reliable Unifier) is a system created as centralized dynamic configuration management. Reuni intended to be used in microservice environment to handle configuration management for hundreds of running service. The system currently under open source development at Go-Squads github organization maintained by developer and interns at Go-Jek.

This system concise of 3 main component:

  • The REST API Server, the core of this system, coded in Golang. Because of centralized nature, all request from the other 2 component will be handled by this server, making it a little bit monolithic by design. We may upgrade the server design in the future time.

  • Client, we create 2 type of user client which is WebBased-Client using Ruby on Rails and CLI-Client coded in Golang. The client manage all user input and user interaction, and do a REST API call.

  • Agent, coded in Golang, currently designed as a process supervisor. The agent purpose is to sync the configurations saved in the REST API, and set it to the deploys environment variable.

Before starting development, you should understand the terminologies we are using when developing the Reuni System.

  • Service(s), in our system service mean an application with one codebase and one application, because it's intended to be used in microservices environment, normally one services server one functionality, e.g. authentication-service, authorization-service, go-ride-allocation-service, etc.

  • Namespace(s), namespace are group belong to each services, one namespace can be used to represent a state of running services, e.g. development-box, staging, production, production-2, etc.

  • Configuration(s), configuration in our system are a set of key-value pair that are going to be used in running services.

Last updated