The key design aspects considered for MOSIP are
MOSIP on its own will not be able to meet the end-to-end requirements of a country. Devices and ABIS providers are key to process an individual's data and prove uniqueness. MOSIP should be able to integrate with devices and ABIS that conform to the standards to achieve the stated goals. MOSIP should also be able to cater to a diverse set of institutions wanting to authenticate an Individual against the data stored in MOSIP. So, key parameters are
- All public/external facing interfaces of MOSIP must be standards-based for interoperability
MOSIP should be flexible for countries to configure the base platform according to their specific requirements. Some of the examples of configurability are
- Country should be able to choose the features required. For example, it must be possible for a country to turn off Finger Print capture
- Country should be able to configure the attributes of an ID Object
- Country should be able to define the length of the UIN number
MOSIP should be flexible to extend functionality on top of the basic platform. Some of the examples of extensibility are
- A country should be able to introduce a new step in processing data
- Integrate MOSIP with other ID systems and include it as part of the MOSIP data processing flow
All components in MOSIP should be modular and their features exposed via interfaces such that the implementation behind the interface can be changed without affecting other modules. Some examples of modularity are
- UIN generator algorithm provided by the platform can be replaced by a country with their own implementation
- The default demographic deduplication algorithm provided by MOSIP can be changed to a different one without impacting the process flow
MOSIP will adopt the following Architecture patterns & principles to achieve the stated design considerations
- Services must be stateless to scale out horizontally
- Services must be idempotent
- Services must have well defined interfaces
This will help achieve modularity, better maintainability and scalability.
- Each processing step must be a stage
- Stages must be connected with event bus
- Process flow must be configured outside code
This will help achieve extensibility and scale out stages independently.
- Client must run on a desktop/laptop in offline mode also
- Client must integrate with devices in a secure manner